Sunday, April 26, 2009

从ape/flac+cue 分轨转mp3

综合了下面几个帖子,写的一个简单脚本,功能是可以通过ape/flac文件,转换成320KBps的mp3(其实还有一些保证音质的具体参数,这里就不提了)
并且填写Id3v2的tag.其中一些具体的参数可以在shnsplit里面调节.里面都添加了相应的注释与提示.
其实不单只可以转换mp3,还可以转换成其它格式,比如分轨的flac与ape.
不过按道理来说320KBps的已经无法听出与CD的音质差异了吧.

保存为convert2mp3,使用方法如: 

convert2mp3 flac sample.cue sample.flac
 
<code>
#!/bin/bash
# require:
# shntool,cuetools,eyeD3

#Get the filenames
filetype="$1" # ape or flac
cuefile="$2"
bigfile="$3"

#Other variables
tracks=$(cueprint -d '%N' "$cuefile")

#Output general file information
cueprint -d '%P - %T\n' "$cuefile"
echo "Total number of tracks: " "$tracks"

#Split this bitch directly into MP3 files
cust='cust ext=mp3 lame -h -V0 -b 320 --vbr-new - %f' # change quality here
namestring="%p-%a-%n-%t" # performer - album - tracknumber - title
shnsplit -i "$filetype" -f "$cuefile" -o "$cust" -t "$namestring" "$bigfile"

#ID3 tag MP3 files
i=1
while [ $i -le $tracks ]; do
    artist[$i]=$(cueprint -n$i -t '%P' "$cuefile")
    album[$i]=$(cueprint -n$i -t '%T' "$cuefile")
    tracknum[$i]=$(cueprint -n$i -t '%02n' "$cuefile")
    title[$i]=$(cueprint -n$i -t '%t' "$cuefile")
    f="${artist[$i]}"-"${album[$i]}"-"${tracknum[$i]}"-"${title[$i]}".mp3
    eyeD3 --no-color --set-encoding=utf8 -a "${artist[$i]}" -A "${album[$i]}" -n "${tracknum[$i]}" -t "${title[$i]}" "$f"
    i=$[$i+1]
done
</code>


主要参考资料:
  1. http://www.hispasonic.com/comunidad/lame-t167400-15.html
  2. http://blog.punkid.cn/2008/05/26/tips-in-aggregate/
  3. http://kuihuadi.com/snow/tag/shnsplit/
  4. http://bbs.boletips.com/blbbs/thread-1379-1-1.html

2 comments:

X said...

没看懂,那代码怎么用?用什么工具呀?

Ivan Z. G. Xiao said...

@sisea

你好. 那些代碼是linux 操作系統上的tools.
windows下面也有類似的批處理工具,不過核心還是依賴lame這個工具 :)