=================================================================
音视频入门基础:AAC专题系列文章:
音视频入门基础:AAC专题(2)——使用FFmpeg命令生成AAC裸流文件
音视频入门基础:AAC专题(3)——AAC的ADTS格式简介
音视频入门基础:AAC专题(4)——ADTS格式的AAC裸流实例分析
音视频入门基础:AAC专题(5)——FFmpeg源码中,判断某文件是否为AAC裸流文件的实现
音视频入门基础:AAC专题(6)——FFmpeg源码中解码ADTS格式的AAC的Header的实现
音视频入门基础:AAC专题(7)——FFmpeg源码中计算AAC裸流每个packet的size值的实现
音视频入门基础:AAC专题(8)——FFmpeg源码中计算AAC裸流AVStream的time_base的实现
音视频入门基础:AAC专题(9)——FFmpeg源码中计算AAC裸流每个packet的duration和duration_time的实现
音视频入门基础:AAC专题(10)——FFmpeg源码中计算AAC裸流每个packet的pts、dts、pts_time、dts_time的实现
=================================================================
在文章《音视频入门基础:PCM专题(1)——使用FFmpeg命令生成PCM音频文件并播放》中讲述了生成PCM文件的方法。通过FFmpeg命令可以把该PCM文件转为AAC裸流文件:
./ffmpeg -f s16le -ar 44100 -ac 2 -i audio1.pcm audio1.aac
由于pcm文件没有文件头,不包含任何采样频率、通道数、采样位数等信息,所以转换的时候得指定这些参数。上述命令指定被转换的PCM文件的采样频率为44100Hz,双通道,采样位数为16位、小端。
执行上述命令后,会生成AAC裸流文件audio1.aac,该裸流文件是ADTS格式的。通过命令./ffmpeg -i audio1.aac可以看到其音频压缩编码格式为aac(LC)。AAC是一个庞大家族,共分为9种规格,以适应不同场合的需求,aac(LC)表示是AAC LC低复杂度规格(Low Complexity):
注意上图中显示的Bit depth(又叫采样位数、采样格式、位每采样)是fltp。网上有些文章的说法是:FFmpeg本身自带的AAC编码器并不支持AV_SAMPLE_FMT_S16,只支持AV_SAMPLE_FMT_FLTP格式,所以生成的AAC裸流文件的采样格式为fltp。但其实不是这样的,Bit depth对于有损压缩编解码器(如MP3和AAC),它是在编码期间计算的,并且可以因采样而异。所以Bit depth只对PCM数字信号有意义,非PCM格式,如AAC这种有损压缩格式,Bit depth是没有意义的,具体可以参考:《音视频入门基础:AAC专题(3)——AAC的ADTS格式简介》。所以FFmpeg显示的这个“fltp”没有意义。
通过vlc可以直接播放生成的AAC裸流文件,并查看其信息。同理,下图中显示的“位每采样:32”没有意义: