IMediaDet インターフェイス
IMediaDet インターフェイスは、ストリームの数、メディア タイプ、時間幅、各ストリームのフレーム レートといった、メディア ファイル関連情報を取得する。ビデオ ストリームから個々のフレームを取得するメソッドも含まれている。メディア ディテクタ (MediaDet) オブジェクトは、このインターフェイスを公開する。
このインターフェイスを使ってファイルに関する情報を取得するには、以下の手順を実行する。
- CoCreateInstance を呼び出すことにより、MediaDet オブジェクトのインスタンスを作成する。クラス ID は CLSID_MediaDet である。
- IMediaDet::put_Filename を呼び出して、ソース ファイルの名前を指定する。
- IMediaDet::get_OutputStreams を呼び出して、ソース内の出力ストリームの数を取得する。
- IMediaDet::put_CurrentStream を呼び出して、特定のストリームを指定する。
- 次の任意のメソッドを呼び出す。
ビデオ フレームを取得するには、IMediaDet::GetBitmapBits または IMediaDet::WriteBitmapBits を呼び出す。返されるフレームは、常に 24 ビット RGB フォーマットである。
注 複数のファイルで同じ MediaDet オブジェクトを使わないこと。複数のファイルから情報やビデオ フレームを取得するには、別々の MediaDet インスタンスを使うこと。
IMediaDet インターフェイスは VIDEOINFOHEADER2 フォーマットをサポートしないため、このインターフェイスを使ってインターレース フィールドまたはインターレースに関する情報を取得することはできない。また、アップストリーム デコーダが VIDEOINFOHEADER2 のみをサポートする場合、IMediaDet は使えない。たとえば、MPEG-2 デコーダの場合などにこれが当てはまる。また、IMediaDet インターフェイスは、ファイル内のストリームで、ビデオでもオーディオでないものはすべて無視する。たとえば、ファイルにオーディオ ストリーム、データ ストリーム、ビデオ ストリームが含まれている場合、get_OutputStreams メソッドはオーディオとビデオの、2 つのストリームしか報告しない。
IUnknown から継承したメソッドに加えて、IMediaDet インターフェイスは次のメソッドを公開する。
メソッド | 説明 |
EnterBitmapGrabMode | メディア ディテクタをビットマップ グラブ モードに切り替え、フィルタ グラフの指定の時間をシークする。 |
get_CurrentStream | メディア ディテクタが現在使っているストリーム番号を取得する。 |
get_Filename | メディア ディテクタが現在使っているソース ファイルの名前を取得する。 |
get_Filter | メディア ディテクタが現在使っているソース フィルタへのポインタを取得する。 |
get_FrameRate | 現在のストリームのフレーム レートを取得する。 |
get_OutputStreams | メディア ソースに含まれるオーディオ ストリームとビデオ ストリームの数を取得する。 |
get_StreamLength | 現在のストリームの時間幅を取得する。 |
get_StreamMediaType | 現在のストリームのメディア タイプを取得する。 |
get_StreamType | 現在のストリームのメディア タイプのグローバル一意識別子 (GUID) を取得する。 |
get_StreamTypeB | 現在のストリームのメディア タイプの GUID を表す文字列を取得する。 |
GetBitmapBits | 指定されたメディア タイムのビデオ フレームを取得する。 |
GetSampleGrabber | ISampleGrabber インターフェイスへのポインタを取得する。 |
put_CurrentStream | メディア ディテクタで使うストリーム番号を指定する。 |
put_Filename | メディア ディテクタで使うソース ファイルの名前を指定する。 |
put_Filter | メディア ディテクタで使うソース フィルタを指定する。 |
WriteBitmapBits | 指定されたメディア タイムのビデオ フレームを取得し、それをファイルに書き込む。 |
要件
ヘッダー : Qedit.h をインクルードする。このヘッダー ファイルは、バージョン 7 以降の Microsoft® Direct3D® のヘッダーとは互換性がない。
ライブラリ : strmiids.lib を使用。