如何使用 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
。
我正在尝试以特定比特率 (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
。