ffmpeg - 定义图像的精确时间距离

ffmpeg - 定义图像的精确时间距离

我有一部时长 3 分钟、每秒 29 幅图像的电影。我想将其按每秒 1 幅图像分割成图像。

我使用这个命令:

ffmpeg.exe -i FILE0014.MOV -r 2 -f image2 -vcodec mjpeg -qscale 2 "%%05d.jpg"

但这会生成超过 300 张图像!

日志文件显示:

帧= 3 fps=0.0 q=0.0 大小=N/A 时间=00:00:01.00 比特率=N/A 重复=0 丢弃=13
帧= 4 fps=3.9 q=0.0 大小=N/A 时间=00:00:01.50 比特率=N/A 重复=0 丢弃=33
帧= 5 fps=3.2 q=0.0 大小=N/A 时间=00:00:02.00 比特率=N/A 重复=0 丢弃=51
帧= 7 fps=3.4 q=0.0 大小=N/A 时间=00:00:03.00 比特率=N/A 重复=0 丢弃=67
帧= 8 fps=3.1 q=0.0 大小=N/A 时间=00:00:03.50 比特率=N/A 重复=0 丢弃=84
帧= 9 fps=2.9 q=0.0 大小=N/A 时间=00:00:04.00 比特率=N/A 重复=0 丢弃=102
帧= 10 fps=2.8 q=0.0 大小=N/A 时间=00:00:04.50 比特率=N/A 重复=0 丢弃=120
帧= 12 fps=2.9 q=0.0 大小=N/A 时间=00:00:05.50 比特率=N/A 重复=0 丢弃=137

时间不是准确的1秒。

有人能帮我发出正确的命令吗?

答案1

尝试:

ffmpeg -i file0014.mov -vf fps=1 -q:v 2 %03d.jpg

具体来说:

-vf fps=1会以 1 秒为间隔选择一个帧

-q:v 2(的简写qscale)是 jpeg 图像的质量等级。1 表示最高品质,31 表示最低品质。

相关内容