次の方法で共有


IMediaDet インターフェイス

IMediaDet インターフェイスは、ストリームの数、メディア タイプ、時間幅、各ストリームのフレーム レートといった、メディア ファイル関連情報を取得する。ビデオ ストリームから個々のフレームを取得するメソッドも含まれている。メディア ディテクタ (MediaDet) オブジェクトは、このインターフェイスを公開する。

このインターフェイスを使ってファイルに関する情報を取得するには、以下の手順を実行する。

  1. CoCreateInstance を呼び出すことにより、MediaDet オブジェクトのインスタンスを作成する。クラス ID は CLSID_MediaDet である。
  2. IMediaDet::put_Filename を呼び出して、ソース ファイルの名前を指定する。
  3. IMediaDet::get_OutputStreams を呼び出して、ソース内の出力ストリームの数を取得する。
  4. IMediaDet::put_CurrentStream を呼び出して、特定のストリームを指定する。
  5. 次の任意のメソッドを呼び出す。

ビデオ フレームを取得するには、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 を使用。