音视频值AAC编码初始(九)

AAC编码

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

对比MP3

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

  • 更多的采样率选择: 8kHz ~ 96kHz,MP3为16kHz ~ 48kHz
  • 更好的声道数上限: 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)

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

最早是基于MPEG-2标椎,称为: MPEG-2 AAC。后来MPEG-4标准在原来基础上增加了一些新技术,称为: MPEG-4 AAC。虽然上面列举了9种规格,但我们目前只需要把注意力放在常用的LC和HE上。

LC

LC适合中等比特率,比如96kbps ~ 192kbps之间。
MPEG-4 AAC LC 等价于

  • MPEG02 AAC LC + PNS
    • PNS (Preceptual 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是瑞典一家技术公司,率先在AAC中使用了SBR技术
    • 在2007年,被杜比实验室(Dolby Laboratories)以2.5亿美元收购

MPEG-4 AAC HE v1 等价于: 

  • MPEG-4 AAC LC + 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(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库中
      • 编解码器名字叫做libfaac
      • 在开发过程中通过这个名字找到编解码器
  • FAAC(Freeware Advandes Audio Coder) 

    • 支持LC规格
    • 可以集成到FFmpeg的libavcodec中 

      • 编解码器名字叫做libfaac
      • 在开发过程中通过这个名字找到编解码器,最后调用FAAC库的功能
    • 从2016年开始,FFmpeg已经移除了对FAAC的支持

  • Fraunhofer FDK AAC

    • 支持LC/HE规格
    • 目前质量最高的AAC编解码器
    • 可以集成到FFmpeg的libavcodec中
      • 编解码器名字叫做libfdk_aac
      • 在开发过程中通过这个名字找到编解码器,最后调用FDK AAC库的功能

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

posted @ 2021-11-09 16:39  木子沉雨  阅读(367)  评论(0编辑  收藏  举报