直播中须要了解的AAC基础知识

Android 开发笔记 onGithubphp

参考维基百科知乎问题等资料对AAC格式进行总结,没有特别深刻到细节,目的是让你们对AAC有一个整体的认识。html

1.AAC是什么

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

2.AAC封装格式


(参考鹏小鹕在问题AAC-LC 是什么格式?和 AAC 有什么区别?中的回答)github

参考知乎的问题,AAC的音频文件格式经常使用的有如下两种:性能

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

因此在直播等领域用的最多的仍是ADTS。编码

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

可变头信息

合起来.net

更直观一点:orm

因此必需要了解ADTS封装的格式,不然就不能本身讲AAC打包到ADTS。cdn

在FFmpeg的adtsenc.c 中定义了adts_write_frame_header方法,能够写ADTS头,你们能够参考。

2.1.部分参数介绍

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

0: Null 1: AAC Main 2: AAC LC (Low Complexity) 3: AAC SSR (Scalable Sample Rate) 4: AAC LTP (Long Term Prediction) 5: SBR (Spectral Band Replication) 6: AAC Scalable 7: TwinVQ 8: CELP (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规格,请尽量把码率控制在以前说的那个区间内。 附加一篇参考文章:AAC规格(LC,HE,HEv2)及性能对比


参考

ADTS:

相关文章
相关标签/搜索