Linux下,使用cue拆分flac文件并转换mp3
最近flac格式很流行。 虽然它有这样那样的好处。但是很多专辑都被做成了一个大flac文件。这使得使用播放器播放起来不太方便。而且,很多随身听也不支持这种格式。 在Linux下,通过几个程序的协作就可以把一个大的flac分拆成多个小的flac文件。并且转换出一份mp3格式的文件供随身听使用。 我们要用到的程序有: 1.shntool这个工具包中的shnsplit可以将大个头的flac根据cue文件拆分为每个轨道一个小flac文件 2.cuetool这个工具包中的cuetag脚本可以将cue文件中每个轨道的元数据写入拆分好的flac和mp3文件中 3.flac 通过这个程序,可以将flac解码成wav 4.lame 这可是大名鼎鼎的mp3编码器。通过它我们可以将wav编码压缩成mp3 如果用的是Ubuntu,这些软件可以很方便的通过如下命令来安装: sudo apt-get install shntool cuetools flaclame 下面,我们开始操作! 假设我们要拆分的flac文件是:cd.flac, cue文件是cd.cue。 首先, 我们拆分大块头flac: mkdir Tracks shnsplit -o flac -f cd.cue -t "%n - %t" -d "Tracks"cd.flac 这样我们就在当前目录下创建一个Tracks目录。并且把拆分好的文件都存入了这个目录。参数-t "%n -%t"使得所有的文件都按照:轨道号 + 空格 + 减号 + 歌名 + .flac 的形式来命名。 接下来,我们要把cue文件中元数据写入这些拆分好的文件中。元数据内容大概包括歌曲名称、轨道编号、CD名称等等。 cd Tracks cuetag ../cd.cue *.flac 这样, flac中就被写入了元数据。现在,这些flac文件可以导入到我们的播放器中播放了。并且可以正确的显示歌名。 接下来,我们要转换一份mp3格式的文件。用于随身听: for file in *.flac;do $(flac -cd "$file" | lame -hv -"${file%.flac}.mp3");done 看起来有些乱,其实很简单。这是一个循环。在循环中, 我们会针对每个.flac文件,调用flac进行解码, 然后传输给lame,lame对解码后的wav进行高品质动态码率(第4级别)编码。码率使用了默认的128kbps。最终保存的文件以.mp3结尾。而中间产生的wav数据直接通过linux的管道传递给了lame,不会占用磁盘。 最后,我们使用cuetag, 把元数据写入mp3文件中: cuetag ../cd.cue *.mp3 最终我们有了拆分后的flac和mp3。这样我们便可以在PC的播放器中,看到播放列表。也可以在mp3中,方便的选择想听的轨道了。 另外lame提供了非常丰富的选项, 大家可以按照自己的喜好通过更改参数来获得更高的品质或更小的体积。 还等什么, 快试试吧。 |