5.1ch WAVEのチャンネル順 [ソフトウェア/PC関係]
何となく,5.1chのWAVEファイルって,何か特殊な形式のものかと思い込んでいたのだが,何のことはない,ただの6chのWAVEファイルだった。ステレオのWAVEファイルは2chなので,1サンプルあたりのデータが3倍になっただけのこと。そうと分かれば扱いは至極簡単である。
ところが厄介な問題がひとつ。6つのチャンネルがどういう順で並べられているかということ。WAVEファイル・フォーマットでは,チャンネル順まで厳密に定義されているわけではないらしい。なので,ツールによってまちまちだったりする場合があるのだとか。一応Microsoftでは推奨されるチャンネル順として,次のようなものを提示している。
1 | Front Left |
2 | Front Right |
3 | Front Center |
4 | Low Frequency (LFE) |
5 | Back Left |
6 | Back Right |
では今回使うツールはどうなっているのか。まず,5.1chのAACをデコードするのに使用するFAADの場合。5.1chのAACでは,内部で
1 | Front Center |
2 | Front Left |
3 | Front Right |
4 | Back Left |
5 | Back Right |
6 | Low Frequency (LFE) |
の順に並んでいて,FAADが使っているライブラリ(libFAAD)でもその順でデータを返してくるようになっている。但し,FAADの内部(ソース・コードでいうと,audio.cのwrite_audio_16bit関数)でMS推奨の順に並び替えているため,違いを気にする必要はない。FAADに付属するGUIのインターフェースである,aacDECdropも同じである。
次に,5.1ch WAVEをチャンネル毎に分割するための,BeSweet/BeLightの場合。コマンドプロンプトから次のように入力すると,分割された6つのWAVEファイルが生成される。
生成されたファイル名には,自動的に,C,FL,FR,LFE,SL,SRという文字列が付加されるのだが,「C=(Front) Center」,「FL=Front Left」,...なのかというと,どうもそれが怪しいという噂。ただ,Web上の情報だけだとどうもはっきりしない。そんな明確なバグなら,とっくに直っていてもよさそうだ。もしかしたら情報が古いだけかもしれない。というわけで,自分で実験してみることにした。自前ででたらめな6chのWAVEファイルを用意し,それがどういう風に分割されるのか見てみようというのである。BeSweet -core( -input "sample51.wav" -output "sample.wav" -6ch )
用意したのは次のようなデータ
ファイル名 | データ値 | チャンネル名 |
FL.wav | 01 | Front Left |
FR.wav | 02 | Front Right |
C.wav | 03 | Front Center |
LFE.wav | 04 | Low Frequency (LFE) |
SL.wav | 05 | Back Left |
SR.wav | 06 | Back Right |
となった。おやおや? 合ってるじゃん。Web上にある,チャンネル順が間違っているという情報は,FAADやaacDECdropが,チャンネル入れ替えをしていない前提のもののようだ。あるいは,古いバージョンではそうだったのかも知れない。少なくとも,今回使ったFAAD 2.6やaacDECdrop1.22なら大丈夫みたい。やっぱり情報というものは,自分できちんと確認しないといけませんな。
因みに,BeSweet v1.5b31では,FAADが出力するWAVE_FORMAT_EXTENSIBLEフォーマットのWAVEファイルを認識できないようなので要注意。まぁ,fmtチャンクがちょこっと大きいだけなのだけど。このくらい対応しといて欲しかった。
2009-02-01 15:49
nice!(0)
コメント(0)
トラックバック(0)
コメント 0