MPEG-4 Audio 把 AAC 做成了一套可伸缩的档位:LC 打底、HE v1 加 SBR 补高频、HE v2 再加 PS 造声道——码率越低,越依赖【造出来】而不是【传过去】。
8.5.2 讲 AAC 的诞生,这一节看它在 MPEG-4 里怎么被做成一套档位体系。
一、从【一种编码】到【一套档位】
AAC 起初是一个具体算法,到了 MPEG-4 里变成了一族可以叠加的档位: 每种档位都叫 AAC,但内部开的工具不一样; 解码器通常向上兼容——能解 HE 的一定能解 LC,反之不行; 于是【AAC】这个词在工程上必须问清楚是哪一档,否则码率对不上。 这一点和视频的 Profile(档次)是同一个思路(第 7.4.1 节的【标准与实际】一脉相承)。
二、四个主要档位
实际工作里会碰到的就是这四个: AAC-LC——Low Complexity,最通用的底档,立体声 128 kbps 左右; AAC-LD——Low Delay,低延迟档,用于实时通话(视频会议、语音); HE-AAC v1——LC + SBR(频带复制),立体声 64 kbps 上下; HE-AAC v2——v1 + PS(参量立体声),立体声 32 kbps 上下。 每一档都是在前一档上【加一层】——不是换一个算法。
三、SBR:高频是【造】出来的
SBR(Spectral Band Replication,频带复制)的想法很直接: 低频传输得最实在——因为它对听感最重要、也最难伪造; 高频不直接传,只传【怎么造】的参数——告诉解码器在什么位置、用多少能量复制出来; 人耳对高频的细节分辨率本来就低,复制出来的高频很难被听出破绽。 所以 64 kbps 的 HE-AAC,听感可以接近 128 kbps 的 LC。它省的不是数据,是【对感知无关紧要的数据】。
四、PS:两路声道也能【造】
HE-AAC v2 在 SBR 之上又叠了 PS(Parametric Stereo,参量立体声): 真正传输的只有一路单声道; 额外传一组很小的空间参数——左右声道的能量差与相位差; 解码器用单声道加参数,还原出两路立体声; 于是立体声的码率直接砍半,32 kbps 就能给出左右分开的听感。 代价是空间感变薄——但对移动端、网络电台这类场景,这笔账很划算。
五、这条路的尽头是什么
把 SBR 与 PS 的思路再往前推,就到了音频编码里最有意思的一个方向: 传的不是声音,而是【生成声音所需的参数】——从波形编码走到参量编码; 极端情况下可以做到极低码率,代价是音色失真、细节丢失; 今天语音通话里常见的编码,走的正是这条路; 所以评价音频编码不能只看【码率越低越好】,要问它把什么换掉了(第 7.3 节的感知冗余,在这里被用到了极致)。
六、动手 Demo:MPEG-4 音频的四个档位
MPEG-4 Audio 把 AAC 做成了一套可伸缩的档位。
rows = [("AAC-LC", "低复杂度", 128), ("AAC-LD", "低延迟", 96),
("HE-AAC v1", "加 SBR 频带复制", 64),
("HE-AAC v2", "再加 PS 参量立体声", 32)]
for name, key, kbps in rows:
print("%-10s %-18s %3d kbps 立体声" % (name, key, kbps))
实跑输出:
--------------------------------------------------------------------
MPEG-4 音频的四个档位
--------------------------------------------------------------------
MPEG-4 Audio 把 AAC 做成了一套可伸缩的档位。
档位 关键技术 立体声典型码率
--------------------------------------------------------
AAC-LC 低复杂度,最通用 128 kbps
AAC-LD 低延迟,用于通话 64~128 kbps
HE-AAC v1 AAC-LC + SBR 频带复制 64 kbps
HE-AAC v2 再加 PS 参量立体声 32 kbps
四档的关系是**层层叠加**:
**LC 打底 → HE v1 加 SBR(补高频)→ HE v2 再加 PS(用一路声道加参数造出两路)**。
**码率越低,越依赖【造出来】而不是【传过去】。**
这就是流媒体时代音频编码的整个趋势,也是 AAC 成为事实标准的原因。
四档的关系是层层叠加:LC 打底 → HE v1 加 SBR → HE v2 再加 PS。 码率越低,越依赖【造出来】而不是【传过去】。
30 秒实验
- 在 FFmpeg 里用
-c:a aac -b:a 32k压一段音乐,再压一份 128 kbps 的。 - 两份都听一遍,注意 32 kbps 那份的高频与空间感是怎么被换掉的。
常见误区
- 以为 AAC 只有一个规格。它是一族档位,LC 与 HE 的码率完全不同。
- 以为 SBR 是【补高频细节】。它是造高频,只传参数不传波形。
- 以为 PS 是把单声道复制两遍。它用空间参数造出左右差别,不是简单复制。
自测三问(点开对答案)
1. AAC 的四个主要档位是什么? —— AAC-LC、AAC-LD、HE-AAC v1、HE-AAC v2。 2. SBR 的做法是什么? —— 低频实传,高频只传复制参数,由解码器造出来。 3. PS 参量立体声省下了什么? —— 只传一路单声道加少量空间参数,立体声码率近乎砍半。- ☐ 下一节(8.5.4 AC-3音频编码)
相关笔记
- AC-3音频编码 — 影碟体系的那条线
- MPEG-2音频编码 — AAC 的起点
- 音频编码原理 — 感知编码的原理底座
- 音频编码 — 编码与压缩的区别
- 🎬 FFmpeg入门详解 · 索引