|
楼主 |
发表于 2008-11-5 12:57:52
|
显示全部楼层
AAC FAQ
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:MKVtoolnix和AVI MUX GUI都能混合AAC到Matroska。
MP4:3ivx滤镜套件与Graphedit。
Nero Recode2能自动直接把DVD转换带有NeroDigital或HE AAC的MP4。其他一些支持MP4混合的软件包括Ivan&Menno和mp4UI。更多关于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。 |
|