MP3 全攻略
夏昆冈 于 2003.04.24 18:13:01 | 源自:www.soomal.com | 版权:原创 | 平均/总评分:09.33/28

A、优秀成熟的编码——MP3

MP3作为目前最为普及的音频压缩格式,为大家所大量接受,各种与MP3相关的软件产品层出不穷,而且更多的硬件产品也开始支持MP3,我们能够买到的VCD/DVD播放机都很多都能够支持MP3,还有更多的便携的MP3播放器等等,虽然几大音乐商极其反感这种开放的格式,但也无法阻止这种音频压缩的格式的生存与流传。MP3发展已经有10个年头了,他是MPEG(MPEG:Moving Picture Experts Group) Audio Layer-3的简称,是MPEG1的衍生编码方案,1993年由德国Fraunhofer IIS研究院和汤姆生公司合作发展成功。MP3可以做到12:1的惊人压缩比并保持基本可听的音质,在当年硬盘天价的日子里,MP3迅速被用户接受,随着网络的普及,MP3被数以亿计的用户接受。MP3编码技术的发布之初其实是非常不完善的,由于缺乏对声音和人耳听觉的研究,早期的mp3编码器几乎全是以粗暴方式来编码,音质破坏严重。随着新技术的不断导入,mp3编码技术一次一次的被改良,其中有2次重大技术上的改进。

VBR:MP3格式的文件有一个有意思的特征,就是可以边读边放,这也符合流媒体的最基本特征。也就是说播放器可以不用预读文件的全部内容就可以播放,读到哪里播放到哪里,即使是文件有部分损坏。虽然mp3可以有文件头,但对于mp3格式的文件却不是很重要,正因为这种特性,决定了MP3文件的每一段每一帧都可以单独的平均数据速率,而无需特别的解码方案。于是出现了一种叫VBR(Variable bitrate,动态数据速率)的技术,可以让MP3文件的每一段甚至每一帧都可以有单独的bitrate,这样做的好处就是在保证音质的前提下最大程度的限制了文件的大小。这种技术的优越性是显而易见的,但要运用确实是一件难事,因为这要求编码器知道如何为每一段分配bitrate,这对没有波形分析的编码器而言,这种技术如同虚设。正是如此,VBR技术并没有一出现就显得光彩夺目。

