AAC FAQ

来源:百度文库 编辑:神马文学网 时间:2024/04/29 01:39:09
1,什么是AAC?

AAC代表Advanced Audio Coding(高级音频编码),是一种由MPEG-4标准定义的有损音频压缩格式,由Fraunhofer发展,Dolby, Sony和AT&T是主要的贡献者。在使用MP4作为各种内容的容器格式的新多媒体MPEG-4标准中,它是MPEG Layer III / MP3的天然后继者。AAC能够在一条音轨中包括48条全带宽(直到96khz)音频声道,加上15条低频增强(LFE,限制到120Hz)声道,直到 15条数据流并且更多。

2,什么是HE-AAC和LC-AAC?

两者是符合MPEG4 AAC标准的不同的Profile(类)。LC意思是"low complexity"(低复杂性)而HE意思是"high efficiency"(高效性)。HE-AAC也称之为AAC SBR/AAC+/aacplus等。注意HE-AAC注重于低码流的编码并很适合多声道文件(更小的文件尺寸)。对于HE-AAC文件,也需要一个可用 的HE解码器,请看Q6。如果你想要用AAC与其他流行音频编码在64kbps下做比较,请看这里(感谢rjamorim)。

从学术上讲,HE-AAC混合了AAC与SBR技术。SBR代表的是Spectral Band Replication(频段复制)。SBR的关键是在低码流下提供全带宽的编码而不会产生产生多余的信号。传统认为音频编码在低码流下意味着减少带宽和 降低采样率(见MP3 FAQ #7)或产生令人不快的噪音信号。SBR解决问题的方法是让核心编码去编码低频信号,而SBR解码器通过分析低频信号产生高频信号和一些保留在比特流中的 指导信号(通常码流极低,~2 kbps)。这就是采用无SBR解码器的原因,这样你的带宽(frequency response/频率响应)会被严重浪费。这也是为什么被叫做Spectral Band Replication的原因,它只是增加音频的带宽,而非重建。更多关于SBR技术的信息请看这里那里

象MPEG-4视频一样,AAC有着不同的Profile,其中Low Complexity Profile(LC AAC) (也叫MAIN @ Level 2)最被广泛用于商业市场(例如Apple非常著名的iTunes音乐库),其他有象Long Term Prediction Profile(LTP/长期预测), Scalable Sampling Rate Profile(SSR/可变采样率) 和Low Delay Profile(LD/低延迟)。

3,我如何编码AAC?

单单LC Profile:


  • FAAC (免费高级音频编码器):免费开源的LC-ACC [CLI, DirectShow (3ivx), foobar, CoolEdit, WinAmp]
  • Apple's AAC:CBC只能用于quicktime <7,quicktime 7和之后版本包括VBR AAC。Apple的编码不能处理多声道。[Quicktime专业版, iTunes]iTunes 使用同样的编码但可以免费获取。使用quicktime编码的命令行解码器同样可行。iTunes/apple编码是以最初Dolby编码为基础,并且为音质作了较大的调整,尽管只采用CBC但事实上音质非常好。
  • PsyTEL AACENC:多声道不要用它,因为它会产生错误的声道映射。[命令行, AACMachine ( BeSweet的GUI ) ]
  • Dicas' Compaact AAC编码器
  • Sorenson AAC编码器
  • Winamp版本5和以上的版本拥有在Dolby编码基础上的LC ACC编码器特色,但并没有像iTunes那么多的调节功能。


LC & HE Profile:


  • Nero Burning Rom(在额外的菜单中编码文件)和附随的Wave Editor允许LC和HE AAC两种编码。另外可以在cd-rw.org得到Nero AAC/MP4插件。
  • RealPlayer 10 黄金版Real Producer 10同样也包括基于Coding Technologies执行的HE/LC AAC编码器。RP10 黄金版现在默认编码AAC成M4A,并且是一种极好的免费AAC编码解决方案。用Real Producer编码HE AAC,你也需要helix的其他插件包


GUIs/前端:


  • BeSweet:由于DSPguru的贡献,可以通过BeSweet编码Nero AAC。有两个非常优秀的GUIs,附带Doom9指南的OagMachine和BeSweetGUI。注意:BeSweet使用者需要确定使用更新的正式版本,更多信息请参阅Q#19
  • foobar2000:使用nero aac编码/解码器插件(foo_nero.dll)你可以直接转换任何音频到Nero LC/HE AAC,同样有可以参考的指南。注意为了diskwriter插件你需要foobar特别版。用diskwriter插件和命令行的FAAC(可以从rarewares得到)Foobar也同样可以编码成FAAC aac。
  • HeadAC3he的新版本也可以从AC3, WAV或是任何其他HeadAC3he支持的输入格式编码到FAAC aac。
  • winLame:DeXt制作的multi-tool GUI,现在支持通过FAAC编码AAC。



其他优秀格式在128kbps与LC AAC的音质比较(感谢rjamorim)

注意lame(可用的最好mp3编码器)和vorbis在他们最新的版本中提供了更加优良的音质(同样你可以看这里)。

也注意在这次测试中使用的wma9 pro编码,是一种与标准wma9编码完全不同,并且提供更加优良音质的编码(使用在音像店和CD唱机里)并且不是向后兼容的。

低比特率和多声道编码的AAC提供了高效延展性(HE ACC),同样在低比特率中是一种最好的格式之一:
其他流行格式在64kbps与HE AAC的音质比较(感谢rjamorim)

注意QT是在Quicktime中提供的LC AAC编码,He是在nero中。

继承Parametric Stereo(参数立体声)延伸(PS AAC)技术,同时使用HE AAC用于低码率的它(Nero完善中)不得不题及。在32kbps它如何与其他编码比较可以看这里

由rjamorim总结出公共收听测试结果,在128kbps比较这些AAC编码方式可以在这里那里得到答案。

3b,怎样在其他平台下(Linux, MAC OS 10, 其他等等)编码AAC?

FAAC和FAAD是GPL(GNU通用公共许可证)软件,可以在OS X, Linux和绝大部分unixes下编译。FAAC编码也在avidemux, mencoder, gstreamer和其他编码工具下实现。大多数主要的多媒体distributions产品都包括这些。

普通的FAAC编译说明如下:(摘录于FAAC文档)

1,确保你已经安装autoconf, automake和libtool。为了支持mp4, libmp4v2必须也安装(包括在较老的faad2源中,或是新的FAAC cvs(Concurrent Version System/版本控制系统)源码)。
2,解压源文档:tar xvzf faac-x.xx.tar.gz
2,dir(显示列表) cd到FAAC源码
3,Run: ./bootstrap
./configure
make
make install

Binary版也同样可用于几个平台:
Debian
RPMs

4,有没有可能在转换AC3/DTS到AAC后还能保留5.1声道呢?

嗯,用Oagmachine/BeSweetGuI就可以实现。Doom9有篇相关的教材。不过,记住AC3和DTS都是有损音频格式,任何在它们基础上的转码行为都将导致更严重的音质损失。当音频转码时并且需要大幅度减小文件体积时,HE-AAC推荐使用。同样,音频转换还可以通过graphedit搭配3ivx滤 镜套件(AC3->AC3 parser->AC3 filter->3ivx audio encoder->3ivx media muxer->MP4)或者foobar来实现。需要更多AC3和DTS的转码的信息请见这两种编码各自的FAQ部分。

5,目前有没有一个开源的AAC编/解码器存在呢?

FAAC和FAAD2(仅LC)就是开源的AAC编解码器。CoreAAC Directshow filter,winamp插件和许多AAC解码器其实都是源于FAAD2,都具有解码HE-AAC和LC的能力。官方FAAC/FAAD2站点如下:www.audiocoding.com

6,我怎么混合AAC到AVI/OGM/MKV/MP4?

AVI:AVI MUX GUI是仅有的允许混合AAC到AVI的应用软件。注意不推荐AVI作为AAC的容器格式,推荐现代的容器格式如(AAC专门容器格式)。

OGM:Ogg Mux Nic能直接混合LC AAC到OGM。对于HE-AAC,请使用3ivx滤镜套件与Graphedit。

MKV:MKVtoolnixAVI MUX GUI都能混合AAC到Matroska。

MP4:3ivx滤镜套件与Graphedit。
Nero Recode2能自动直接把DVD转换带有NeroDigital或HE AAC的MP4。其他一些支持MP4混合的软件包括Ivan&Mennomp4UI。更多关于MP4(MPEG-4)容器格式的信息请看MP4 FAQ

注意当从raw .aac流混合HE-AAC时,你必须在MKVtoolnix和AVImux GUI中让muxer是“AAC is SBR”。当混合.mp4时,SBR自动被侦测。

7,关于AAC回放我需要什么?

下载并安装CoreAAC DirectShow filter或3ivx audio decoder(3ivx codec内有)都能在directshow播放器杰出地回放(LC和HE都可)。 关于最新的CoreAAC滤镜与winamp/foobar插件, 请看在HydrogenAudio.org中john33的帖子

注意对于MP4流,在directshow播放器上回放3ivx或其他的MPEG-4分离滤镜(splitter)是必需的。对于raw AAC流,rarewares上的AACparser滤镜也是必需的。当muxing成OGM或Matroska时,适当的分离滤镜)也是必需的。更多信息请参看New Container Formats 版块的FAQs。

