对视频造成影响

时间:2012-10-08 19:48:45

标签: iphone ios transition core-image

我希望对视频播放(基于AVPlayer)产生类似破碎的效果,该效果将转换为另一个视频或图像。

是否可以在iOS5 / 6上针对此类视频创建此效果?
如果不是,则替代方案是在最后播放的帧的静止图像上执行转换。什么是最合适的框架? CoreImage? CoreGraphics中? OpenGL的?

4 个答案:

答案 0 :(得分:2)

我认为在视频上放置一个UIVIew将是你最好的选择。然后,如果您真的需要在视图中绘制表现(因此,通过视频),您可以使用Quartz2d(甚至是OpenGL ES)。

使用Quarz2d,您可以构建一个简单的精灵表(游戏中使用的常用技术),包含粉碎动画的所有帧,然后循环浏览它们并将它们呈现在前面提到的UIView上。如果性能不够好,您可以尝试使用OpenGL ES :),但使用Quarz2d可以节省大量时间。

如果性能问题,您最终可能会在视频顶部使用Cocos2D图层,就像在此post中一样,目标是将粒子发射器渲染到视频... Cocos2d(OpenGL ES)解决了性能问题。 (好的是Cocos2d可以轻松处理精灵表,所以我猜你可以立刻实现它)

简而言之:根据转换的大小,选择OpenGL ES(如果您需要该性能)或Quarz2d,如果性能不是一个大问题。

干杯。

答案 1 :(得分:1)

如果您只想在播放期间在不同视频之间进行转换,则可以使用视图转换在视频之间切换。我不确定你的动画应该是什么样子,但here就是一个例子。在开始转换之前及时预加载其他视频并检查视频是否准备好显示非常重要,否则它看起来不会很好。

如果你想创建一些非常高级的效果,另一种选择是将视频文件渲染为OpenGL ES纹理,并使用GL创建你能想到的任何3D效果。我已经写了一个小POC,如果你有兴趣我可以分享。另请参阅this question

如果要保持转换为视频文件,则需要逐帧处理视频并从中创建新的视频流。这更复杂,但AVFoundation API可以做到这一点。 Here就是一个例子。

答案 2 :(得分:1)

我使用这种技术之前我所做的就是抓住视频最后一帧的图像,把它放在视频后面。当视频停止播放时,从视图中删除视频播放器并在图像上执行碎片动画,以显示其背后的内容

答案 3 :(得分:1)

您可以在viewcontroller的视图中添加mpmoviecontroller的视图,并在放置图像视图并获取一些图像(sutter的图像序列)并播放这些图像的动画以显示快门效果。希望这个技巧对你有用:)

对于uiimageview animaton,请查看此链接

UIImageView Animation