【秒懂音视频开发】14_AAC编码

AAC(Advanced Audio Coding,译为:高级音频编码),是由Fraunhofer IIS、杜比实验室、AT&T、Sony、Nokia等公司共同开发的有损音频编码和文件格式。

对比MP3

AAC被设计为MP3格式的后继产品,通常在相同的比特率下可以获得比MP3更高的声音质量,是iPhone、iPod、iPad、iTunes的标准音频格式。

AAC相较于MP3的改进包含:

更多的采样率选择:8kHz96kHz,MP3为16kHz48kHz

更高的声道数上限:48个,MP3在MPEG-1模式下为最多双声道,MPEG-2模式下5.1声道

改进的压缩功能:以较小的文件大小提供更高的质量

改进的解码效率:需要较少的处理能力进行解码

......

规格

AAC是一个庞大家族,为了适应不同场合的需要,它有很多种规格可供选择。下面列举其中的9种规格(Profile):

MPEG-2 AAC LC:低复杂度规格(Low Complexity)

MPEG-2 AAC Main:主规格

MPEG-2 AAC SSR:可变采样率规格(Scaleable Sample Rate)

MPEG-4 AAC LC:低复杂度规格(Low Complexity)

现在的手机比较常见的MP4文件中的音频部分使用了该规格

MPEG-4 AAC Main:主规格

MPEG-4 AAC SSR:可变采样率规格(Scaleable Sample Rate)

MPEG-4 AAC LTP:长时期预测规格(Long Term Predicition)

MPEG-4 AAC LD:低延迟规格(Low Delay)

MPEG-4 AAC HE:高效率规格(High Efficiency)

最早是基于MPEG-2标准,称为:MPEG-2 AAC。后来MPEG-4标准在原来基础上增加了一些新技术,称为:MPEG-4 AAC。

LC和HE

虽然上面列举了9种规格,但我们目前只需要把注意力放在常用的LC和HE上。下图很好的展示了从LC到HE的发展历程。

从LC到HE

从LC到HE

LC

LC适合中等比特率,比如96kbps~192kbps之间。

MPEG-4 AAC LC等价于:

MPEG-2 AAC LC + PNS(Perceptual Noise Substitution,感知噪声替代)

PNS可以提高AAC的编码效率

HE

HE有v1和v2两个版本,适合低比特率:

v1:适合48kbps~64kbps

v2:适合低于32kbps,可在低至32kbps的比特率下提供接近CD品质的声音

v1

MPEG-4 AAC HE v1的别名:

aacPlus v1

eAAC

AAC+

CT-aacPlus(Coding Technologies)

Coding Technologies是瑞典是一家技术公司

在2007年,被杜比实验室(Dolby Laboratories)以2.5亿美元收购

MPEG-4 AAC HE v1等价于:

MPEG-4 AAC LC + SBR

SBR

SBR(Spectral Band Replication)译为:频段复制。

是一种增强的压缩技术

可以将高频信号存储在少量的SBR data中

解码器可以根据SBR data恢复出高频信号

v2

MPEG-4 AAC HE v2的别名:

aacPlus v2

AAC++

eAAC+、Enhanced AAC+

MPEG-4 AAC HE v2等价于:

MPEG-4 AAC HE v1 + PS

PS

PS(Parametric Stereo)译为:参数立体声。

是一种有损的音频压缩算法,可以进一步提高压缩率

可以将左右声道信号组合成单声道信号,声道之间的差异信息存储到少量的PS data中(大概占2~3kbps)

解码器可以根据PS data中恢复出立体声信号

编解码器

如果想对PCM数据进行AAC编码压缩,那么就要用到AAC码器(encoder)。
如果想将AAC编码后的数据解压出PCM数据,那么就要用到AAC码器(decoder)。

这里只列举几款常用的AAC编解码器:

Nero AAC

支持LC/HE规格

目前已经停止开发维护

FFmpeg AAC

支持LC规格

FFmpeg官方内置的AAC编解码器,在libavcodec库中

FAAC(Freeware Advanced Audio Coder)

支持LC规格

可以内置到FFmpeg中,名字叫做libfaac

从2016年开始,FFmpeg已经移除了对FAAC的支持

Fraunhofer FDK AAC

支持LC/HE规格

目前质量最高的AAC编解码器

可以内置到FFmpeg中,名字叫做libfdk_aac

编码质量排名:Fraunhofer FDK AAC > FFmpeg AAC > FAAC。

FDK AAC

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zydjzz.html