如何使用 ffmpeg 以特定比特率保存视频?

how do I save the videos in an specific bitrate using ffmpeg?

我正在尝试以特定比特率 (8000k) 保存一些视频,为此,我使用了以下代码:

ffmpeg  -i  input_1080p60  -c:v  libx264 -pix_fmt yuv420p  -b:v 8000K -bufsize 8000K -minrate 8000K -maxrate 8000K -x264opts keyint=120:min-keyint=120 -preset veryfast -profile:v high out_1080p.264

但保存视频后,我发现每个视频都有不同的比特率,除了 8000k(例如 5000k、6000k、7500k 等)。但我定义了 minrate 8000k。你知道问题是什么吗?我怎样才能强制上面的代码具有特定的比特率?谢谢。

这就是 2-pass 编码的用途。参见 FFmpeg Wiki

二次编码背后的想法是,通过 运行 FFmpeg 两次,它可以首先分析视频以确定如何最好地分配比特以满足特定比特率,然后第二次进行实际编码。

所以你的命令应该这样修改:

ffmpeg -i  input_1080p60 \
  -pass 1 \
  -c:v  libx264 -pix_fmt yuv420p -b:v 8000K -bufsize 8000K \
  -x264opts keyint=120:min-keyint=120 \
  -preset veryfast -profile:v high /dev/null

ffmpeg -i input_1080p60 \
  -pass 2 \
  -c:v  libx264 -pix_fmt yuv420p -b:v 8000K -bufsize 8000K \
  -x264opts keyint=120:min-keyint=120 \
  -preset veryfast -profile:v high out_1080p.264

如果您在 Windows,请使用 NUL 而不是 /dev/null