本节摘要:音频编码同样是有损与无损两派。本节讲清 AAC、MP3、Opus 三种有损编码与 FLAC 等无损编码的定位,给出各场景的选型建议与 ffmpeg 命令,并解释「听感差异为什么没体积差异大」。
阅读完本节,你应当能够:
有人给视频配音轨,选了 MP3 格式。播放倒是没问题,但 MP3 在低码率下的高频损失明显,而且很多容器对 MP3 音轨的支持并不理想。他跑来问「为什么听起来闷闷的」——答案就在编码选型:MP3 是 1993 年的老将,在它之后,AAC 和 Opus 在「同样码率下保留更多细节」上已经走得很远。
音频编码和视频编码遵循同一个逻辑:去掉人耳听不见的内容。区别在于音频的「冗余」来自心理声学——人类对某些频率不敏感、对某些掩蔽效应无感,有损编码正是钻这些空子。所以关键不在「损不损」,而在「损在哪、损得值不值」。
| 编码 | 类型 | 典型码率 | 强项 | 弱点 |
|---|---|---|---|---|
| MP3 | 有损 | 128–320 kbps | 兼容性极广 | 低码率高频损失明显 |
| AAC | 有损 | 96–320 kbps | 同样码率细节优于 MP3 | 老设备兼容略差于 MP3 |
| Opus | 有损 | 6–510 kbps | 极低延迟 + 可变码率范围大 | 硬件支持不如 AAC |
| FLAC | 无损 | 常 700–1000 kbps | 比特级还原 | 体积大 |
有损编码器会先分析这段声音里哪些成分人耳「不敏感」,比如一个响亮的鼓声会把同时出现的轻微背景音「掩蔽」掉,那么背景音的细节就可以少存或丢。码率越低,丢得越狠。这就是为什么同样 128 kbps,AAC 和 Opus 听感通常优于 MP3——它们的掩蔽模型更精细。
无损编码(FLAC、ALAC)不丢任何信息,代价是体积大。它唯一的适用场景是需要反复编辑或长期归档:每次有损转码都会叠加损失,从无损源起转就不会「越转越差」。存「母带」用无损,分发用有损,是最标准的资产链路。
# 音轨从 AAC 转成 MP3,192 kbps ffmpeg -i input.mp4 -vn -c:a libmp3lame -b:a 192k audio.mp3 # 转成 Opus,适合低延迟场景 ffmpeg -i input.mp4 -vn -c:a libopus -b:a 128k audio.opus
-vn 表示不要视频流,-b:a 是音频码率。注意 Opus 需要 .opus 或 .ogg 容器,塞进 MP4 会失败。
# 48kHz 立体声 → 44.1kHz 单声道(老设备/播客常见) ffmpeg -i input.mp4 -vn -c:a libmp3lame -ar 44100 -ac 1 podcast.mp3
-ar 改采样率,-ac 改声道数。音频处理里「先想清楚目标格式再动手」尤其重要——采样率错了就是整体变调。
# 无损存档 ffmpeg -i input.m4a -c:a flac archive.flac

选音频编码先看场景:点播分发用 AAC,实时低延迟用 Opus,兼容兜底用 MP3,归档二次编辑用无损。-b:a、-ar、-ac 三个参数组合,能覆盖绝大多数音频转码需求。
⚠️ 常见坑:Opus 塞不进 MP4;AAC 编码器在 ffmpeg 里有
aac(内置)和libfdk_aac(外部,质量更好但多数发行版没编入)两个名,-c:a aac写内置版最通用;FLAC 容器也是 flac,别跟编码器名混淆。
💡 关键直觉:音频「听起来差不多」恰恰说明有损编码的心理学模型是有效的。别再纠结 128 和 192 的听感差异,把注意力放在「有没有明显失真」和「体积预算」上,更划算。
音频码率有一个简单的换算公式:码率约等于采样率 × 位深 × 声道数 × 压缩系数。以 48kHz、16bit、双声道为例,无损时的原始码率是 48×16×2 = 1536 kbps;AAC 在 128 kbps 下工作,压缩系数大约是 1/12。这个直觉能帮你快速判断参数是否合理——如果有人给了你一份「48kHz 立体声 64kbps」的配置,你立刻就能算出它的压缩比已经超过 24 倍,音质大概率会明显受损。
工程上更常用的判断是「码率预算」:1 小时的视频音频,用 128 kbps 大约是 57.6 MB,用 256 kbps 是 115 MB。音频在整个文件里的体积占比通常不到一成,为了省这一点体积把码率压得太低,往往是得不偿失的。记住这个比例,做转码方案时就不会在音频码率上过度纠结。
音频编码的选型,最终要靠耳朵确认,而不是只看参数表。FFmpeg 可以方便地做「同源不同码率」的试听对比:
# 同一段音频压出三档码率,用 ffplay 连播对比 ffmpeg -i music.wav -c:a libmp3lame -b:a 128k m128.mp3 ffmpeg -i music.wav -c:a libmp3lame -b:a 192k m192.mp3 ffmpeg -i music.wav -c:a libmp3lame -b:a 320k m320.mp3 ffplay -autoexit m128.mp3 ffplay -autoexit m192.mp3 ffplay -autoexit m320.mp3
连听三档,重点注意高频细节(镲片声、空气感)和低码率下的「金属味」。大多数人会发现 128k 和 192k 的差距远比想象中小,而 128k 以下的差距才开始明显。这背后的道理是:现代有损编码的心理声学模型很成熟,码率不是越高越「值得」,而是「够了就行」——多花的码率买到的听感提升往往极其有限。
这个练习也适合 AAC 和 Opus:如果你需要为直播选音频格式,直接拿同一段语音压成 AAC 和 Opus 各一档,用耳机听辨,再结合延迟指标做决定。参数表给你方向,耳朵给你结论。
下一节是编码参数的临门一脚——CRF、preset、码率到底怎么组合。