🎬 第八章 音视频编解码技术与流程
📄 一句话概括

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 秒实验

  1. 在 FFmpeg 里用 -c:a aac -b:a 32k 压一段音乐,再压一份 128 kbps 的。
  2. 两份都听一遍,注意 32 kbps 那份的高频与空间感是怎么被换掉的。

常见误区

  1. 以为 AAC 只有一个规格。它是一族档位,LC 与 HE 的码率完全不同。
  2. 以为 SBR 是【补高频细节】。它是造高频,只传参数不传波形。
  3. 以为 PS 是把单声道复制两遍。它用空间参数造出左右差别,不是简单复制。
自测三问(点开对答案) 1. AAC 的四个主要档位是什么? —— AAC-LC、AAC-LD、HE-AAC v1、HE-AAC v2。 2. SBR 的做法是什么? —— 低频实传,高频只传复制参数,由解码器造出来。 3. PS 参量立体声省下了什么? —— 只传一路单声道加少量空间参数,立体声码率近乎砍半。

相关笔记