Blu-rayからオーディオデータのみを抽出

試行錯誤した結果をまとめてみる。

  • DGAVCIndex(mpeg2の場合はDGIndex)で、m2tsを映像データとオーディオデータに分離。複数のオーディオが収録されている場合(だいたい、リニアPCMとドルビーデジタルまたはDTSなどが収録されている)は、それぞれ異なるファイルが出力される。
  • .dtsのデータはVLC Media Playerでwavに変換。
  • blu-rayの映像・音声データは.m2tsというファイルに入っているが、片面二層式のディスクの場合、二つに分割されているようなので、そのまま音声データを抽出すると二つのオーディオデータが得られる。wavに変換した後にこれをsoxというソフトウェアを用いて結合する。
  • 結合した結果に得られたオーディオデータを、曲単位で分割する必要があるが、これもsoxのtrimコマンドを使って実行可能。このコマンドを利用する場合は、切り出すオーディオデータの開始時間と、取り出す時間の二つを指定しないといけない。この情報は、BDInfoというソフトウェアを用いて取得可能。このソフトではチャプターの時間情報を取得できるので、この情報をそのまま流用する。再エンコードなどを行わない場合は、trimで分割するのもそれほど時間はかからない。
  • .pcmをsoxでwavに変換するのはなかなか難しい。.pcmというデータはsoxでいうところのrawデータ(headerless data)というものらしく、どのような条件でエンコードされているのかまったくファイル内部に記述されていないものらしい。そのためsoxで.pcmファイルをwavに変換する際には、読み込むデータのエンコード条件(ビット数やチャンネル数、サンプリングレートなど)を指定する必要がある。この情報もBDInfoで取得可能。しかしなぜか当方の環境では、最初の10分程度しか変換できなかった。ファイルサイズは入力ファイルと同じなのだが、実際に再生させてみると10分程度過ぎたところから、ノイズしか聞こえなくなる。

結局、pcmをwavに変換してitunesに入れることはとりあえず断念。dtsをwavにしたものをitunesに入れることにした。ただ、soxのtrimコマンドで分割したファイルをよく聞いていると、タイミングがずれていることが判明。二つのオーディオファイルをsoxで結合した際にずれたのか、それともそもそもVLC Media Playerでdtsをwavに変換した際にすこし間延びしたのかもしれない。とりあえず、2層目のm2tsでタイミングのずれが大きいので、trimコマンドに渡す開始時間を10秒程度ずらして再度分割させることになった。

なかなか面倒な作業である。今後はなんとかしてpcmをwavに変換したいものだ。エンコード条件を変えて(ビット数やサンプリングレートなどを引き下げて)、wavファイルに変換することも試してみたがかなり時間がかかる(実再生時間よりも長いことは確実)ので、途中で止めてしまった。

参考:http://sox.sourceforge.net/sox.html このヘルプページはわかりやすい。