我使用基本相同的格式将音频流转换为 3 种不同的设置。它们最终的大小完全相同。这是为什么?
ffmpeg -i "Likoonl-Q1-All.mp4" -c:v copy -c:a libmp3lame -q:a 1 -b:a 192k "Q1-All-192k.mp4"
ffmpeg -i "Likoonl-Q1-All.mp4" -c:v copy -c:a libmp3lame -q:a 1 -b:a 160k "Q1-All-160k.mp4"
ffmpeg -i "Likoonl-Q1-All.mp4" -c:v copy -c:a libmp3lame -q:a 1 -b:a 128k "Q1-All-128k.mp4"
答案1
因为您正在设置-q:a
LAME 的 VBR 设置。当您使用 时-q:a
,CBR 设置 ( -b:a
) 将不起作用。
如果你看看MP3 编码指南您可以从 FFmpeg wiki 中找到-q:a
其对应的平均比特率的可能值。
为了完整起见,这里是的相关部分libmp3lame.c
–qscale
是的长名称q
:
/* rate control */
if (avctx->flags & CODEC_FLAG_QSCALE) { // VBR
lame_set_VBR(s->gfp, vbr_default);
lame_set_VBR_quality(s->gfp, avctx->global_quality / (float)FF_QP2LAMBDA);
} else {
if (avctx->bit_rate) {
if (s->abr) { // ABR
lame_set_VBR(s->gfp, vbr_abr);
lame_set_VBR_mean_bitrate_kbps(s->gfp, avctx->bit_rate / 1000);
} else // CBR
lame_set_brate(s->gfp, avctx->bit_rate / 1000);
}
}