05.音频编码之AAC编码
05.音频编码之AAC编码
AAC
AAC 概述?
AAC:高级音频编码 (Advanced Audio Coding),基于 MPEG-2 的音频编码技术,目的是取代 MP3 格式。2000 年,MPEG-4 标准出现后,AAC 重新集成了其特性,为了区别于传统的 MPEG-2 AAC 又称为 MPEG-4 AAC。
由于 PCM 裸流过大,不便于储存与传输,于是就出现了针对于 PCM 裸流的压缩编码标准,包含 AAC,MP3,AC-3 等等(wiki audio file format);而 AAC 则是当前的主流。这里的 AAC 指的是一套编码标准(协议),而 faac 是一个开源的 AAC 编解码工具。
AAC 的音频文件格式
AAC 的音频文件格式有两种 ADIF
和 ADTS
。这两种格式主要区别:ADIF 只有一个文件头,ADTS 每个包前面有一个文件头。
ADIF
Audio Data Interchange Format
音频数据交换格式。这种格式的特征是可以确定的找到这个音频数据的开始,不需进行在音频数据流中间开始的解码,即它的解码必须在明确定义的开始处进行。故这种格式常用在磁盘文件中。编码格式如下:
 |
在 MPEG-2 AAC 中 ADIF 语法规则如下:
 |
ADTS
Audio Data Transport Stream
音频数据传输流。这种格式的特征是它是一个有同步字的比特流,解码可以在这个流中任何位置开始。也就是说 ADTS 的每一帧都有一个 header 和 aac 音频数据,这可以在网络传输的时候进行实时解码。
下图为 ADTS 的组成部分以及在MPEG-2 AAC 的语法结构:
 |
下图为 ADTS 的组成部分以及在MPEG-4 AAC 的语法结构:
 |
注:ES:全称 elementary stream,这里意为编码后的音频数据。
faac 开源库
本文由作者按照 CC BY 4.0 进行授权