【问题标题】:iOS Extract all frames from a videoiOS 从视频中提取所有帧
【发布时间】:2015-10-14 12:04:43
【问题描述】:

我必须从视频文件中提取所有帧,然后将它们保存到文件中。 我尝试使用AVAssetImageGenerator,但它非常慢 - 每帧需要 1s - 3s(样本 1280x720 MPEG4 视频)而不保存到文件进程。

有没有办法让它更快? OpenGL、GPU、(...)?

我将非常感谢您为我指明正确的方向。

【问题讨论】:

  • 如果您要在 ios 设备上执行此操作,我相信它会消耗更多资源。从 gif 文件开始,尝试将其转换为单独的帧,然后再使用更高的格式。

标签: ios objective-c video


【解决方案1】:

AVAssetImageGenerator 是一个随机访问(搜索)接口,搜索需要时间,所以一个优化可能是使用AVAssetReader,它会快速顺序地向您出售帧。您还可以选择以 yuv 格式工作,这将为您提供更小的帧(我认为)更快的解码。

但是,这些原始帧非常庞大:1280 像素 * 720 像素 * 4 字节/像素(如果采用 RGBA 格式),每个大约 3.6MB。如果您想保留所有内容,您将需要进行一些非常严格的压缩(想到 MPEG4 @ 720p :)。

那么你想达到什么目的?

您确定要以 108MB/s(30fps)或 864MB/s(240fps)的速度填满用户的磁盘吗?

【讨论】:

  • 所以在基本情况下,我想保存视频,但是在从原始视频中删除了一些帧之后(没有任何过滤器,单帧编辑等)。
  • 好的,在这种情况下,您应该通过AVAssetReader 读取帧,并通过AVAssetWriter 有条件地将其中一些帧写入另一个帧。
猜你喜欢
  • 2014-05-06
  • 1970-01-01
  • 2013-11-14
  • 2014-02-27
  • 2023-03-30
  • 1970-01-01
  • 1970-01-01
  • 2018-05-27
  • 2017-11-01
相关资源
最近更新 更多