ffmpeg:使用 -vcodec mjpeg 而不是 -vcodec copy 捕获时帧率低

ffmpeg: Low framerate when capturing with -vcodec mjpeg but not with -vcodec copy

我正在尝试从网络摄像头捕捉视频,我发现当我使用 -vcodec copy 选项时,效果非常好(比我试过的任何其他软件都要好得多)。但是,我希望我的文件小一点,似乎我每次压缩视频的尝试都会导致视频非常跳跃。例如,如果我将输出 vcodec 切换为 mjpeg,它会从报告 15 fps 变为报告 3 到 4 fps。难道我做错了什么??这是 -vcodec copy:

的调用
ffmpeg -y -f dshow -vcodec mjpeg -s 1184x656 -framerate 25 -i video="HD 720P Webcam" -vcodec copy test.avi

-- 这让我得到 15 fps。但是,如果我更改为 mjpeg,我只能得到 3-4 fps:

ffmpeg -y -f dshow -vcodec mjpeg -s 1184x656 -framerate 25 -i video="HD 720P Webcam" -vcodec mjpeg test.avi

-framerate 25-r 25 放在 test.avi 之前的实验性尝试也无济于事。我在尝试 mpeg4libx264 时也没有得到任何更流畅的视频。只有 copy 选项能给我流畅的视频(顺便说一下,我正在拍摄我弹钢琴的手,所以视频中有很多快速动作)。

求助!!!!还有谢谢...

我不明白为什么帧率会下降这么多,但你可以尝试一种 2 遍方法,首先使用 -vcodec copy 记录它(如你在问题中粘贴的那样)

ffmpeg -y -f dshow -vcodec mjpeg -s 1184x656 -framerate 25 -i video="HD 720P Webcam" -vcodec copy test.avi

完成后将其转码为 mjpeg(类似这样):

ffmpeg -i test.avi -vcodec mjpeg test.mjpeg

注意:我还没有实际测试过上述任何命令行。

听起来您的网络摄像头正在输出可变帧率流。在您 copy 捕获的文件之一上尝试以下操作。

ffmpeg -i test.avi -vcodec libx264 -r 30 test.mp4

(您应该避免捕捉到 AVI,而是使用 MKV)