我必须从视频文件中提取所有帧,然后将它们保存到文件中。
我尝试使用AVAssetImageGenerator
,但它非常慢 - 每帧需要1s - 3s(样本1280x720 MPEG4视频),而不保存到文件进程。
是否还有更快的速度? OpenGL,GPU,(...)?
我将非常感谢向我展示正确的方向。
答案 0 :(得分:3)
AVAssetImageGenerator
是一个随机访问(搜索)界面,并且搜索需要时间,因此一个优化可能是使用AVAssetReader
,它将快速和顺序地为您提供框架。您也可以选择以yuv格式工作,这将为您提供更小的帧(我认为)更快的解码。
然而,那些原始帧是巨大的:是1280px * 720px * 4字节/像素(如果在RGBA中),每个大约3.6MB。如果你想保留它们,你将需要一些非常严重的压缩(想到MPEG4 @ 720p)。
那么你想要实现什么目标?
您确定要以108MB / s(30fps)或864MB / s(240fps)的速度填充用户的磁盘吗?