我想对视频播放(基于 AVPlayer)产生类似破碎的效果,它将过渡到另一个视频或图像。
是否可以在 iOS5/6 中对这种视频创建这种效果?
如果不是,另一种方法是在最后播放帧的静止图像上执行转换。最合适的框架是什么?核心形象?核心图形?OpenGL?
我想对视频播放(基于 AVPlayer)产生类似破碎的效果,它将过渡到另一个视频或图像。
是否可以在 iOS5/6 中对这种视频创建这种效果?
如果不是,另一种方法是在最后播放帧的静止图像上执行转换。最合适的框架是什么?核心形象?核心图形?OpenGL?
我认为在视频上放置 UIVIew 将是您最好的选择。然后,如果您确实需要在视图中绘制性能(因此,在视频上),您可以使用Quartz2d(甚至 OpenGL ES)。
使用 Quarz2d,您可以为您的粉碎动画制作一个包含所有帧的简单精灵表(游戏中使用的常用技术),然后循环遍历它们并将它们呈现在上述 UIView 上。如果性能不够好,您可以尝试使用 OpenGL ES :),但使用 Quarz2d 可以节省大量时间。
如果性能成为问题,您最终可以在视频顶部使用Cocos2D层,就像在这篇文章中一样,目标是在视频顶部渲染粒子发射器...... Cocos2d (OpenGL ES) 解决了性能问题。(好消息是 Cocos2d 可以轻松处理精灵表,所以我猜你可以立即实现它)
简而言之:根据你的过渡有多大,选择 OpenGL ES(如果你想要那种性能)或 Quarz2d,如果性能不是一个大问题。
干杯。
如果您只想在播放期间在不同视频之间进行过渡,您可以使用视图过渡在视频之间切换。我不确定你的动画应该是什么样子,但这里有一个例子。重要的是要及时预加载其他视频,并在开始过渡之前检查视频是否已准备好显示,否则看起来会不好看。
如果您想创建一些非常高级的效果,另一种选择是将视频文件渲染为 OpenGL ES 纹理并使用 GL 创建基本上您能想到的任何 3D 效果。我为此写了一个小 POC,如果您有兴趣,我可以分享。另请参阅此问题。
如果您想持久化到视频文件的过渡,您需要逐帧处理视频并从中创建新的视频流。这个比较复杂,但是AVFoundation API 可以做到。这是一个例子。
嗨,在 viewcontroller 的视图上添加 mpmoviecontroller 的视图,并放置一个图像视图并获取一些图像(用于 sutter 的图像序列)并播放这些图像的动画以显示快门效果。希望这个技巧对你有用:)
对于 uiimageview 动画,请查看此链接
在我所做的只是抓取视频最后一帧的图像并将其放在视频后面之前,我已经使用过这种技术。当视频停止播放时,从视图中移除视频播放器并在图像上执行破碎动画,这将揭示其背后的内容