Media Foundation でメディア ファイルを再生する方法
このチュートリアルでは、 Media Session オブジェクトを使用してメディア ファイルを再生する方法について説明します。
前提条件
このトピックを読む前に、次の Media Foundation の概念について理解しておく必要があります。
Note
このトピックでは、デジタル著作権管理 (DRM) によって保護されているファイルを再生する方法については説明しません。 Microsoft Media Foundation の DRM の詳細については、「 保護されたメディア ファイルを再生する方法」を参照してください。
概要
メディア セッションでメディア ファイルを再生するには、次のオブジェクトを使用します。
- メディア ソースとは、メディア ファイルまたはその他のメディア データソースを解析するオブジェクトです。 メディア ソースは、ファイル内のオーディオまたはビデオ ストリームごとに ストリーム オブジェクトを 作成します。 デコーダーは、 エンコードされたメディア データを非圧縮のビデオとオーディオに変換します。
- ソース リゾルバーは、URL からメディア ソースを作成します。
- 拡張ビデオ レンダラー (EVR) は、ビデオを画面にレンダリングします。
- ストリーミング オーディオ レンダラー (SAR) は、スピーカーまたはその他のオーディオ出力デバイスにオーディオをレンダリングします。
- トポロジは、メディア ソースから EVR および SAR へのデータフローを定義します。
- メディア セッションは、データ フローを制御し、状態イベントをアプリケーションに送信します。 このプロセスを説明する図を次に示します。
メディア セッションを使用してメディア ファイルを再生するために必要な手順の一般的な概要を次に示します。
MFStartup 関数を呼び出して Media Foundation プラットフォームを初期化します。
MFCreateMediaSession を呼び出して、メディア セッションの新しいインスタンスを作成します。
ソース リゾルバーを使用してメディア ソースを作成します。 詳細については、「 ソース リゾルバーの使用」を参照してください。
メディア ソースを EVR と SAR に接続するトポロジを作成します。 この手順では、デコーダーを含まない 部分 トポロジがアプリケーションによって作成されます。 詳細については、「 再生トポロジの作成」を参照してください。
IMFMediaSession::SetTopology を呼び出して、メディア セッションでトポロジを設定します。
IMFMediaEventGenerator インターフェイスを使用して、メディア セッションからイベントを取得します。
IMFMediaSession::Start を呼び出して再生を開始します。 再生が開始されたら、 IMFMediaSession::P ause を呼び出して一時停止するか、 IMFMediaSession::Stop を呼び出して停止できます。
アプリケーションが終了したら、リソースを解放します。
- IMFMediaSession::Close を呼び出してメディア セッションを閉じます。 このメソッドは非同期です。 完了すると、メディア セッションから MESessionClosed イベントが 送信されます。 その後、残りの手順を実行しても安全です。
- IMFMediaSource::Shutdown を呼び出してメディア ソースをシャットダウンします。
- IMFMediaSession::Shutdown を呼び出してメディア セッションをシャットダウンします。
- MFShutdown を呼び出して Media Foundation プラットフォームをシャットダウンします。
次のセクションでは、完全なコード例を示します。
- 手順 1: CPlayer クラスを宣言する
- 手順 2: CPlayer オブジェクトを作成する
- 手順 3: メディア ファイルを開く
- 手順 4: メディア セッションを作成する
- 手順 5: メディア セッション イベントを処理する
- 手順 6: 再生を制御する
- 手順 7: メディア セッションをシャットダウンする
- メディア セッションの再生の例
関連トピック