使用 ffmpeg 从视频中提取特定帧时不匹配

使用 ffmpeg 从视频中提取特定帧时不匹配

我使用 提取了视频中的所有帧ffmpeg -i video.mp4 test_3/0%d.jpg

然后我尝试使用提取特定帧ffmpeg -i video.mp4 -vframes 1 -vf "fps=24,select=eq(n\,221)" x.jpg

但是我得到的帧与第一个命令中提取的帧不同。

我使用了与输出信息中第一个命令中打印的 ffmpeg 相同的 fps:

Output #0, image2, to 'x.jpg':
  Metadata:
    Stream #0:0(und): Video: mjpeg, yuvj420p(pc), 1920x1080, q=2-31, 200 kb/s, 24 fps, 24 tbn, 24 tbc (default)

为什么帧不匹配?如何提取与第一个命令相同的特定帧?

答案1

image2 复用器是一个恒定帧速率复用器,因此如果您的源是可变帧速率,ffmpeg 将复制帧。为确保帧和图像之间 1:1 对应,请设置-vsync 0

ffmpeg -i video.mp4 -vsync 0 test_3/0%d.jpg

然后提取特定的帧,

ffmpeg -i video.mp4 -vframes 1 -vf "select=eq(n\,221)" -vsync 0 x.jpg

相关内容