![使用 ffmpeg 从视频中提取特定帧时不匹配](https://linux22.com/image/1619540/%E4%BD%BF%E7%94%A8%20ffmpeg%20%E4%BB%8E%E8%A7%86%E9%A2%91%E4%B8%AD%E6%8F%90%E5%8F%96%E7%89%B9%E5%AE%9A%E5%B8%A7%E6%97%B6%E4%B8%8D%E5%8C%B9%E9%85%8D.png)
我使用 提取了视频中的所有帧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