用FFmpeg修改音频码率
🎧 音频码率对听感的影响

音频码率直接影响听感和文件大小,不同场景有不同需求:

  • 语音内容:播客、有声书、语音笔记等说话类内容,64~128kbps已足够清晰。人声的频谱范围较窄,低码率即可保留语音的完整可懂度。
  • 音乐欣赏:普通音乐聆听建议192~256kbps(AAC)或256~320kbps(MP3)。在此码率下,绝大多数人耳无法区分与无损音源的差异。
  • 高品质存档:音乐制作、音频归档、发烧友收藏应选择320kbps(有损格式上限)或FLAC/ALAC无损格式。无损格式保留完整音频信息,可反复编码而不累积损失。
  • 流媒体传输:根据用户网络带宽自适应选择码率。在线音乐平台通常在128~320kbps之间动态调整,确保播放流畅的同时维持可接受的音质。

FFmpeg音频码率详解

音频码率(Bitrate)指每秒钟传输的音频数据量,单位通常为 kbps(千比特每秒)。码率越高,音频细节越丰富,文件体积也越大。FFmpeg 支持三种码率控制模式:

  • CBR(固定码率):使用 -b:a 128k 等参数指定恒定码率,整个音频文件从头到尾保持相同的数据速率。优点:文件大小可以精确预测;缺点:简单段落浪费空间,复杂段落可能质量不足。适用于流媒体传输等需要恒定带宽的场景。
  • VBR(可变码率):根据音频内容的复杂程度动态分配码率。对于 MP3 编码(libmp3lame)使用 -q:a 参数,取值范围 0~9,0 为最高质量(约 245~260 kbps),9 为最低质量(约 65~85 kbps),通常 -q:a 2 可在文件大小与音质间取得良好平衡(约 170~210 kbps)。对于 AAC 编码(libfdk_aac)使用 -vbr 参数,取值范围 1~5,5 为最高质量。VBR 效率更高,同等文件大小下通常能获得比 CBR 更好的音质。
  • ABR(平均码率):VBR 的一种特殊形式,使用 -b:a 参数配合部分编码器实现,目标是让整段音频的平均码率接近设定值,同时允许局部波动。兼顾文件大小可预测性与编码效率。

音频码率与听感质量的参考关系:128 kbps 为一般可接受水平,MP3 在此码率下高频细节有所损失;192 kbps 为良好质量,绝大多数人难以区分与原始音源的差异;320 kbps 为 MP3 格式的最高码率,音频细节保留非常完整,接近 CD 音质。对于无损格式(如 FLAC),码率通常在 700~1000 kbps 范围。

广告
{{v.name}}
固定码率(CBR)。使用 -b:a (bitrate:audio) 参数可以设置一个固定的目标音频码率,代码如下
$ ffmpeg -i input.mp3 -b:a 128k output.mp3
可变码率(VBR)。对于 MP3 编码(如 libmp3lame),使用 -q:a 参数,代码如下
$ ffmpeg -i input.wav -c:a libmp3lame -q:a 2 output.mp3
可变码率(VBR)。对于 AAC 编码(如 libfdk_aac),使用 -vbr 参数,代码如下
$ ffmpeg -i input.wav -c:a libfdk_aac -vbr 3 output.m4a
平均码率(ABR)。ABR 是 VBR 的一种特殊形式,它设定一个目标平均码率。
使用 AAC 编码器,并将音频的平均码率设置为 192 kbps,代码如下
$ ffmpeg -i input.mp3 -c:a aac -b:a 192k output.m4a
调整音频码率时,还可以指定音频编码器 (-c:a),代码如下
$ ffmpeg -i input.wav -c:a libmp3lame -b:a 192k output.mp3
调整音频码率时,还可以调整采样率 (-ar),代码如下
$ ffmpeg -i input.mp3 -ar 44100 -b:a 128k output.mp3
调整音频码率时,还可以调整声道数 (-ac),代码如下
$ ffmpeg -i input.mp3 -ac 1 -b:a 64k output_mono.mp3
友链