为什么我的 MP3 文件大小相同,即使我使用 ffmpeg 更改了比特率?

Arl*_*ler 27 audio mp3 ffmpeg lame

我使用基本相同的格式将音频流转换为 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"
Run Code Online (Sandbox Code Playgroud)

slh*_*hck 52

因为您设置的-q:a是 LAME 的 VBR 设置。使用 时-q:a,CBR 设置 ( -b:a) 将不起作用。

如果您查看FFmpeg wiki 中的MP3 编码指南,您将找到-q:a对应的平均比特率的可能值。

为完整起见,这里的相关部分是libmp3lame.cqscale的长名称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);
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 4分钟找到源头。+1 (28认同)