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)
  • 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

免费分享2022最新最全学习提升资料包,资料内容包括《Andoird音视频开发必备手册+音视频最新学习视频+大厂面试真题+2022最新学习路线图(C/C++,Linux,FFmpeg ,webRTC ,rtmp ,hls ,rtsp ,ffplay ,srs)等等 

LC

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

MPEG-4 AAC LC等价于:

  • MPEG-2 AAC LC + PNS

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是瑞典是一家技术公司,率先在AAC中使用了SBR技术
    • 在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库中
      • 编解码器名字叫做aac
      • 在开发过程中通过这个名字找到编解码器
  • FAAC(Freeware Advanced 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。

FDK AAC

在网上下载的编译版FFmpeg,通常都是没有集成libfdk_aac的。可以通过命令行查看FFmpeg目前集成的AAC编解码器。

# windows
ffmpeg -codecs | findstr aac# mac
ffmpeg -codecs | grep aac

我这边的输出结果是:

DEAIL. aac                  AAC (Advanced Audio Coding) (decoders: aac aac_fixed )
D.AIL. aac_latm             AAC LATM (Advanced Audio Coding LATM syntax)

很显然,并没有包含libfdk_aac。

这里给出1个比较推荐的方案:自己手动编译FFmpeg源码,将libfdk_aac集成到FFmpeg中。

  • 自己手动编译的话,想集成啥就集成啥
  • 可以把你想要的东西都塞到FFmpeg中,不想要的就删掉
  • 也就是根据自己的需要对FFmpeg进行裁剪

【秒懂音视频开发】13_AAC编码相关推荐

  1. 【秒懂音视频开发】23_H.264编码

    本文主要介绍一种非常流行的视频编码:H.264. 计算一下:10秒钟1080p(1920x1080).30fps的YUV420P原始视频,需要占用多大的存储空间? (10 * 30) * (1920 ...

  2. 【秒懂音视频开发】15_AAC编码实战

    本文将分别通过命令行.编程2种方式进行AAC编码实战,使用的编码库是libfdk_aac. 要求 fdk-aac对输入的PCM数据是有参数要求的,如果参数不对,就会出现以下错误: [libfdk_aa ...

  3. iOS音视频开发-了解编码及视频

    1. 视频H264编码 1.1 为何编码? 从存储角度和网络传输以及通用性 3个角度,压缩已经成了不可或缺的动作.压缩编码最基本的指标,就是压缩比. 压缩比通常都是小于1(如果等于或者大于1,是不是就 ...

  4. 【秒懂音视频开发】07_音频录制01_命令行

    命令简介 FFmpeg的bin目录中提供了3个命令(可执行程序),可以直接在命令行上使用. 3个命令 ffmpeg ffmpeg的主要作用:对音视频进行编解码. # 将MP3文件转成WAV文件 ffm ...

  5. 【秒懂音视频开发】07_重识音频

    我们平时在互联网上听到的声音,都是先经过录制后,再传输到互联网上的.比如歌曲.电影.主播等的声音. PCM 录音的原理可以简单理解为:把声源的振动记录下来,需要时再让某个物体按照记录下来的振动规律去振 ...

  6. 【秒懂音视频开发】26_RTMP服务器搭建

    流媒体 基本概念 流媒体(Streaming media),也叫做:流式媒体. 是指将一连串的多媒体数据压缩后,经过互联网分段发送数据,在互联网上即时传输影音以供观赏的一种技术与过程 此技术使得数据包 ...

  7. 【秒懂音视频开发】02_重识声音

    关于声音的知识,记得没错的话,是属于初中物理的内容.为了学好音视频,我们有必要重新温习一下声音的相关知识.需要提醒的是:本文的GIF动态图比较多,建议选择在网络较好的环境中阅读. 产生 声音(Soun ...

  8. 【秒懂音视频开发】06_重识声音

    关于声音的知识,记得没错的话,是属于初中物理的内容.为了学好音视频,我们有必要重新温习一下声音的相关知识.需要提醒的是:本文的GIF动态图比较多,建议选择在网络较好的环境中阅读. 产生 声音(Soun ...

  9. 即时通讯音视频开发(八):常见的实时语音通讯编码标准

    前言 即时通讯应用中的实时音视频技术,几乎是IM开发中的最后一道高墙.原因在于:实时音视频技术 = 音视频处理技术 + 网络传输技术 的横向技术应用集合体,而公共互联网不是为了实时通信设计的. 系列文 ...

  10. 即时通讯音视频开发(七):音频基础及编码原理入门

    前言 即时通讯应用中的实时音视频技术,几乎是IM开发中的最后一道高墙.原因在于:实时音视频技术 = 音视频处理技术 + 网络传输技术 的横向技术应用集合体,而公共互联网不是为了实时通信设计的. 系列文 ...

最新文章

  1. 异步IO一定更好吗?
  2. 算法笔记-堆相关、堆的定义、大小根堆、算法程序实现、堆的算法题、C#写法
  3. 转 使用DCloud+Framework7制作移动APP应用
  4. python北京时间代码_python代码定时同步本机的北京时间详解
  5. java 监控执行时间_java-监测方法运行时间 | 学步园
  6. 网络编程练习 -- NSURLConnection -- get/post请求
  7. 个性化 服务器运行失败,VirtualBox 运行失败
  8. Python的用途是什么? Python编程语言有10多种编码用途。
  9. Dubbo-go v3.0 正式发布 ——打造国内一流开源 Go 服务框架
  10. 9 pcb螺丝焊盘打很多小孔_PCB板设计的10个基本设计流程
  11. python学爬虫、还没放出来_Python 爬虫学习没思路?可以看看这篇文章
  12. 全网最全教你轻松把vue项目部署到IIS服务器
  13. 新农合研究的文献外文回顾
  14. php 设置空数组,声明空数组,填充和迭代问题-php
  15. Linux之Shell编程学习总结
  16. iOS 颜色选择器 仿ps 调色板
  17. 正交设计 python算法_SPSS统计分析案例:无空白列重复正交试验设计方差分析
  18. Ubuntu下设置开机启动项
  19. 全国计算机二级算国奖吗,如何区分竞赛证书的等级和含金量?(太多人傻傻分不清国奖、省奖、市奖)...
  20. 叮咚买菜拟赴美上市 官网域名为杂米域名100.me

热门文章

  1. Mac OS 开机密码重置
  2. Moore型状态机和Mealy型状态机的区别以及各自Verilog的实现细节:为什么Moore型状态机需要多一个状态?怎么选择用哪一种状态机?
  3. LabVIEW编程LabVIEW开发 常用运动控制器比较
  4. 【Scratch】青少年蓝桥杯_每日一题_3.01_画莲花
  5. ACPYPE中FAILED: [Errno 2] No such file or directory: 'FFF_AC.prmtop'的解决方法
  6. H5的video用法
  7. php批量邮件地址,PHP通过phpmailer批量发送邮件功能
  8. docker android模拟器,Docker中的Android模拟器
  9. 我的第一篇博客——鸡汤博
  10. 96 不同得二叉搜索树 明安图法 动态规划法