4

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

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

我的大部分视频都是 mp4 格式。我能够成功提取图像,但提取时间太长。

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

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

4

2 回答 2

4

嗯,定义“慢”:) 我只是这样做了,在标准机器上花了四秒钟。可能有一些方法可以加快速度,但 ffmpeg 必须解码 MP4 数据包结构 (GOP),提取帧并存储 JPG 图像 - 4 秒对我来说看起来很合理。我只是看到您的命令行几乎没有改进空间:

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

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

此外,请确保您有一个与您的平台相匹配的 ffmpeg 构建 - 那里的速度差异很大。不幸的是,我不能在这里给你一个一般性的建议。对于您的方案,自己编译 ffmpeg 源代码可能是一个想法。

于 2012-08-23T15:15:55.730 回答
1

这里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),所以搜索不会像预期的那么准确。

于 2019-07-17T04:47:05.933 回答