嗨,我需要从视频中提取帧使用ffmpeg..还有比这更快的方法吗:

ffmpeg -i file.mpg -r 1/1 $filename%03d.jpg

?


当前回答

我试过了。3600帧32秒。你的方法太慢了。你应该试试这个。

ffmpeg -i file.mpg -s 240x135 -vf fps=1 %d.jpg

其他回答

与@makeworld的回答相同,但也解决了这里提到的关于帧数不一致和需要垂直同步的问题,以及关于垂直同步的使用:

// reliably works for jpg output (and probably png too)
ffmpeg -i rgb.mov -vf setpts=N/FR/TB -vsync 0 ./images/%05d.jpg

// reliably works for png output only
ffmpeg -i rgb.mov -vsync 0 ./images/%05d.png

这比到目前为止所有其他命令都简单:

ffmpeg -i input.mp4 '%04d.png'

将04更改为您需要容纳所有帧的数字。确保在数字之前总是有一个0,这样输出帧名就会有零填充。

每分钟输出一张图像,命名为img001.jpg, img002.jpg, img003.jpg等。%03d指示每个输出图像的序号将使用3位数字进行格式化。

ffmpeg -i myvideo.avi -vf fps=1/60 img%03d.jpg

将fps=1/60更改为fps=1/30以每30秒捕获一张图像。类似地,如果你想每5秒捕捉一个图像,那么将fps=1/60更改为fps=1/5

来源:https://trac.ffmpeg.org/wiki/Create每X秒一个视频的缩略图

这对我很有效

Ffmpeg -i file.mp4 -vf fps= 1% d.jpg

我试过了。3600帧32秒。你的方法太慢了。你应该试试这个。

ffmpeg -i file.mpg -s 240x135 -vf fps=1 %d.jpg