Ubuntu 7.10下使用cue文件对flac/ape分轨及转码

Yeolar   2008-02-27 16:56  

通常在抓取CD音乐时,将其压制成一个单独的大文件,采用无损的flac/ape格式,并用cue文件来保存音轨信息。在Windows下可以使用千千静听进行分轨和转码,但在Linux下则要麻烦一些。

首先需要安装相关的编解码器。对flac文件编码和解码需要flac:

1 $ sudo apt-get install flac

对ape文件编码和解码需要mac,在源里没有,使用网上下载的包本地安装:

1 $ sudo dpkg -i mac_3.99-u4-b4-1_i386.deb

也可自行编译, 源文件在 这里 下载.

分轨工具使用shntool:

1 $ sudo apt-get install shntool

对cue文件索引的flac文件分轨:

1 $ shntool split -f CDImage.cue -t ""%n.%p - %t"" -o flac CDImage.flac -d outputdir
-f 指定分轨索引文件.
-t 指定输出文件的文件名格式, %n = track number, %p = performer, %a = album, %t = track title.
-o 指定输出文件的文件格式, 扩展名, 编码器和/或参数. 格式为: ""fmt [ext=abc] [encoder [arg1 ... argN (%f = filename)]]"".
-d 指定分轨后的flac文件的输出目录, 不指定的话在当前目录生成.

对ape文件分轨并转换为flac文件(ape分轨为ape不支持):

1 $ shntool split -f CDImage.cue -t ""%n.%p - %t"" -o flac CDImage.ape -d outputdir

shntool还可以指定转换参数, 把ape/flac镜像转换成其他音频格式. 例如, 转换为mp3:

1 $ sudo apt-get install lame   # 安装 lame 编码器
2 $ shntool split -f CDImage.cue -t ""%n.%p - %t"" -o ""cust ext=mp3 lame --r3mix > -b 320 --quiet - %f"" CDImage.ape -d outputdir

关于cue索引文件的说明:

cue文件的字符集最好与系统当前使用的字符集相同 (可用iconv转码, iconv -f scode -t tcode file), 否则最后生成的文件名可能为乱码.

有些cue文件格式不符合规范, 这时需要进行一些修改.

cue文件书写格式如下:

 1 CATALOG 0000000000000
 2 PERformER ""album performer""
 3 TITLE ""album name""
 4 FILE ""CDImage.ape"" WAVE
 5     TRACK 01 AUDIO
 6         TITLE ""song name""
 7         PERFORMER ""song performer""
 8         INDEX 01 00:00:00
 9     TRACK 02 AUDIO
10         TITLE ""song name""
11         PERFORMER ""song performer""
12         INDEX 00 04:21:45
13         INDEX 01 04:24:28
14     TRACK 03 AUDIO
15         TITLE ""song name""
16         PERFORMER ""song performer""
17         INDEX 00 08:42:33
18         INDEX 01 08:44:28

第1行: 可选, 为媒体编目码, 必须是13位阿拉伯数字.

第2行: 可选, 为整个唱片的表演家的名字, 必须用""""括起来.

第3行: 可选, 为唱片名, 必须用""""括起来.

第4行: 为文件名, 可以是绝对路径, 也可以是相对路径, WAVE表示该文件是音频文件. 注意, 如果使用相对路径, 则cue文件和ape文件必须在同一路径下, 否则播放或刻录的时候cue无法定位文件.

第5行: 为当前刻录的光轨及光轨的类型. AUDIO表示光轨的类型是音频. 数字必须是从01开始的2位阿拉伯数字, 升序排列, 绝不可以跳跃、空缺或重复.

第6行: 可选, 为该曲目的名字.

第7行: 可选, 为该曲目的表演家.

第8行: 为光轨中段落的索引号. 其中INDEX 00一般表示该光轨开始时的间歇 (留一段空白), 而INDEX 01则表示音乐开始了, 多段的索引: 02, 03等用得比较少, 一般表示交响乐中的段落等. 大部分CD播放机有INDEX显示功能, 能在播放时显示INDEX号码. 如果这段音乐有INDEX 00, 那么大部分CD机在选曲时将会自动跳跃到INDEX 01处进行播放, 而在顺序播放时, 会从INDEX 00处开始, 以保持曲间的间隙, 这时候, CD机的时间显示为负数. INDEX 01是必需的, 而INDEX 00等都是可选的. 索引号后面用冒号分开的数字, 表示该索引开始的时间. 第一段是分钟, 第二段是秒, 第三段是帧数(frame). 1秒钟的音乐包含75个帧, 数字从零开始, 到74为止. 注意: 这个时间是相对于整个映像文件的绝对值.

还有其他的一些可选的指令:

  • ISRC指令. 如: ISRC CNF120233501, 这是ISRC码的一种缩写. 由5个字符加7个阿拉伯数字构成, ISRC(International Standard Recording Code number) 是国际标准编码, 由国家码, 出版者码, 录制年码, 记录码和记录项码5部分构成. 每个专辑的ISRC码也是绝不重复的. 以上例子是中国太平洋影音公司出版的流淌的歌声“真情依旧”第八集, 其ISRC码为: CN-F12-02-355-00/A.J6, 其中的第一曲.
  • FLAGS指令. 是声轨的标志, 用来表示数字复制保护和声轨类型等信息. 比如: FLAGS DCP 4CH PRE SCMS. 这里, DCP(Digital-Copy-Permitted) = 数字复制许可, 4CH = 4通道, PRE(PRE-emphasis) = 预加重, SCMS(Serial-Copy-Management-System) = 连续复制管理系统. FLAGS指令比较罕见.
  • REM指令. 给cue文件阅读者看的注释, 作用是方便阅读cue文件, 并无具体操作.
  • CDTEXTFILE指令. 如: CDTEXTFILE ""Live.cdt"", 这表示将Live.cdt这个CD-TEXT信息文件的内容刻录到片子上去. 这里的cdt文件包含了所有的PERformER, TITLE等内容, 而且支持8种语言. cdt文件可以用专门的软件进行编辑. 不过EAC等一些软件不可使用该指令.

http://www.yeolar.com/note/2008/02/27/ubuntu-710cue-flac-ape/

http://www.yeolar.com/note/2008/02/27/ubuntu-710cue-flac-ape/