メディア ディテクタの使い方
メディア ディテクタは、ストリームの個数、タイプ、時間幅など、ファイルに関する情報を取得するためのヘルパー オブジェクトである。メディア ディテクタには、ビデオ ストリームからポスター フレームを取得するメソッドも含まれている。これは、IMediaDet インターフェイスを公開する。
メディア ディテクタが機能するモードは 2 つある。メディア ディテクタのインスタンスを作成した時点では、特定のソース ファイルにはアタッチしていない。このモードでは、複数のソース ファイルからストリーム情報を取得できる。しかし、メディア ディテクタを使ってポスター フレームを取得すると、メディア ディテクタは "ビットマップ捕捉モード" に切り替わる。ビットマップ捕捉モードでは、メディア ディテクタは特定のビデオ ストリームにアタッチされ、ストリーム情報メソッドは機能しなくなる。また、メディア ディテクタを起動時のモードに戻す方法はない。そのため、必要なストリーム情報の取得はポスター フレームの取得の前に行う必要がある。そうでない場合は、ストリームごとにメディア ディテクタの新しいインスタンスを作成することになる。
ストリーム情報を取得する手順は以下のとおりである。
- IMediaDet::put_Filename を呼び出して、ソース ファイルの名前を指定する。
- IMediaDet::get_OutputStreams を呼び出して、ソース内のストリームの個数を取得する。
- IMediaDet::put_CurrentStream を呼び出して、ストリーム番号を指定する。以下のメソッドを 1 つ以上呼び出す。
- IMediaDet::get_StreamType : ストリームのメディア タイプを取得する。
- IMediaDet::get_StreamLength : ストリームの時間幅を取得する。
- IMediaDet::get_FrameRate : ビデオ ストリームのフレーム レートを取得する。
ポスター フレームを取得するには、前の手順と同じようにしてストリーム番号を指定する。IMediaDet::GetBitmapBits を呼び出してポスター フレームをバッファにコピーするか、IMediaDet::WriteBitmapBits を呼び出してポスター フレームをファイルに保存する。