2011年7月10日日曜日

複数CDをまとめて1つのファイルにする

あ゛ーもう夏に入って日中は非常に暑くてたまらんですね。
先日物の整理をしていたら、某ドラマCDのシリーズが見つかって、
この際だからいつものMatroskaでまとめられないかなって思ったのが
今回の事の次第。

んでもって適当にEACとflacとmkvtoolnixでやってみようとしたら・・・
foobarで再生できなかったり、途中で音がなくなったりでなんじゃこりゃと
いろいろ調べて複数CDを1つにまとめる際には問題点が2つほどあることが
わかりました。
  • CUEシートの合成とトラック制限
EACでCUEシート+WAVでCDから取り込んだ後、各CDのWAVとトラック情報を
統合する必要があるのですが、CUEシート(CDDA)の規格上99トラックまでという
制限があります。また、CUEシートの結合は再生時間の計算なども必要で、
手動でやるには骨が折れます。
  • WAVE(RIFF)のサイズ制限
一般的なWAVファイルはリニアPCMの波形データにチャンク(ヘッダのようなもの)が
ついており、これにWAVEのサイズデータが記録されているのですが、これが
符号(無でしたorz)32ビットのため、約4GBまでしか取り扱えないという問題があります。


これらの問題を解決するために試行錯誤していたのですが、
結局いつもプレイヤーとして使っているfoobar2000と
検索で見つけたxrecodeIIを使うことにしました。
具体的な手順としては次のとおり
  1. EACでCUE+WAVでリッピング
  2. fb2kでWave64(RF64)にCDごとにCUE+WAV64に変換
  3. xrecodeIIでCUEシート結合・形式をRAWにする
  4. RAW→MP3/OGG/WAVPACKなどに変換(好みで)
  5. CUEシートを変換後の形式に整える
  6. mkvtoolnixでmkaコンテナに変換する
  7. fb2kで読み込ませ、CDタイトルなどを編集する
fb2kはWav64へのトランスコーディングとトラック情報の編集に、
xrecodeIIはCUEシートの結合とWAVの統合をさせています。

RF64(WAV64)は4GBを超えるWAV(PCM)を扱うために作られた規格のようです。
ただし、対応しているフロントエンドはあまり多くないようです。
後方互換性を持つため、RF64非対応のソフトは4GBまでの通常のwavとして
動作します。
RAWはリニアPCMのデータそのものです。ここから再生や変換を行うには
フロントエンドに本来WAVファイルのチャンクにある情報を与える必要があります。

なんでこんな回りくどい方法をしているのかというと、
fb2kは1ファイルにまとめる動作でなぜかCUEシートを出力しない
xrecodeIIはRF64は読めても書き出せない(設定項目が見つからない)
たいていのエンコーダがRF64チャンクを読めない
よってfb2kもxrecodeIIもエンコーダに渡すときはWAVで渡してしまう
という糞のような問題があるためです。
100トラック以上あるCUEシートの場合はMatroskaに変換すると
再生できるようになります。なんでんなもん出力するんだ



とりあえずRAW入力がありそうなエンコーダで試してみました、

・OGG Vorbis
rawファイルやリダイレクト、パイプによるPCM入力をサポートし、標準的な
WAVファイルの設定をデフォルト値で持ってくれるため、RAW→OGGの変換が
一番楽。

・LAME(MP3)
OGG同様、rawファイルをサポートし、標準的なデフォルト値を持つ。
ただし、なぜかフレームが一定値を超えると進捗率が100%になり、
勝手にエンコードを終わらせてしまうので、リダイレクトをしないと最後まで
エンコードしてくれない。なんでだ。

・FLAC
RAWファイル入力をサポートしているが、チャンクのパラメータを省略できない。
なぜか2GBで終わる。原因はまだ不明。どうも仕様くさい。

・TTA
RAWをサポートしてないのでダメ。

・WAVPACK
RAWファイルをサポートし、デフォルト値も持ってくれるのでロスレスでは使いやすい。
Matroskaコンテナにも入れられるのでロスレスで100トラック以上ひとまとめしたい場合におすすめ。

みたいな結果に。
不可逆でいいならOGGかMP3で。可逆は…バラでやってプレイリストにするのと
大差ないかも。やるならWAVPACKで。
不可逆はほかにも使えそうなコーデックがあるかも。

これで一応複数CDを1ファイルにするためのルーチンはできあがり。
試行錯誤が多くて疲れた・・・
あ、それと無圧縮ファイルを3種類使うので外付けHDDがあるといいですよ。
システムドライブでやっていて容量の警告がでてびびった。

0 件のコメント:

コメントを投稿