7B,关于在linux / *nix下回放AAC有什么要求?

任何最新版及相关版的mplayer包括了对MP4格式与用FAAD解码AAC的支持。FAAD已经包含在mplayer的源码中,而且无需另外的库文件或编译。

VLC支持AAC当然MP4也是,但如果你的VLC是源码包版的你就需要安装FAAD作为AAC支持。通常你在编译VLC的源码前需要检查VLC需要的库文件目录

8,MPEG-4与MPEG-2 AAC的不同点是什么?

事实上MPEG-4与MPEG-2 AAC流除了在文件头(header)上并没有什么区别。但是一些应用软件象QuickTime并不承认MPEG-2 AAC。使用Ivan & Menno改变文件头。别的程序象Nic的AAC Patch或foobar2000都可修正文件头。

9,*.AAC,*.MP4,*.M4A(audio/x-m4p AAC audio(受保护))之间的区别是什么?

AAC文件通常包含带ADTS文件头的AAC或者原始(raw)AAC数据流。Raw AAC若没有编码其中几条数据流是不能被处理的。MP4,在另一层面,是一种包含AAC流和其他许多符合MPEG4标准的东西的容器格式。这两种数据格式 是很不同的,因此你不能给它们相互重命名,它们只是被混合入容器格式中或者被分离出。混合AAC到MP4和其分离Ivan & Menno可以完成。 M4A是MP4容器中常见的音轨,其实是我们自己重命名后缀的。Itunes, Winamp5和Realplayer金版现在默认都编码成M4A。注意M4A和MP4文件能通过简单重命名相互混淆,但它们都是同一种容器格式的扩展。

