从iPhone库加载视频,修改帧并实时播放

时间:2012-08-20 20:56:20

标签: ios xcode opencv avfoundation core-video

我正在寻找开发能够处理视频的iPhone / iPad应用程序的提示(为了简单起见,我们只考虑存储在设备上的本地文件)并实时播放。例如,您可以选择任何电影并选择“旧电影”过滤器,并希望它像旧灯泡电视一样。

为了使这个想法成真,我需要实现两个关键特征:

1)从电影文件中抓取帧和音频流并访问单独的帧(我对BGRA中的原始像素缓冲区或至少YUV颜色空间感兴趣)。

2)以某种方式显示已处理的帧。我知道可以将处理过的帧渲染到OpenGL纹理,但我希望有更强大的组件和播放控件。是否有任何类型的媒体播放器支持播放自定义图像和音频缓冲区?

处理功能完成且速度快(少于一帧的持续时间)。

我不是要求现成的解决方案,但欢迎任何提示!

答案

抓帧 。 看起来获取视频和音频帧的唯一方法是使用AVAssetReader类。虽然不建议用于实时抓取,但它可以完成这项任务。在我对iPad2的测试中,抓取单帧需要大约7-8毫秒。寻找视频非常棘手。也许有人可以指出更有效的解决方案?

视频播放。我用自定义视图和GLES完成了这个操作,以渲染一个矩形纹理,里面有一个视频帧。据我所知,这是绘制位图的最快方法。

问题

  • 需要手动播放声音样本
  • AVAssetReader抓取应与电影帧速率同步。否则电影会变得太快或太慢。
  • AVAssetReader仅允许连续帧访问。你不能向前和向后寻求。只有建议的解决方案是删除旧阅读器并创建一个带有修剪时间范围的新功能。

2 个答案:

答案 0 :(得分:3)

答案 1 :(得分:0)

您可以使用AVPlayer + AVPlayerItem,它为您提供了在显示图像上应用滤镜的机会。