我必须从视频文件中提取所有帧,然后将它们保存到文件中。
我尝试使用AVAssetImageGenerator
,但是它非常慢-每帧需要1s-3s(示例1280x720 MPEG4视频),而没有保存到文件处理中。
无论如何,它可以使速度更快吗?
OpenGL,GPU,(...)?
我将非常感谢您向我展示正确的方向。
最佳答案
AVAssetImageGenerator
是一个随机访问(查找)接口,查找需要时间,因此一种优化方法是使用AVAssetReader
,它将快速顺序地向您出售帧。您还可以选择以yuv格式工作,这将为您提供较小的帧(我认为),并且解码速度更快。
但是,这些原始帧非常大:1280px * 720px * 4字节/像素(如果在RGBA中),每个大约3.6MB。如果要保留它们,则需要进行一些相当严格的压缩(想到的是MPEG4 @ 720p :)。
那你想达到什么目的呢?
您确定要以108MB / s(30fps)或864MB / s(240fps)的速度填充用户磁盘吗?