PCM 以外のコーデックが使われている場合の AVI ファイルのデータ構造やヘッダ情報によるコーデック識別の方法について解説したサイトがあれば知りたいです。
AVI ファイルの構造について一般的な説明をしたサイトや MSDN はいろいろ検索してみましたが、PCM の場合のみで、それ以外については情報がありません。たとえば、WAVE_FORMAT_PCM(1)の代わりにMP3ではどんな値が入っているのかも分かりません。また、PCM以外のオーディオを含むAVIファイルが手元にないので、解析してみることもできません。
AVIファイルを解析するライブラリを書くのが目的なので、AVI再生アプリケーションの紹介は不要です。AVI解析の助けになるツールの紹介は歓迎します。さまざまなオーディオ・コーデックを含む AVI ファイルのサンプルが置いてあるサイトも歓迎します。
MSDNのAVI RIFF ファイルのリファレンスによると、
コーデックは 'strh' (AVISTREAMHEADER) の fccHandler で指定します。
もっと詳しい説明は (英語ですが) OpenDML AVI File Format Extensions にあります。
出所不明ですが、同じ文書が多数検索で引っかかります。
信憑性が低いですが参考になれば。
http://www-user.tu-chemnitz.de/~noe/Video-Zeug/avi_docu/avi....
FFAnalyzer Support Page
RIFFのプラグインがある。
http://www.asahi-net.or.jp/~tb3r-kmgi/ffanalyzer/index.htm#f...
その他
1番目の文書、実戦的な内容でいいですね。
やはり wFormatTag が識別の鍵のようです。
読んでみると、「XXXフィールドの値をいい加減に書くアプリがあるので信用するな」とか書いてあって、この文書を書いた人もいろいろ苦労してるんだなと思いました。
回答ありがとうございます。
私も fccHandler に書いてあるのだろうと思い、fccType = "auds" となっているオーディオの strh の fccHandler を読んだのですが、PCM の場合、コーデックを示す文字列ではなく 0 が入っています。
また、http://www.microsoft.com/japan/developer/library/jpdx8_c/ds/...
に、「fccHandler メンバは、オーディオ ストリームでは使用しない。」のような記述があり、すっかり困ってしまいました(この記述は DV の場合だけかもしれませんが)。
MP3 の場合は fccHandler = "mp3" のようになっているのでしょうか?
英文の資料をざっと文書内検索した範囲では、該当箇所を見つけられなかったのですが、関連はしていそうなので読んでみます。