在 FFmpeg 中使用 CRF 并使用 x264 设置最大比特率

her*_*mit 6 ffmpeg x264 video-encoding

我正在尝试将视频转码为 H.264/MP4。我正在使用该crf = 20选项,但根据要求,我还想将最大比特率限制为 3 MBit/s。

我试图通过x264opts这样的方式来欺骗它

-x264opts crf=20:vbv-bufsize=14000:vbv-maxrate=3000:keyint=40
Run Code Online (Sandbox Code Playgroud)

这是正确的方法吗?这可以完成吗?还是我只能使用恒定比特率而不使用 CRF?

evi*_*oup 7

使用-maxrate-bufsize强制 VBV(视频缓冲区验证器)限制输出比特率:

ffmpeg -i input.file -c:v libx264 -crf 20 -maxrate 3M -bufsize 6M output.mp4
Run Code Online (Sandbox Code Playgroud)

3M = 3 mbit/s,您也可以使用 3000k(对于 3000 kbit/s)。根据您期望客户端能够缓冲的大小设置缓冲区大小。

有关将 x264 与 FFmpeg 结合使用的更多信息,请参阅本指南(尽管它没有提及 VBV 编码)。