FLAC その3(再掲) [PC]
※8/25に書いたmixi日記の再掲です。
シェルスクリプトで、大量にあるimg+cueファイルをflac+cueファイルに変換したいのでLinuxを使うことにした。
ディストリビューションは簡単だと評判のUbuntuに決定。
VMWare Playerを使用して、Ubuntu12.04 LTSを仮想環境にインストール。
VMWare
Playerは仮想環境を構築するときにインストール用isoファイルをマウントできるので、かなり簡単にインストールができた。が、VMWareの簡易
インストールを使用すると日本語がインストールされていなかったので、仮想マシンを先に作成してからインストールしなおした。
Ubuntuのデスクトップ環境がかなり変わった。Unityというらしい。昔のGNOMEやKDEはかなりWindowsに近いものだったけど。Windows 7のタスクバーが左にあるイメージ。
当初懸念していた日本語ファイル名の文字化けが起こらなかったのは意外だった。進化してるんだね。
Ubuntuのインストール自体は若干手間取ったけれどもそんなに苦労は無かったが、img+cueファイルをflac+cueファイルに変換するシェルスクリプトを考えるのに徹夜してしまった。
最初はCDEmuを使おうとして、確かにマウントできてGUI上ではアクセスできるけど、cdparanoiaやcdda2wavからどうやってもアクセスできず断念。端末からどこにマウントされているのかわからなかった。mountコマンドで調べたり色々したけれども。
bchunkでimgファイルを直接wav化できるのは先に知っていて、どうしてもファイルがトラック単位で分割されてしまうので不採用だったのを、考えなおして分割されたwavを1つのwavファイルに結合する方法を考えた。
検索したところsoxというコマンドで結合できるらしいというのが分かったので、
1.bchunkでimgファイルを分割wav化
2.soxで分割wavを結合
3.flacでwavをflacファイルにする
という処理を試してみたところうまく行き、".img"を".flac"に、"BINARY"を"WAVE"に置換したcueファイルで、Windows上でマウントできた。
結局スクリプトファイルはこんな感じ。サブディレクトリまで検索するのは必要なくなったので、フォルダ内だけ検索するようにした。。
#!/bin/sh
for cuefile in *.cue
do
# imgファイルからcueシートの情報に沿ってトラックごとに分割してwavで切り出し
bchunk -w ${cuefile%cue}img $cuefile ${cuefile%cue}
# 分割したwavファイルを一つ(CD1枚分)にまとめる
sox *.wav ${cuefile%cue}wav
# CD1枚分のwavをflacに変換
flac -0 ${cuefile%cue}wav
# 途中で生成したwavファイルを削除
rm -f *.wav
done
純粋にスクリプトを書くよりもどのソフトが使えるかを検証するのに時間がかかった。
cueファイルの中身の置換は秀丸のgrep置換機能でやるつもり。
最初から面倒がらずにシェルスクリプトを作っていれば、手動でマウントして変換、という作業をやらなくて済んだな。たぶん10時間以上その作業に費やしていたはず。250ファイルくらいあって150ファイルくらい手動でやってた。
--- バッチ処理後 ---
うーん、なんかflacファイルが出来たり出来なかったり、不安定だなあ。
どうやらファイル名に空白が含まれているとうまく動かないらしい
http://deginzabi163.wordpress.com/2010/05/10/%E8%A6%9A%E6%9B%B8%E3%82%B9%E3%83%9A%E3%83%BC%E3%82%B9%E3%82%84%E7%A9%BA%E7%99%BD%E3%82%92%E5%90%AB%E3%82%80%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E5%90%8D%E3%81%AB%E5%AF%BE%E5%BF%9C%E3%81%A7%E3%81%8D/
対策を入れる
#!/bin/sh
# ファイル名に空白とか入っている場合の対策
IFS="
"
for cuefile in *.cue
do
# imgファイルからcueシートの情報に沿ってトラックごとに分割してwavで切り出し
bchunk -w ${cuefile%cue}img $cuefile ${cuefile%cue}
# 分割したwavファイルを一つ(CD1枚分)にまとめる
sox *.wav ${cuefile%cue}wav
# CD1枚分のwavをflacに変換
flac -0 ${cuefile%cue}wav
# 途中で生成したwavファイルを削除
rm -f *.wav
done
今度はバッチリ。
------ 仮想環境からWindowsへのファイル転送 -------
VMWarePlayreの仮想環境からD&Dコピーしようとすると、エラーが出る問題が出てきた。これは、一旦Windowsのシステ ムドライブのテンポラリフォルダににコピーしてから、目的の場所へ改めてコピーし、テンポラリフォルダの中身をクリアしないという仕様によるものだった。 D&DでコピーしたらWindowsのシステムドライブを圧迫し続けるというとんでもない仕様なのだ。
なので、手動でテンポラリフォルダをクリアしたところうまく行った。ただ、コピーするファイルが20GBほどあって、システムドライブの空きが10GBほどしか無かったので何回かに分ける必要があったが。
VMWareの仮想環境を空き容量が多いデータドライブに指定しているのだから、コピーのテンポラリフォルダもそこに作って欲しかった。テンポラリフォルダの中身もコピーが終わったらクリアすることは言うまでもなく。
はぁー疲れた。flacに圧縮したところ、119GBあったCDのデータが77.6GBになった。CDだけじゃなくて、CDの特典のDVDのデータも置いてあったりしているのでその分圧縮されていないけど。
コメント 0