【问题标题】:Shatter effect for video视频的破碎效果
【发布时间】:2012-09-29 02:26:24
【问题描述】:

我想对正在播放的视频(基于 AVPlayer)产生类似破碎的效果,该效果将过渡到另一个视频或图像。

在iOS5/6中是否可以在这种视频上创建这种效果?
如果不是,另一种方法是在最后播放帧的静止图像上执行转换。最合适的框架是什么?核心形象?核心图形? OpenGL?

【问题讨论】:

    标签: iphone ios transition core-image


    【解决方案1】:

    我认为在视频上放置 UIVIew 将是您最好的选择。然后,如果您确实需要在视图中(因此,在视频上)绘图的性能,您可以使用 Quartz2d(甚至是 OpenGL ES)。

    使用 Quarz2d,您可以为破碎动画的所有帧组成一个简单的 sprite-sheet(游戏中使用的常用技术),然后循环遍历它们并将它们呈现在上述 UIView 上。如果性能不够好,您可以尝试使用 OpenGL ES :),但使用 Quarz2d 可以节省大量时间。

    如果性能成为问题,您最终可以在视频顶部使用 Cocos2D 层,例如在此 post 中,目标是在视频顶部渲染粒子发射器... Cocos2d ( OpenGL ES ) 解决了性能问题。 (好处是 Cocos2d 可以轻松处理精灵表,所以我猜你可以立即实现)

    简而言之:根据您的过渡规模,选择 OpenGL ES(如果您想要该性能)或 Quarz2d(如果性能不是大问题)。

    干杯。

    【讨论】:

      【解决方案2】:

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

      对于 uiimageview 动画,请查看此链接

      UIImageView Animation

      【讨论】:

      • 根据用户想要在序列中显示的图像数量,这可能会真正损害在 AVPlayer 中播放的视频的性能(滞后/断断续续)。假设它至少每秒 24 帧,我真的认为这个解决方案在这种情况下不会削减它。
      【解决方案3】:

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

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

      如果您想将过渡持续到视频文件,您需要逐帧处理视频并从中创建新的视频流。这更复杂,但AVFoundation API 可以做到。 Here 就是一个例子。

      【讨论】:

        【解决方案4】:

        在我所做的只是抓取视频最后一帧的图像并将其放在视频后面之前,我已经使用了这种技术。当视频停止播放时,从视图中移除视频播放器并在图像上执行粉碎动画,这将揭示其背后的内容

        【讨论】:

          猜你喜欢
          • 2018-03-05
          • 1970-01-01
          • 1970-01-01
          • 2015-11-10
          • 1970-01-01
          • 2013-10-17
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多