博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
直播中需要了解的AAC基础知识
阅读量:6871 次
发布时间:2019-06-26

本文共 1815 字,大约阅读时间需要 6 分钟。

参考、等资料对AAC格式进行总结,没有特别深入到细节,目的是让大家对AAC有一个总体的认识。

1.AAC是什么

高级音频编码(英语:Advanced Audio Coding,AAC),出现于1997年,基于的技术。由Fraunhofer IIS、杜比实验室、AT&T、Sony、Nokia等公司共同开发。2000年,标准出现后,AAC重新集成了其特性,加入了SBR技术和PS技术,为了区别于传统的MPEG-2 AAC又称为MPEG-4 AAC。

2.AAC封装格式


(参考在问题中的回答)

参考知乎的问题,AAC的音频文件格式常用的有以下两种:

  • ADIF Audio Data Interchange Format 音频数据交换格式。这种格式的特征是可以确定的找到这个音频数据的开始,不需进行在音频数据流中间开始的解码,即它的解码必须在明确定义的开始处进行。故这种格式常用在磁盘文件中。
  • ADTS Audio Data Transport Stream 音频数据传输流。这种格式的特征是它是一个有同步字的比特流,解码可以在这个流中任何位置开始。 简言之。ADIF只有一个文件头,ADTS每个包前面有一个文件头。

所以在直播等领域用的最多的还是ADTS。

ADTS的头信息分为两部分,一个是固定头信息、紧接着是可变头信息。 固定头信息

可变头信息

合起来

更直观一点:

所以必须要了解ADTS封装的格式,否则就不能自己讲AAC打包到ADTS。

在FFmpeg的adtsenc.c 中定义了方法,可以写ADTS头,大家可以参考。

2.1.部分参数介绍

序号5的profile是AOT - 1,AOT参考

0: Null 1:  Main 2:  LC (Low Complexity) 3:  SSR (Scalable Sample Rate) 4:  LTP (Long Term Prediction) 5: SBR () 6:  Scalable 7:  8:  (Code Excited Linear Prediction) ....省略若干type

adts_buffer_fullness:0x7FF 说明是码率可变的码流。


3.AAC规格

因为AAC是一个庞大家族,他们共分为9种规格,以适应不同场合的需要,也正是由于AAC的规格(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) 上述的规格中,主规格(Main)包含了除增益控制之外的全部功能,其音质最好,而低复杂度规格(LC)则是比较简单,没有了增益控制,但提高了编码效率,至“SSR”对“LC”规格大体是相同,但是多了增益的控制功能,另外,MPEG-4 AAC/LTP/LD/HE,都是用在低比特率下编码,特别是“HE”是有Nero AAC编码器支持,是近来常用的一种编码器,不过通常来说,Main规格和LC规格的音质相差不大,因此目前使用最多的AAC规格多数是“LC”规格,因为要考虑手机目前的内存能力未达合理水准。 MPEG-4 AAC LC(Low Complexity)是最常用的规格,我们叫“低复杂度规格”,我们简称“LC-AAC”,这种规格在中等码率的编码效率以及音质方面,都能找到平衡点。所谓中等码率,就是指:96kbps-192kbps之间的码率。因此,如果要使用LC-AAC规格,请尽可能把码率控制在之前说的那个区间内。 附加一篇参考文章:


参考

ADTS:

转载于:https://juejin.im/post/5b029d5af265da0ba7700c82

你可能感兴趣的文章
OOM问题定位方法
查看>>
hadoop day 4
查看>>
SCVMM 2012 SP1 Beta 体验(一)安装准备
查看>>
Lync Server 2013功能部署系列之七 实现Lync Server 与Exchange Server集成的功能
查看>>
老王学Linux-NFS
查看>>
这一次,我们用最详细的方式解析Android消息机制的源码
查看>>
bash之条件判断语句及循环语句
查看>>
shell-5:case比if(elif else)方便
查看>>
R基础数据类型2DAY
查看>>
shell脚本之 if,case,for的用法
查看>>
loadrunner12--tree
查看>>
安全多方计算(MPC)从入门到精通:经典案例
查看>>
自动化运维之Ansible安装及基本模块应用
查看>>
Linux文件权限详解
查看>>
OSPF 多区域原理与配置
查看>>
面试题2
查看>>
linux运维社区站点收集
查看>>
坚果云云盘告诉你如何保护自己的文件不被泄露?
查看>>
微信点击链接跳转浏览器打开指定页面的API分享
查看>>
CCNA基础课程,OSI参考模型
查看>>