Shell's Home

Sep 8, 2006 - 1 minute read - Comments

音乐文件转换技巧和脚本

好久没动手写啥东西了,最近在准备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下

Tags: bash linux

上海有线通,不爽 有线通封锁变通办法

comments powered by Disqus