听觉模型的导入:专家们通过长期的声学研究,发现人耳存在遮蔽效应。声音信号实际是一种能量波,在空气或其他媒介中传播,人耳对声音能量的多少即响度或声压最直接的反应就是听到这个声音的大小,我们称它为响度,表示响度这种能量的单位为分贝(dB)。即使是同样响度的声音,人们也会因为它们频率不同而感觉到声音大小不同。人耳最容易听到的就是4000Hz的频率,不管频率是否增高或降低,即使是响度在相同的情况下,大家都会觉得声音在变小。但响度降到一定程度时,人耳就听不到了,每一个频率都有着不同的值。

  • 可以看到这条曲线基本成一个V字型,当频率超过15000Hz时,人耳的会感觉到声音很小,很多听觉不是很好的人,根本就听不到20000Hz的频率,不管响度有多大。当人耳同时听到两个不同频率、不同响度的声音时,响度较小的那个也会被忽略,例如:在白天我们很难听到电脑中散热风扇的声音,晚上却成了噪声源,根据这种原理,编码器可以过滤掉很多听不到的声音,以简化信息复杂度,增加压缩比,而不明显的降低音质。这种遮蔽被称为同时遮蔽效应。但声音A被声音B遮蔽,如果A处于B为中心的遮蔽范围内,遮蔽会更明显,这个范围叫临界带宽。每一种频率的临界带宽都不一样,频率越高的临界带宽越宽。

    频率(Hz)临界带宽(Hz)频率(Hz)临界带宽(Hz)
    50801850280
    1501002150320
    3501002500380
    4501103400550
    5701204000700
    7001404800900
    84015058001100
    100016070001300
    117019085001800
    1370210105002500
    1600240135003500

    根据这种效应,专家们设计出人耳听觉心理模型,这个模型被导入到mp3编码中后,导致了一场翻天覆地的音质革命,mp3编码技术一直背负着音质差的恶名,但这个恶名现在已经逐渐被洗脱。到了此时,一直被埋没的VBR技术光彩四射,配合心理模型的运用便现实出强大的诱惑力与杀伤力。
    长期来,很多人对MP3印象不好,更多人认为WMA的最佳音质要好过MP3,这种说法是不正确的,在中高码率下,编码得当的MP3要比WMA优秀很多,可以非常接近CD音质,在不太好的硬件设备支持下,没有多少人可以区分两者的差异,这不是神话故事,尽管你以前盲听就可以很轻松区分MP3和CD,但现在你难保证你可以分辨正确。因为MP3是优秀的编码,以前被埋没了。

    B、制作利器——LAME

  • 要制作出高音质的MP3靠以前广为流传的MP3编码器是不行的。我们强烈推荐使用LAME,为什么文章前段着重写了一些看似无关的技术性文字描述,因为这些就是LAME与一般MP3编码器与众不同的地方,她支持几乎所有能够采用到MP3编码中的技术,包括我们花了不少笔墨描述的东西。LAME支持CBR(固定码率)和VBR(动态码率,还有一个效果不是很出众的ABR),LAME是MP3史上具有里程碑意义的软件,LAME是一个Command line程序,象DOS程序一样需要手工输入,而且参数及其复杂,但可很方便的供其他程序调用,LAME同时也提供了一个DLL版本,但我们认为不如EXE版本的好,所以忽略不提。不要被LAME复杂的参数所吓倒,下面的文章中我们会提示如何操作来达到一劳永逸的效果。我们需要粗略的了解一下LAME的参数。

    LAME其实真正要用到的参数就几个而已。

    VBR压缩级别参数:[-V] 指定VBR的压缩品质,范围为0-9(数字越小品质越高),预设值为4。

    码率参数:[-b] 指定流量变动的下限,预设为32Kbps。[-B] 指定流量变动的上限,预设为320Kbps。注意 -b 和-B 的大小写差异。如果使用在CBR编码模式中,[-b]所指定的码率就是固定码率大小,可供指定的码率大小可以为:16 24 32 40 48 56 64 80 96 112 128 160 192 224 256 320。

    高品质编码模式参数:[-h] 高品质编码模式。这个选项在 VBR 压缩模式中是预设开启的。CBR编码模式中是关闭的。

    精度参数:[-q] 指定频率资料量化时的精确度,范围是为0-9(数字越小品质越高),预设值为2。如果在使用-q 0参数是觉得编码速度慢得过份,请使用默认值。如果编码的曲子是钢琴或者小提琴、古筝二胡这类细节很丰富的乐器独奏,我们推荐你就是耐着性子也要用-q 0参数,虽然慢点,但值得。

    声道模式参数:[-m] 立体声压缩模式,细分参数分别有 s:Stereo j:Joint Stereo f:Force ms_stereo m:Mono。当使用VBR编码并把品质设为4-9和使用CBR编码流量小于160 Kbps时,预设为j(Joint Stereo)。其余时候预设为s(Stereo)。

    通过长期的使用,我们给出2个参数使用建议。

    CBR 模式编码的推荐参数:-b < Bitrate > -m s -h (< Bitrate > 为码率数值)。VBR 模式编码推荐参数:-V 0。

    在新版本的LAME中(3.90后),LAME提供了全新的--alt-preset系列预置参数,这组参数最大的好处就是不用再去记忆那些繁多的参数,而提供最佳化的选择。
    CBR模式:
    --alt-preset insane 320kbps CBR模式,音质最好,体积最大。

    VBR模式:
    --alt-preset extreme 平均Bitrate范围在192~256kbps之间,音质接近insane,体积小了一些,但比 -V 0 编码效率要低。
    --alt-preset系列参数提供比老参数更优秀的音质,但编码效率却低了很多,您需要更强劲的CPU支持才行,而相对比老参数提高相对不是很多,在乎您的取舍了,笔者倾向使用老参数。
    了解这么多就足够了,我们接着做下列的工作。

    C、制作流程——强强组合

    C.1 一条龙的制作方式——从CD到MP3

  • 很多工具都提供了将CD直接压缩到MP3的功能,但我们仍旧推荐使用Exact Audio Copy,Exact Audio Copy最大的特点就是可以精确捕捉音轨。很多人认为将CD捕捉为WAV文件这个过程是无损的,其实错了。

    C.1.1 选择抓轨模式

    EAC 支持3种抓轨模式:安全(Secure),快速(Fast)和爆发(Burst)。在安全模式模式下,对于每一段音频数据至少读取两次,如果两次不一样,则继续读取直到有50%以上的采样是完全相同的为止,不过最多只读取82次,这样就会得到完全正确的或最佳结果,当光驱支持精确流(accurate stream)特性时可以确保这一点。如果光驱对于音频数据进行缓冲(Cache),情况就会变得复杂起来,因为后面每一次读取数据都是第一次的缓冲,是从Cache中读出的,当然是一致的。EAC通过重新初始化光驱来避免这一点。由此可见,安全模式是比较慢的。C2级错误检测是EAC采用的又一种光驱特性。光驱有C1,C2两种错误检测方法,如果在读取音频流时,发现C1和C2校验错误,会进行相应的操作。而爆发模式不进行任何的检测和校正,只是速度快。因此在选择抓轨模式之前,我们必须检测光驱的信号读取的相关信息。
    选择菜单 EAC/Drive Options,选择Extraction Method标签。点击Detect Read Features...按钮。开始进行检测。

  • 本例中采用的光驱不进行数据缓冲,支持精确流模式和C2错误信息校正,这对捕捉音轨是非常有利的。如果您测试出来发现光驱不支持精确流模式,那么,遗憾的告诉您,在您无法确定光驱的详细参数之前,您无法获得最好的音轨,但不是没有解决办法,稍后介绍。检测结果出来后,点击Apply按钮,EAC会自动选择最适合您的抓轨模式。最佳的抓轨模式是需要测试才知道的,不是看到别人怎么设置自己就怎么设置。EAC给出的设置都是音质至上的,一切为了音质出发。如果您需要高速的抓轨速度,请选择爆发(Burst)模式,这个模式下,可以实现非常快速的捕捉,但和普通的抓轨工具无异了,音质无法得到保证,尤其是高频信息。

  • 这个是最适合本例中使用的光驱的抓轨设置了。如果在后来抓轨工作中,速度慢得无法忍受,请尝试关闭 Drive is capable of retrieving C2 error informations。

    C.1.2 检测光驱的偏差值

    如果您的光驱不支持精确流,也不是无药可救。由于每一台光驱,都有其特定的偏移值,在读取CD信号时可能产生非常非常小的数据偏移错误,假设你要光驱读取第100000位的信号,而光驱确可能读取到99999位的信号,利用采样偏移(Sample Offset)技术,收集了几百张常见的CD,在每张CD的特殊位置读取了一些字节,建立了一个CD特征库,如果你也正好有这个版本的CD,你就可以使用他们,通过EAC进行比较,以得到你自己的光驱的特征偏移,注意同一种CD可能有多种版本。

    在光驱中放入一张CD,最好是广为流传的发烧级正版CD,因为EAC需要通过这张CD的索引进行数据查询分析,给出一个偏差值。本例中使用的CD是Loreena McKennitt的The Book Of Secrets。选择菜单 EAC/Drive Options

  • 选择Offset/Speed 标签,点击 Detect read sample offset correcion...按钮。检测开始。

  • 测试结果为+2463。点击Apply按钮。这个数值就会填写到Use Read sample offset correction栏中,这个检测过程是比较重要的,也是EAC与众不同的地方。在进行这个测试的时候,请尽量使用正版的、知名的发烧碟,而不要使用港台的CD,在这个检测数据库中有数百张CD的对比数据,您一定可以找到一张适合测试的。如果EAC无法检索到这张CD的信息,那么将无法获取光驱的偏差值。

    C.1.3 文件名的管理

    我们经常看到Track01、Track02这类命名的MP3,当这种命名方式的MP3放在一起的时候,就会觉得混乱得可以。EAC 可以完美的解决这个问题,EAC支持自定义音轨捕捉到WAV时的命名格式,你可以设置为:专辑名_音轨号_歌曲名.mp3 或者 作者名_专辑名音轨号_歌曲名.mp3等方式。
    在插入一张CD后,我们可以看到:

  • 可以看到歌曲名就是Track加音轨号。其实我们只需要选择菜单Database/Get CD information Form/Remote freedb,EAC就会自动从网络上获取这张CD的信息,然后重新命名这些歌曲名,作者信息和CD信息都会将被更新。本例中更新后的结果为:

  • CD名、歌曲名等信息全被自动更新了,我们可以省却很多输入的时间,而且不会出错。现在很多CD都可以被检索到,如果你购买的CD无法查阅到信息,那么你只有选择痛苦的手工修改信息了,绝对不推荐使用Track01这样的名字。当然,在获取这些信息的时候,你必须保证电脑处于上网的状态。在初次使用这个功能的时候,EAC可能报告无法获取该CD的信息,因为你缺少一个注册的E-mail地址。选择菜单EAC/Freedb / database Options。

  • 在 Your E-mail address中填入你的邮箱地址然后确定即可。
    EAC可以自定义捕捉后的文件的名称命名规则。选择菜单EAC/EAC Options,选择Directories标签。

  • 设置文件输出文件夹。然后继续选择filename标签。

  • 在Naming scheme中填入命名规则即可。%T 代表歌曲名、%N 代表音轨号、%A 代表CD作者名、%C 代表专辑名,其他得几个基本用不到,无须理会。Use various artist naming scheme 中可以填入另外一种的命名规则,当被选中时即生效。在长期的实践过程中,我们认为专辑名+下划线+作者名+下划线+音轨号+歌曲名的方式是非常方便实用的,您只需填入:%C %A %N %T,如果您希望把制作的曲子存放在服务器上,我们应该尽量避免使用空格,所以建议选中Replace spaces by underscores,空格将被下划线代替。EAC提供的这种命名方式很方便也很实用,推荐各位积极采用。

  • 这张图呈现的就是使用命名规则后文件排列的效果。是不是更加一目了然?

    C.1.4 挂接LAME

    EAC提供了众多编码器的接口,其中就有我们推崇的LAME。选择菜单EAC/Compression Options。选择External Compression标签。

  • 选择 Use external program for compression。在Parameter passing scheme 下拉列表框中选择LAME MP3 Encoder。Program ,including path,used for commpression 中 输入 LAME.exe的路径。Additional command line options 中输入LAME的参数。CBR 模式编码的推荐参数:-b 320 -m s -h。VBR 模式编码推荐参数:-V 0,在一般情况下我们更推荐使用VBR模式,LAME的优势也在VBR模式可以充分体现。选上High quality。当输入了自定义参数后,Bitrate下拉列表说定义的项目将被忽略。为了更好的保存文件信息,选上Add ID3 tag。如果无须保存无损的WAV文件,请选择Delete WAV after commpression。

    如果你希望更好的保存歌曲信息到MP3文件,请继续把这段看完。点击Offset标签。

  • 在Write following text into ID3 Tag comment field 栏中填入你想使用的备注文字。继续点击ID3 Tag标签。

  • 所有选项全部选上即可。

  • 这就是使用后的实际效果,能够完美支持ID3v1,但对ID3v2支持不是很好。也许是我使用EAC版本有点小bug。当设置完成后,点击确定保存设置。

    当上面4个步骤全部设置好了后,EAC最重要的设置也宣告完成,其他部分的设置使用默认设置即可。放一张CD进去,选择好要编码的曲目,然后点击左边工具栏中的MP3按钮,CD到MP3的过程将自动完成,连命名都省去了,虽然第一次使用有点麻烦,都以后使用就不需要再辛苦了。用EAC+LAME非常方便,最重要的是,音质可以得到很高的保证。最好的抓音轨工具和最好的MP3编码器的组合至今还找不到可以匹敌的对手。

    C.2 WAV到MP3的解决之道

  • 在LAME 3.90正式版中,就附带了一个RazorLame 1.1.5的外壳控制程序,这也是LAME小组推荐使用的外壳程序。这个程序本身不存在太多设置,程序设计得很巧,你感觉不到后台运行的LAME.EXE。这个程序提供了大量现成的LAME参数配置文件供调用。

    选择菜单Edit/LAME Options。点击General标签。

  • 选择use below,设置自定义的输出文件夹。继续点击Expert标签。

  • 选择only use custom options。在Custom options中填入需要的参数,前面的文章中推荐过2组参数,同样适用于这里。点击 Load options可以载入设置文件,但我们不推荐。设置完成后点击OK按钮。

    RazorLame具有标准应用程序的界面,其他加载文件的操作就不多说了。加载好文件后,点击工具栏中的Encode按钮就开始进行编码了,Decode 按钮则实现MP3转化到WAV的操作,是一个逆过程。

    D、完美的播放

    目前运用最广泛的MP3播放器就是Winamp,但也不少人反映Winamp的回放音质不是很好。相对Microsoft Windows Media Player来说,Winamp在音质方面是要差不少,但Winamp有正确显示VBR时间长度和文件信息的能力。而Microsoft Windows Media Player对VBR的MP3支持不够好。似乎很难抉择,其实很简单。Winamp的功能的实现都是靠插件实现的,如果音质不好,我们可以找一个好的来替换Winamp自带的MP3解码插件。MAD插件就是我们需要的。这个插件有着更高的解码精度,和Winamp自带的相比,有更好的细节表现,各项表现更接近CD音质。MAD插件有点霸道,要使MAD生效,先要删除以前老的MP3解码插件,Winamp自带的插件名称为in_mp3.dll,位于Plugins文件夹下,删除后,将MAD插件Copy到这个文件夹下,重启Winamp就可以生效了。

    进入Winamp的插件设置模块。

  • Resolution项目中请不要选择大于16bits的选项,除非你确定你的声卡有24bits甚至32bits的回放能力,要么你会看到一个报错的警告提示框。Channels 选项中请选择Normal,这才是原汁原味的声道设置。如果希望看到播放VBR MP3时跳动的bitrate数值,则要取消Display average bit rate选项。MAD的设置很简单,就这么多而已,设置完成后,重启一下Winamp,你会听到比以前好很多的声音。在目前听过的MP3播放器当中,Winamp+MAD的组合是非常优秀的,支持VBR MP3很完善,可以正确显示文件时间长度,进度条也不会乱跳动。MAD唯一的美中不足就是不支持ID3v2,不过这不影响什么,对大部分人来说,ID3v1已经非常足够了。

    E、其他事项

    如果你制作MP3是为了放到硬件的MP3播放器上播放,你就必须考虑文件名和码率的问题了。不少MP3播放器没有采用专用的解码芯片,而是使用以前的VCD解码芯片的改进IC,受限于VCD音频流码率224k的限制,这样的机型无法播放224k以上码率的的MP3,而且这类机器不少。所以在这种情况下,我们推荐使用CBR方式编码MP3,推荐码率为224k。还有不少机器无法读取中文名的,因此在命名时请注意回避使用中文。如果能支持VBR MP3 和 大于224k的码率,基本就无需太多顾虑,现在这种机器越来越多了,不少带MP3功能的VCD/DVD都可以支持得不错。

    请评分
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    发表于2013.06.11 20:24:43
    17
    这帖子曾经上过电脑爱好者,前一段还搜出来过
    发表于2013.06.10 22:15:36
    16
    001.189.***.***
    001.189.***.***
    15
    现在有点追求的都听无损去了吧?!
    发表于2011.02.13 18:04:41
    14
    发表于2011.02.13 12:09:15
    13
    发表于2011.02.13 12:08:37
    12
    发表于2009.12.08 20:54:44
    11
    03
    那就直接用无损吧,大容量的MP3和硬盘很普及了啊
    发表于2009.11.15 11:19:12
    10
    发表于2009.08.30 09:11:20
    9
    建议再谈谈,ape、flac格是的文件,如何分曲,如何刻录成cd,网上有很多教程,都说的很含糊。
    发表于2009.08.27 10:26:45
    8
    202.111.***.***
    202.111.***.***
    发表于2003.10.20 15:42:51
    7
    发表于2003.09.27 13:44:00
    6
    发表于2003.05.01 09:49:52
    4
    发表于2003.04.30 20:36:28
    3
    发表于2003.04.30 19:45:41
    2
    提示
    本贴不可匿名回复,回复等级为:1 ,您现在正处在潜水状态
    回复
    验证码
    0977 为防止广告机贴垃圾,不得已而为之
    表情
    正文