大家好,欢迎来到停止重构的频道。
本期我们介绍音频编码格式AAC。
AAC是音频最常用的编码格式之一,几乎所有的播放器都支持这个编码格式。
其他音频编码格式都是类似的,只是某些细节存在差别,如压缩算法、某些音频参数存在限制等。
我们按这样的顺序讨论 :
1、 封装格式的作用
2、 AAC的一些特殊限制
3、 AAC与其他编码格式的选择
封装格式的作用
在往期《音视频转码工作原理》中介绍过,一个视频或音频文件实际上是分三层的:封装、编码、基础数据,封装的作用请看往期《封装格式》。
而编码的作用,也在往期《H264编码格式》提到过了,是为了压缩数据,限制最终文件的大小。
我们举个例子,音频是由一个个采样组成的,如果采样的位深度为16bit的话,一个采样的大小即为16bit。
如果音频长度1分钟,采样率为48KHz、双声道的话,则理论音频文件大小为10MB左右。
一般除了无损音频文件,是没这么大的,因为音频编码阶段会压缩数据。
这里顺便一提,即使是无损音频文件,编码阶段也会压缩数据,只是压缩算法是无损的,保证能还原成原始数据。
另外,一般只有对音频文件大小产生影响的基础参数才会作用在编码阶段,如码率、最大码率等。
除去无损音频编码格式外,编码阶段会按这些参数限制文件大小,但同时也可能会产生有损压缩,影响声音质量。
其他参数如采样率、位深度等,都不是编码阶段处理的,需要转码程序对原始音频数据进行处理。
关于音频相关参数的讲解以及推荐设置,如音频帧、采样、位深度、采样率、声道等,可参考往期《音频参数》,这里不作展开。
AAC的一些特殊限制
音频编码格式的不同,意味着压缩算法的区别。具体压缩算法是不需要搞清楚的,但是需要清楚具体编码格式的一些特殊限制。
AAC编码的话,音频采样率限制在8KHz-96KHz之间。
另外,AAC编码一般以1024个采样为一个音频帧,如果是双通道、采样率为48KHz的话,则一个音频帧的长度大约为0.01秒。
如果每个音频帧的采样数不对,则可能会造成播放过快或过慢的问题。
这里需要注意的是,AAC实际上有多种规格的,不同规格可以理解为AAC编码的不同行为,以上介绍的一些特殊限制都是基于最常用的AAC-LC规格。
不同规格下,支持的采样率、最大码率、每帧采样数都是有区别的。另外,在低码率,128Kbps以下,不同模式的主观音质会有所区别,AAC-HE会比常用的AAC-LC更加优秀。
但一般音频码率都会在128Kbps以上,所以一般选用常规的AAC-LC即可。
AAC与其他编码格式的选择
AAC是很常用的编码格式,无论是视频文件、还是单纯的音频文件,采用AAC编码格式,都有很高的兼容性。
如果是要求无损音质,则选择PCM等编码格式。
当然,音频编码格式的选择,更多是以实际情况为依据的,在明确音质要求前提下,需要考虑数据量/流量等成本问题。
但比这些都重要的是,兼容目标用户群体的播放设备/软件,毕竟编码格式再优秀,用户播不了也是没用的。
总结
截止本期,我们已经把音视频的基础知识介绍完了,包括视频播放、转码、直播工作原理,音频、视频参数 封装、直播协议、编码格式等等。
后续我们将进入正式的音视频处理阶段,敬请期待。