音乐文件转换技巧和脚本
好久没动手写啥东西了,最近在准备LPIC1考试。Will everyone keep finger cross 4 me?嘿嘿——
这个题目是个大家伙,反正每天写一点,也不忙在一时。大家有啥需要了解的,也可以问在下面。我会更新的。
copyright:
本文所提到各种软件版权归各个软件开发者所有。文章内容及所有附属脚本为独创,按照GPL发布。
keyword:
音乐 格式 转换 脚本 标签 bash shell script mp3 midi ape flac cue
toc
directory:
1.文件格式解说
1.1.mp3/ogg
1.2.midi
1.3.ape
1.4.flac
1.5.cue/toc
1.6.wav
1.7.iso
2.文件转换
2.1.wav/mp3
2.2.wav/ape
2.3.wav/flac
2.4.midi2wav
2.5.iso/wav
3.转换细节问题
3.1.按照cue切割
content:
1.1.mp3/ogg
这两个是非常有名的音乐压缩文件,其中MP3是mepg II layer
3。不要以为是mpeg
III。一般来说,MP3都被认为是一种小巧但是音质比较差的格式。不过事实上,要指摘MP3的音质前,你先自己找找是否满足了一定条件。周围是否安静,没有噪音。音源是否高清晰(拿MP3还原出来的CD是没意义的)。声音设备是否足够好(至少也要是高质量的音响或者高档耳机,耳塞或者200-300的所谓音箱根本不用说)。如果没有上述条件,那么MP3的音质也算过的去的。MP3格式的压缩比值大约是10:1,和wav相比。另外,如果有CD的话,最好使用lame进行适当压缩。而不要为了方便随便使用一个压缩工具。压缩最好使用VBR格式。这种格式本质上没有什么变化,只是在信息流高的地方使用高的编码格式,以获得最高的质量/空间比值。ogg具体情况没有研究,不过使用上和MP3没有区别。
1.2.midi
midi是所有格式中唯一不记录音频数据的音乐格式。midi记录的实质上是发声事件,简单来说就是什么时候鼓响了一下,什么时候钢琴的哪个键被按下了。因此midi也是没有立体声效果的。除非你使用特殊的软件指定某个乐器演奏时候的位置,然后根据环境生成出相应的音乐文件。midi文件在当前主要是两个用途。一个是midi记录了乐手演奏时候的指法细节,也记录了曲子的曲谱。midi本质上就是谱子。另外一个是midi的超小体积使得在某些嵌入系统(例如手机)上面可以作为背景音乐。
1.3.ape
ape是一种无损压缩格式,你可以把ape看成是一种只能对wav作用的zip文件。压缩比一般是2:1。
1.4.flac
flac和ape基本差不多。
1.5.cue/toc
cue/toc不是音乐文件,他们是用于flac/ape等光盘的音轨定义。一个CD可以有多个音轨,iso会记录下音轨的切分方式。但是ape就不行了。于是eac等抓轨软件生成cue来切分音乐文件。往往看到ape的发行方式是一个ape和一个cue,直接打开ape往往是一首非常长的歌曲。其实切分信息在cue里面。虚拟光驱使用的bin文件也是一样,会有配套的cue文件。两者可以用cuetools和mkcue互相转换。
1.6.wav
wav文件又叫做PCM编码格式。这是一切音乐的基础。无论你是哪种格式,最后都会被还原成wav的某种格式或者变形,才能够从声卡中播放出去。当然,midi的情况特殊,不在此列。
1.7.iso
iso也不是音乐文件,但是和音乐的关系非常密切。大家都知道iso是光盘的镜像,其实说的还不确切。iso本身就是光盘内容严格1字节比1字节复制的结果。至于有的为什么有其他格式。那就涉及光驱设备工作和数据流/加解密的问题了。
另外说一个iso的问题,大家知道linux下面挂载iso的指令是
# mount -t iso9660 -o loop file /mnt
这其实是两个步骤,一个是
# losetup /dev/loop0 file
这是用来将文件虚拟成为设备。另外一个是
# mount -t iso9660 /dev/loop0 /mnt
这才是真的挂载指令。如果我们需要读取设备文件,当然是去读取/dev/loop0(或者其他loop设备)。
2.1.wav/mp3
格式转换的基础是wav,只要你转换的过去,任何格式可以通过wav进行无损转换。但是在转换到/从wav的时候是有损失的,因此转换次数越少越好。其中mp3和wav的转换是最简单基础的,但是也是最复杂的。因为lame为了优化音质,有非常多的选项。在这里就不逐渐讲述了。不过最简单的你可以用选项-h直接转换,而用–decode反向转换(除非需要转换到其他格式,否则是没有意义的,这样转换出来的wav不会比原来的mp3更清晰!严格定义来说,他们是同等清晰的,wav没有遗失任何信息)。
lame可以在这里找到:http://lame.sourceforge.net/
2.2.wav/ape
ape的转换需要使用mac,参数非常简单。 Compress (high): ‘-c3000’
Decompress:
‘-d’。有其他选项,不过注意压缩选项不关系到清晰度,只和大小有关。
mac可以在这里下载。http://supermmx.org/linux/mac/
这里也可以,http://sourceforge.net/projects/mac-port/
注意有两个部分,mac
port是真正的转换程序,xmms-mac只是xmms的调用插件,动态的转换ape文件到wav用来播放(我上面说过的~)。
2.3.wav/flac
和上面一样,To encode:
flac [-#] [INPUTFILE [...]]
-# is -0 (fastest compression) to -8 (highest compression); -5 is the default
To decode:
flac -d [INPUTFILE [...]]
To test:
flac -t [INPUTFILE [...]]
flac在debian里面已经附带了,大家开aptitude找找就有了。
2.4.midi2wav
2.5.iso/wav
是不是看不明白了?其实就是抓轨和刻录啦。抓轨的话,windows下面推荐eac,不过记得要有管理员帐户才可以用哦。这东西直接操作设备的。linux下面用cdparanoia好了,据说不错。刻录的话——看大家喜欢了
3.1.按照cue切割
其实这才是我写这个文档的核心意义,使用cue来切割音乐文件。一个大音乐文件当然不爽,所以我们要拿来切割一下。具体来说有两个切割方法,cue切割wav系列文件,cue切割mp3系列文件。
cue切割wav系列文件需要借助两个包,cuetools和shntool。
$cuebreakpoints disc.cue | shnsplit disc.wav
这个方法可以用来切割很多文件,未必是wav而已。根据shntool的说明,只要支持的格式,加个插件全可以切割。只是切割出来的文件会被很傻的命名成split-trackXXX.wav。需要根据cue再次重命名。如果你高兴,可以写一个脚本干这个事情,不过毕竟很傻。
而cue切割mp3系列文件则方便很多,只需要mp3splt一个包。
$mp3splt -ac cue mp3
最后各个按照音轨描述命名好的mp3就会自动生成,并且会自动生成mp3tag。这是我推荐的使用方法。
最后附上我写的脚本,可以自动识别ape或者flac文件,自动转换成mp3。并且判断是否有cue文件,存在的话自动给予切割。你可以放置在/usr/local/bin下