我正在使用此命令从视频中提取一系列图像,以将其表达为视频的可视时间范围。
ffmpeg -i inputfile.mp4 -r 1 -t 12 image-%d.jpeg
我的大多数视频都采用mp4格式。我能够成功提取图像,但提取时间太长。
有什么方法可以减少图像提取的时间吗?
编辑:从MP4格式编码的15秒长视频中获取8张缩略图需要60秒,我在上执行此操作Galaxy Nexus(Android手机)有什么方法可以提高速度的操作,理想情况下我希望它低于 ~10secs 。
答案 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),因此搜索将不会那么准确 如预期的那样。