AAC音频转码初探

作者: K歌之王   2011-05-05

 

 

  先从音频压缩的原理讲起, 人的听力范围是20hz--20khz, 而根据奈奎斯特定理, 要想不产生低频失真,则采样频率至少是录制的最高频率的两倍。 所以CD音质的采样频率是44100hz.   一秒采样44100次, 每次的数据量是16*2=32bit(立体声有2个声道)。 所以1秒的数据量是44100*32/8=176k. 这么大的数据量,为了方便传输和存储,是需要压缩的。 目前主流的音频格式有MP3,WMA还有AAC。3种格式各有各的特点和用处,这里只说AAC。  

 

  AAC分两种, 一种是mpeg-2 aac(主要是adts), 还有一种mpeg4-aac(.m4a)。 前者是针对传输的ts流, 而后者有方便存储的mp4容器。 AAC针对不同性能和带宽的应用场合, 有三种profile, LC(low complexity), 增加SBR(aac plus或HE AAC), 增加PS(aac plus plus或HE AAC+)。

 

  目前常用的AAC编码器有FAAC和NERO AAC,前者是开源的,只支持LC Profile;后者不开源,支持到HE-AAC+。 目前千千静听和FOOBAR的AAC转码都使用NERO AAC插件。 针对手机的音质,选择预置中的 CBR/Stereo-48kbps 或 VBR/Stereo-Portable,40-50kbps即可。要勾选“导出ISO 13818-7 AAC 轨道”,这样输出的是符合mpeg-2 aac标准的AAC TS流。 否者输出的是.M4A。 注意,千千静听转码有个问题, 非44100HZ采样的WAV转出来都会变调。  

 

  现在介绍nero aac命令行的使用。如下,-q为量化参数,范围0.05-0.95,-q值越小压缩率越高。 可选的profile有三种, -lc, -he和-hev2

 

默认输出的是m4a音频。 如果要转换成AAC TS流, 可用mp4creator再做demux,命令行如下:

 

  neroAacEnc.exe  -q 0.2  -he -if test.wav -of test.mp4

 

  mp4creator.exe  -extract=1 test.mp4  test_creater.aac

 

 

 

  

你可能感兴趣的:(存储,手机)