使用FFMPEG从视频中提取更快的缩略图/图像?

时间:2012-08-23 13:10:52

标签: android ffmpeg java-native-interface libavcodec libav

我正在使用此命令从视频中提取一系列图像,以将其表达为视频的可视时间范围。

ffmpeg -i inputfile.mp4 -r 1 -t 12 image-%d.jpeg

我的大多数视频都采用mp4格式。我能够成功提取图像,但提取时间太长。

有什么方法可以减少图像提取的时间吗?

编辑从MP4格式编码的15秒长视频中获取8张缩略图需要60秒,我在上执行此操作Galaxy Nexus(Android手机)有什么方法可以提高速度的操作,理想情况下我希望它低于 ~10secs

2 个答案:

答案 0 :(得分:4)

嗯,定义“慢”:)我刚刚做了这个,在标准机器上花了四秒钟。可能有办法加快速度,但ffmpeg必须解码MP4数据包结构(GOP),提取帧并存储JPG图像 - 四秒对我来说是合理的。我发现你的命令行几乎没有改进的余地:

ffmpeg -i inputfile.mp4 -r 1 -an -t 12 -s 512x288 -vsync 1 -threads 4 image-%d.jpeg

使用threads-s参数(这个参数定义目标图像大小 - 它不会加快进程,但如果您不想保持源图像大小,将为您节省额外的一步。)

此外,请确保您的ffmpeg版本与您的平台相匹配 - 速度存在很大差异。不幸的是,我不能在这里给你一般建议。对于您的场景,compile the ffmpeg sources yourself可能是个主意。

答案 1 :(得分:0)

https://stackoverflow.com/a/18539500/2563051在这里是戏剧:))

  

-ss参数需要在-i之前指定:

     

ffmpeg -ss 00:03:00 -i Underworld.Awakening.avi -frames:v 1 out1.jpg

     

此示例将在周围某处产生一个图像帧(out1.jpg)   从电影开始的第三分钟。输入将是   使用关键帧进行解析,这非常快。缺点是它   还将在某些关键帧(不一定位于)上完成搜索   在指定时间(00:03:00),因此搜索将不会那么准确   如预期的那样。