跳到主要内容

AAC 格式(流媒体优化)

AAC(Advanced Audio Coding,高级音频编码)是一种有损压缩音频格式,诞生于1997年,由 Fraunhofer IIS、杜比实验室、索尼等公司联合开发,现为 MPEG-2/MPEG-4 标准的核心组成部分。其设计目标是替代 MP3,在相同比特率下提供更高音质,或在更低比特率下保持同等音质,是当今流媒体与移动设备的主流音频格式。

技术原理与核心特性

编码技术演进

AAC 在 MP3 基础上进行了多项技术革新:

  • MDCT(修正离散余弦变换):采用更长的时域信号块(1024点)与短块(128点)动态切换,减少频谱泄露,提升频域分辨率。
  • 心理声学模型优化:更精准的掩蔽效应计算,去除人耳不敏感的冗余信息。
  • 分块策略:支持可变块长(KBD 窗口),动态适配瞬态信号与稳态信号。
  • 多声道编码:支持最高48声道,支持声道耦合(如5.1环绕声的联合编码)。

文件结构与封装

可以使用 ADTS(Audio Data Transport Stream)面向流媒体的封装格式,含帧头(同步字、采样率、声道数等)和原始数据块。

// ADTS帧头结构示例(7字节)
typedef struct {
uint16_t syncword; // 同步字0xFFF
uint8_t protection_absent; // 是否含CRC校验
uint8_t profile; // 编码配置(LC/HE/HEv2)
uint8_t sampling_freq_idx; // 采样率索引(如44.1kHz=4)
uint8_t private_bit;
uint8_t channel_config; // 声道配置(单声道/立体声等)
uint16_t frame_length; // 帧长度
} ADTSHeader;

也可以使用 原始 AAC 流(Raw AAC) 无封装头,依赖外部元数据(如 MP4 容器中的 moov 原子)。

技术对比

下表对比了 AAC 和 MP3 音频格式的优势和劣势。

特性AACMP3
频域分辨率最高支持 20k Hz以上(采样率 48kHz)通常限制在 16kHz(采样率 44.1kHz)
压缩效率相同码率下音质提升约 30%低码率下易出现“金属感”失真
多声道支持原生支持 5.1/7.1 声道需通过扩展(如 MP3 Surround)
专利状态专利已部分过期(部分编码器免费)专利已全面过期

未来发展

尽管 AAC 仍是主流,但面临 Opus(低延迟/高鲁棒性)和 FLAC(无损压缩)的竞争。其技术瓶颈在于:

  1. 高频细节损失:有损压缩无法完全避免信息丢失。
  2. 实时性限制:复杂编码算法导致编码延迟较高(约50-100ms)。

学习建议

  1. 深入标准文档:研读 MPEG-4 Part 3(ISO/IEC 14496-3)了解编码细节。

  2. 动手实验:使用 FFmpeg 命令行工具进行 AAC 转码与参数调优:

    ffmpeg -i input.wav -c:a libfdk_aac -b:a 128k output.aac
  3. 扩展阅读:对比 AAC 与 Opus 的算法差异(如线性预测 vs. MDCT)。