如何在FFmpeg中使用受限/封顶比特率模式

如何在FFmpeg中使用受限/封顶比特率模式,ffmpeg,Ffmpeg,我使用FFmpeg和以下命令转换视频: ffmpeg -i input -c:v libx264 -x264-params opencl=true -preset veryslow -crf 19 -maxrate 7000k -profile:v high -level 4.0 -bf 2 -coder 1 -pix_fmt yuv420p -c:a copy output.mkv 请注意,我将-maxrate 7000k设置为视频的最大比特率。不过,最终结果视频的最大比特率为38.0 Mb

我使用FFmpeg和以下命令转换视频:

ffmpeg -i input -c:v libx264 -x264-params opencl=true -preset veryslow -crf 19 -maxrate 7000k -profile:v high -level 4.0 -bf 2 -coder 1 -pix_fmt yuv420p -c:a copy output.mkv
请注意,我将
-maxrate 7000k
设置为视频的最大比特率。不过,最终结果视频的最大比特率为38.0 Mb/s

如果有帮助的话,是之前(左边)和之后(右边)的结果


我是否正确使用了
maxrate
?视频不应该限制在7000 kb/s吗?

最大速率通过bufsize选项强制执行。没有布袋,就没有强制执行。看

bufsize相对于maxrate的值越小,实际峰值比特率就越接近maxrate,但预计会出现瞬时质量下降(如果maxrate对于所需质量来说太低)

-maxrate 7000k -bufsize 7000k

谢谢这可能是正确的答案,我无从得知。我读了你的评论,但我没有真正理解第二段。我也读了你发布的另一个链接,但我觉得在这一点上我缺乏关于缓冲区到底是什么的基本知识,以及如何将其与最大速率相结合。我知道另一篇文章很详细,但我还是不太明白。如果你知道一些我能读到的东西,请告诉我。或者,如果你愿意,你可以试着详细解释一下答案。如果没有设置bufsize,maxrate就没有效果。bufsize告诉编码器播放器缓冲区的大小。一旦编码器知道了这一点,它就可以控制缓冲区的最大填充速率。缓冲区越小,对峰值比特率的控制就越严格。