MP3ファイルの分割(ffmpeg, Ruby)

ffmpegRuby を使って、MP3ファイルを分割します。

こんな感じ。
cut_mp3.rb

file = DATA.gets.chomp
ts = DATA.gets.split.map {|t| t.split(":").map(&:to_i)}

Dir.chdir(File.dirname(file))
bname = File.basename(file, ".mp3")
ts.map {_1 * 3600 + _2 * 60 + _3}.each_cons(2).with_index(1) do |(s, e), i|
  `ffmpeg -i "#{file}" -ss #{s} -t #{e - s} "#{bname + ("_%02d" % i)}.mp3"`
end


__END__
/home/***/Music/TAPEMP3/Bach.mp3
00:00:00 00:18:20 00:36:57 00:56:20 01:14:23 01:38:45 01:58:20

これだと、パス /home/***/Music/TAPEMP3/Bach.mp3 を6ファイルに分割します。最初のファイルは 00:00:00~00:18:20 まで、2番目のファイルは 00:18:20~00:36:57 までで、最後のファイルは 01:38:45~01:58:20 までとなります。