注意“Export ISO 13818-7 Stream”选项在Nero编码器产生的是带ADTS文件头的*.AAC文件。再次提醒这不是原始AAC数据流,Ivan & Menno能转换成原始aac。

更多关于MP4容器格式的信息请到恰当的FAQ寻找。

10,我怎样可以分割合并AAC文件?

AAC在MP4中:
MP4Box可以被用来分割合并所有包括这些AAC音频的MP4文件。完整信息可参阅此帖

有ACC的MP4也可以直接被QuickTime专业版编辑。

原始AAC流:

原始AAC流(*.aac) 可以使用BeSplit分割合并。

分割:

quote:
code:
----------------------------------------------------------------------------------------------
besplit -core( -input in.aac -prefix out -type aac -ending ) -split( 0.0 x.x )
----------------------------------------------------------------------------------------------


这个命令可以剪切in.aac成两部分:0.0 秒到x.x 秒和 x.x 秒到文件结尾(-ending)。

合并:
首先产生一个列表文件,一个文本文件用分隔线把每个要被合并的文件列于表上。然后保存成join.lst并且使用BeSplit:

quote:
code:
----------------------------------------------------------------------------------------------
besplit -core( -input join.lst -prefix out -type aac -join )
----------------------------------------------------------------------------------------------


也可以通过命令提示符来合并AAC流(*.aac) :

quote:
code:
----------------------------------------------------------------------------------------------
copy /b first.aac + second.aac joined.aac
----------------------------------------------------------------------------------------------



11,AAC音频格式的优缺点各是什么?

优点:

  • 低比特率(具有与其他编码可比的音质)和较小文件尺寸,要求使用SBR技术。
  • 多声道(可以实现直到48 条全带宽声道)
  • AAC是MPEG-4标准的正式音频格式,并且未来硬件支持也是很有希望的。

缺点:


  • 此刻没有单独的回放AAC可用。
  • AAC是重大的专利技术。


12,有没有可能通过S/PDIF端回放AAC?

这是可行的,虽然并不是所有的硬件上都可以实现。只有一部分硬件支持解码AAC,且没有一个directshow滤镜有能力实现AAC的信号pass-through。当然,这在将来一定会实现的。点击这里那里阅读更多的S/PDIF和AAC的硬件支持信息。

然而,在通过S/PDIF回放AAC成为可行之前,有不少directshow的滤镜可以通过S/PDIF进行实时的6声道AAC=>AC3的转换,Haaan的Dolby Out DS滤镜,1.x版本的AC3Filter都可以实现。虽然,理论上来说,实时转录过程会有一定程度的音质损失,但使用640kbps全码仍然会得到完美的监听效果和最小的音质损失。

