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