iOS从视频中提取所有帧

iOS从视频中提取所有帧,ios,objective-c,video,Ios,Objective C,Video,我必须从视频文件中提取所有帧,然后将它们保存到文件中。 我尝试使用AVAssetImageGenerator,但速度非常慢-每帧需要1s到3s的时间(示例1280x720mpeg4视频),而不保存到文件处理 有没有办法让它快得多? OpenGL,GPU,(…) 非常感谢您为我指明了正确的方向。AVAssetImageGenerator是一个随机访问(搜索)界面,搜索需要时间,因此一种优化方法是使用avassetrader,它将快速、连续地向您出售帧。您还可以选择使用yuv格式,这将使您获得更小的

我必须从视频文件中提取所有帧,然后将它们保存到文件中。 我尝试使用
AVAssetImageGenerator
,但速度非常慢-每帧需要1s到3s的时间(示例1280x720mpeg4视频),而不保存到文件处理

有没有办法让它快得多? OpenGL,GPU,(…)


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

AVAssetImageGenerator
是一个随机访问(搜索)界面,搜索需要时间,因此一种优化方法是使用
avassetrader
,它将快速、连续地向您出售帧。您还可以选择使用yuv格式,这将使您获得更小的帧(我认为)更快的解码速度

然而,这些原始帧是巨大的:1280px*720px*4字节/像素(如果使用RGBA),每个约为3.6MB。如果你想把它们全部保存下来,你需要进行一些非常严重的压缩(我想到的是MPEG4@720p:)

那么你想达到什么目的呢


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

如果要在ios设备上执行此操作,我相信它会消耗更多资源。从gif文件开始,尝试将其转换为单个帧,然后选择更高的格式。因此,在基本场景中,我希望保存视频,但在从原始帧中删除一些帧后(无任何过滤器、单帧编辑等)。确定,在这种情况下,您应该通过
AVAssetReader
读取帧,并使用
AVAssetWriter
有条件地将其中一些帧写入另一帧。