AAC是高级音频编码(Advanced Audio Coding)的缩写,出现于1997年,最初是基于MPEG-2的音频编码技术,目的是取代MP3格式。2000年,MPEG-4标准出台,AAC从新集成了其它技术(PS,SBR),为区别于传统的MPEG-2 AAC,故含有SBR或PS特性的AAC又称为MPEG-4 AAC。算法
AAC是新一代的音频有损压缩技术,它经过一些附加的编码技术(好比PS,SBR等),衍生出了LC-AAC,HE-AAC,HE-AACv2三种主要的编码。其中LC-AAC就是比较传统的AAC,相对而言,主要用于中高码率(>=80Kbps),HE-AAC(至关于AAC+SBR)主要用于中低码(<=80Kbps),而新近推出的HE-AACv2(至关于AAC+SBR+PS)主要用于低码率(<=48Kbps)。事实上大部分编码器设成<=48Kbps自动启用PS技术,而>48Kbps就不加PS,就至关于普通的HE-AAC。优化
AAC共有9种规格,以适应不一样的场合的须要:网站
MPEG-2 AAC LC 低复杂度规格(Low Complexity) 注:比较简单,没有增益控制,但提升了编码效率,在中等码率的编码效率以及音质方面,都能找到平衡点编码
MPEG-2 AAC Main 主规格.net
MPEG-2 AAC SSR 可变采样率规格(Scaleable Sample Rate)3d
MPEG-4 AAC LC 低复杂度规格(Low Complexity)---如今的手机比较常见的MP4文件中的音频部份就包括了该规格音频文件orm
MPEG-4 AAC Main 主规格 注:包含了除增益控制以外的所有功能,其音质最好blog
MPEG-4 AAC SSR 可变采样率规格(Scaleable Sample Rate)ci
MPEG-4 AAC LTP 长时期预测规格(Long Term Predicition)get
MPEG-4 AAC LD 低延迟规格(Low Delay)
MPEG-4 AAC HE 高效率规格(High Efficiency)---这种规格适合用于低码率编码,有Nero ACC 编码器支持
目前使用最多的是LC和HE(适合低码率)。
流行的Nero AAC编码程序只支持LC,HE,HEv2这三种规格,编码后的AAC音频,规格显示都是LC。HE其实就是AAC(LC)+SBR技术,HEv2就是AAC(LC)+SBR+PS技术;
这里再说明一下HE和HEv2的相关内容:
HE:“High Efficiency”(高效性)。HE-AAC v1(又称AACPlusV1,SBR),用容器的方法实现了AAC(LC)+SBR技术。SBR其实表明的是Spectral Band Replication(频段复制)。简要叙述一下,音乐的主要频谱集中在低频段,高频段幅度很小,但很重要,决定了音质。若是对整个频段编码,如果为了保护高频就会形成低频段编码过细以至文件巨大;如果保存了低频的主要成分而失去高频成分就会丧失音质。SBR把频谱切割开来,低频单独编码保存主要成分,高频单独放大编码保存音质,“统筹兼顾”了,在减小文件大小的状况下还保存了音质,完美的化解这一矛盾。
HEv2:用容器的方法包含了HE-AAC v1和PS技术。PS指“parametric stereo”(参数立体声)。原来的立体声文件文件大小是一个声道的两倍。可是两个声道的声音存在某种类似性,根据香农信息熵编码定理,相关性应该被去掉才能减少文件大小。因此PS技术存储了一个声道的所有信息,而后,花不多的字节用参数描述另外一个声道和它不一样的地方。
(1). AAC是一种高压缩比的音频压缩算法,但它的压缩比要远超过较老的音频压缩算法,如AC-三、MP3等。而且其质量能够同未压缩的CD音质相媲美。
(2). 同其余相似的音频编码算法同样,AAC也是采用了变换编码算法,但AAC使用了分辨率更高的滤波器组,所以它能够达到更高的压缩比。
(3). AAC使用了临时噪声重整、后向自适应线性预测、联合立体声技术和量化哈夫曼编码等最新技术,这些新技术的使用都使压缩比获得进一步的提升。
(4). AAC支持更多种采样率和比特率、支持1个到48个音轨、支持多达15个低频音轨、具备多种语言的兼容能力、还有多达15个内嵌数据流。
(5). AAC支持更宽的声音频率范围,最高可达到96kHz,最低可达8KHz,远宽于MP3的16KHz-48kHz的范围。
(6). 不一样于MP3及WMA,AAC几乎不损失声音频率中的甚高、甚低频率成分,而且比WMA在频谱结构上更接近于原始音频,于是声音的保真度更好。专业评测中代表,AAC比WMA声音更清晰,并且更接近原音。
(7). AAC采用优化的算法达到了更高的解码效率,解码时只需较少的处理能力。
AAC的音频文件格式有ADIF & ADTS:
ADIF:Audio Data Interchange Format 音频数据交换格式。这种格式的特征是能够肯定的找到这个音频数据的开始,不需进行在音频数据流中间开始的解码,即它的解码必须在明肯定义的开始处进行。故这种格式经常使用在磁盘文件中。
ADTS:Audio Data Transport Stream 音频数据传输流。这种格式的特征是它是一个有同步字的比特流,解码能够在这个流中任何位置开始。它的特征相似于mp3数据流格式。
简单说,ADTS能够在任意帧解码,也就是说它每一帧都有头信息。ADIF只有一个统一的头,因此必须获得全部的数据后解码。这两种的header的格式也是不一样的,通常编码后的和抽取出的都是ADTS格式的音频流。
AAC的ADIF文件格式以下图:
AAC的ADTS文件中一帧的格式以下图:
其两边的空白矩形表示一帧先后的数据。
ADIF 的头信息以下图:
ADIF头信息位于AAC文件的起始处,接下来就是连续的 Raw Data Blocks。
组成ADIF头信息的各个域以下所示:
ADTS 的固定头信息:
ADTS的可变头信息:
(1)帧同步目的在于找出帧头在比特流中的位置,13818-7规定,AAC ADTS格式的帧头同步字为12比特的“1111 1111 1111”.
(2)ADTS的头信息为两部分组成,其一为固定头信息,紧接着是可变头信息。固定头信息中的数据每一帧都相同,而可变头信息则在帧与帧之间可变。
在AAC中,原始数据块的组成可能有六种不一样的元素:
SCE: Single Channel Element单通道元素。单通道元素基本上只由一个ICS组成。一个原始数据块最可能由16个SCE组成。
CPE: Channel Pair Element 双通道元素,由两个可能共享边信息的ICS和一些联合立体声编码信息组成。一个原始数据块最多可能由16个SCE组成。
CCE: Coupling Channel Element 藕合通道元素。表明一个块的多通道联合立体声信息或者多语种程序的对话信息。
LFE: Low Frequency Element 低频元素。包含了一个增强低采样频率的通道。
DSE: Data Stream Element 数据流元素,包含了一些并不属于音频的附加信息。
PCE: Program Config Element 程序配置元素。包含了声道的配置信息。它可能出如今 ADIF 头部信息中。
FIL: Fill Element 填充元素。包含了一些扩展信息。如SBR,动态范围控制信息等。
(1). 判断文件格式,肯定为ADIF或ADTS
(2). 若为ADIF,解ADIF头信息,跳至第6步。
(3). 若为ADTS,寻找同步头。
(4). 解ADTS帧头信息。
(5). 如有错误检测,进行错误检测。
(6). 解块信息。
(7). 解元素信息。
a). 开源AAC解码器faad官方网站:http://www.audiocoding.com/
b). faad2源代码(VC工程)下载地址:http://download.csdn.net/detail/leixiaohua1020/6374877