在Linux下刻录MP3 CD

Author: Xiaohua Date: 2001年 47期

?牐牶芏嗯笥讯荚谧约旱挠才讨斜4孀磐ü髦址绞绞占吹腗P3歌曲吧?大家有没有想过把它们刻录成一张音乐CD呢?现在网上已经有很多程序可以把MP3文件刻录成音乐CD,但是不同的音乐来源不同,而且它们的音量差异也很大;另外有些MP3文件是不兼容CD格式(16位,立体声,44.1KHz采样频率)的,必须得转换。下面,我就为大家介绍我在Linux下的音乐CD刻录秘笈。
  ?牐犖壹偕枘阆肟搪家徽偶辛舜硬煌胤绞占吹腗P3歌曲CD,这些歌曲的音质都各有差异,但是你又想得到最佳的音质,怎么办呢?下面介绍解决这一问题的具体步骤:
  #1?牐犠急竁AV素材
  ?牐犠ⅲ阂韵滤忻疃荚诵性赽ash中。
  ?牐?1.将所有的MP3文件拷贝到一个目录中。
  ?牐?2.如果有文件名中包含空格,先用下面命令把空格转换为下划线:
  ?牐爁or i in*.mp3?? do mv “$i”`echo $i | tr ' ' '_' `; done
  ?牐?3.使用如下命令将它们转换为WAV格式:
  ?牐爁or i in *.mp3; do mpg123 -w `basename $i .mp3`.wav $i; done
  ?牐燤pg123这个程序一般在任何一个GNU/Linux发行套件中都有,如果没有,可以到http//www.mpg123.de/下载。
  ?牐?4.需要注意的是:Mpg123会输出一些不正常的MP3文件。最开始时我以为是MP3文件原本是坏的,但是我用别的播放器播放时却发现它们是完好的。所以我们还可以用别的可以把MP3文件转换成WAV文件的MP3播放器,如:MAD mp3 解码器(可以在http://www.mars.org/home/rob/proj/mpeg/下载)。使用MADplayer时,命令行是:
  ?牐爁or i in *.mp3; do madplay -o`basename $i.mp3`.wav $i; done
  ?牐犠ⅲ好睿郻asename $i .mp3`.wav会用WAV代替MP3扩展名,有很多种方法可以实现这个功能,如:`echo “$i”|sed 's/.mp3/.wav/g'`。
  ?牐?5.执行“file.wav”命令,然后注意查看输出内容不同于16 bit stereo 44100 Hz 16位,立体声44100赫兹?牭乃形募亲“阉亲晃鲜龅墓娓瘛1热缫盐募?track01.wav转换为采样率是44.1KHz的,你可以使用如下命令:
  ?牐爏ox track01.wav -r 44100 track01-new.wav resample
  ?牐燬ox软件非常流行,很有可能在每个GNU/Linux发行套件中都缺省安装了它,你也可以从http://www.spies.com/Sox/下载得到。但是,命令行参数对于普通的用户来说总还是有一些神秘的,具体情况可参考http://www.spies.com/Sox/sox.tips.html,多了解一些使用技巧吧。
  ?牐犝;愕腤AV文件,以避免过分的音量失真。我使用了一个叫做normalize小软件,它可以从http://www.cs.columbia.edu/cvaill/normalize/下载得到。我使用如下的命令格式-m是指定mix模式,可以使得音量达到尽可能的大:
  ?牐爊ormalize -m*.wav
  #1?牐牽搪糃D
  ?牐犗衷谝丫泻芏喑绦蚩梢源覹AV文件中生成CD。我使用的cdrecord是命令行方式的,XCDROAST是图形模式的。对于cdrecord,你得知道你的刻录机的SCSI设备,如果你用的是ATAPI刻录机,请使用SCSI仿真器(内核模块ide-scsi)。假设你的ATAPI刻录机是以主设备连接在第二条IDE总线,那么它的设备文件应该是/dev/hdc,要使内核将其视为一个SCSI设备,请添加如下语句到/etc/lilo.conf文件中:
  ?牐燼ppend=“ hdc=ide-scsi”
  ?牐犎绻愕哪诤瞬荒茏远釉豬de-scsi模块,请添加模块安装命令行“insmod ide-scsi”到你的rc.local(或类似)文件中。一旦你的刻录机被当成SCSI设备时,请执行“cdrecord -scanbus”来查询应该给cdrecord传递什么样的“dev”参数。在我的系统上,屏幕输出以下信息:
  ?牐爏csibus1??
  ?牐?1,0,0 100) 'IOMEGA ' 'ZIP 250 ' '51.G' Removable Disk
  ?牐?1,1,0 101) 'HP ' 'CD-Writer+ 7100 ' '3.01' Removable CD-ROM
  ?牐犚虼耍頲drecord的命令行应该包含“dev=1,1,0”来指定设备。下面是在我系统上可用的完整命令行:
  ?牐燾drecord dev=1,1,0 -eject speed=2 -pad -audio *.wav
  ?牐犠ⅲ翰问?-pad是有必要的,因为CD上所有的音轨必须根据数据长度进行调整,而这通常跟MP3文件是不同的。