Media Detector の使用
[このページに関連付けられている機能 DirectShow は、従来の機能です。 MediaPlayer、IMFMediaEngine、Media Foundation のオーディオ/ビデオ キャプチャに置き換わりました。 これらの機能は、Windows 10とWindows 11用に最適化されています。 新しいコードでは、可能であれば、DirectShow ではなく Media Foundation で MediaPlayer、IMFMediaEngine、Audio/Video Capture を使用することを強くお勧めします。 Microsoft は、レガシ API を使用する既存のコードを、可能であれば新しい API を使用するように書き換えるよう提案しています。]
[この API はサポートされていないため、今後変更または使用できない可能性があります。]
メディア検出機能は、ストリームの数、その種類、期間など、ファイルに関する情報を取得できるヘルパー オブジェクトです。 また、ビデオ ストリームからポスター フレームを取得するためのメソッドも含まれています。 IMediaDet インターフェイスが公開されます。
メディア検出器は、2つのモードのいずれかで動作します。 メディア検出機能のインスタンスを作成すると、特定のソース ファイルにアタッチされません。 このモードでは、複数のソース ファイルからストリーム情報を取得できます。 ただし、メディア検出機能を使用してポスター フレームを取得すると、 ビットマップ グラブ モードに切り替わります。 ビットマップ グラブ モードでは、メディア検出機能は特定のビデオ ストリームにアタッチされ、ストリーム情報メソッドは機能しなくなります。 さらに、メディア検出器を起動モードに戻す方法はありません。 そのため、ポスター フレームを取得する前に必要なストリーム情報を取得するか、ストリームごとにメディア検出機能の新しいインスタンスを作成します。
ストリーム情報を取得するには、次の操作を行います。
- ソース ファイルの名前 を使用して IMediaDet::p ut_Filename を呼び出します。
- IMediaDet::get_OutputStreams を呼び出して、ソース内のストリームの数を取得します。
-
IMediaDet::p ut_CurrentStream でストリーム番号を指定します。 次に、次のメソッドの 1 つ以上を呼び出します。
- IMediaDet::get_StreamType: ストリームのメディアの種類を取得します。
- IMediaDet::get_StreamLength: ストリームの期間を取得します。
- IMediaDet::get_FrameRate: ビデオ ストリームのフレーム レートを取得します。
ポスター フレームを取得するには、前の手順のようにストリーム番号を指定します。 次に、ポスター フレームをバッファーにコピーする IMediaDet::GetBitmapBits、またはポスター フレームをファイルに保存する IMediaDet::WriteBitmapBits を呼び出します。
関連トピック