13,5.1 LC AAC和5.1HE AAC各声道的码率是如何分配的?怎样的码率设置才能使5.1的AAC各声道均分为128kbps?

为了使每个声道的码率相同,我们必须添加2x(立体声的码率)(FL(左前置)、FR(右前置)、RL(左后置)& RR(右后置))+1x(单声道的码率(Centre))+一点附加的码率给低音炮。这样的话,为了达到各声道码率统一,总码率要等于立体声码率的2.5 至3倍。所以,为了得到每声道128kbps:128kbps*2.5=320kbps。对于LC AAC而言,320kbps是一个高质量的码率。然而,考虑到AAC的效率和声道联结方式,128kbps的HE-AAC同样可以提供很不错的音质及 5.1声道。

14,nero使用的HE-AAC的码率是多少?

96kbps或更低的CBR码率时使用HE-AAC;流媒体或更低的VBR码率使用HE-AAC。如果输入源是5.1的aiff,则nero可以生成的128kbps的HE-AAC。

15,我在使用BSN/Oagmachine编码AAC的时候如何设置增益调节(gain)?

虽然BeSweet/Bsn有Hybrid(混合)增益调节的组件,但现在没有一个Directshow滤镜有能力处理Hybrid增益调节的信息。所以,现在我们不推荐此类设置,使用标准化或前期增益调节来代替吧。

16,有没有可以被VirtualDub调用的AAC ACM(Audio Compression Manager/声音压缩管理器)编码吗?

由于目前AAC与AVI之间并未完全兼容,所以还没有ACM AAC编码。在FAAC开发过程中曾经试图做过类似的努力却并未成功。

17,我已经安装了所有的BeSweet和Bsn文件,但Besweet/Nero并没有开始编码,请帮帮我?

要通过BeSweet/BSN/Oagmachine/BeSweet GUI来编码Nero AAC,那么有三个dll动态链接文件是必须的:'aac.dll', 'aacenc32.dll'和'NeroIPP.dll'。这三个dll要放入BeSweet文件夹。从60023版开始,aac.dll和 aacenc32.dll要检查注册表中是否有NeroIPP的dll,所以系统中必须要安装Nero Ultra Edition或NeroMix。

18,在用OagMachine/BeSweet编码时我看不到Nero GUI编码窗口,要如何才能激活它?

Oagmachine里,在AAC编码选项下检查“show configuration dialogue”。如果你使用的是命令行模式,就请在命令行里的'-bsn'后加上'-config'即可。

19,为什么我回放用Oagmachine/BeSweet GUI编码的48Khz的AC3/DTS文件时声音会变慢?

那可能你使用的时老版本的BeSweet,从bsn.dll v0.21以后(与BeSweet捆绑)这个bug就已经被修复。请查一下你BeSweet文件的记录文件,确定你使用的是bsn.dll v0.21。
老版本更多的bug信息:
Nero编码器是通过比特率、配置和声道数来准确判定相应的采样率的。当你使用的bsn版本早于0.21时,nero内部的重采样功能默认不被打开,从而你必须在Nero编码器中手动修改采样率。这里有一篇由bond编写的关于如何决定正确的采样率及相关大量解释的文章

20,如何我才能使自己编码出来的AAC是HE而非LC?

让CoreAAC DirectShow filter勾上“AAC+SBR”功能选项。Foobar2000里也同样如此。3ivx音频解码设置里选择的是HE-AAC。

21,在使用600X nero插件时,Oagmachine/BeSweetGUI里的哪个选项是负责控制多声道的?

在6.0011和它之前的老版本里请使用-6chold选项,而6.0011之后的请用-6chnew。

22,我用Nero编码的HE-AAC里有爆音存在,我做错了什么吗?

在Nero编码GUI里打开PNS选项后就会产生这个问题,去掉这个PNS后就可以解决。

23,用FAAC编码要取得高音质的话有什么好的建议吗?

有的,请看FAAC wikiFAAC 5.1编码的讨论文章

24,怎么样把AAC转换成WAV或AC3?

首先,请你仔细阅读通篇关于AC3的FAQ,学习那些需要用到的概念和使用的工具。然后,如
果你还是坚持要这么做的话,这里有篇magicclue写的指南graphedit教程

25,我在哪里可以找到更多关于AAC的信息?

Audiocoding Wiki
Coding Technologies
Dolby