次の方法で共有


Media Foundation アーキテクチャの概要

このトピックでは、Microsoft Media Foundation の一般的な設計について説明します。 特定のプログラミング タスクに Media Foundation を使用する方法については、「 Media Foundation プログラミング ガイド」を参照してください。

次の図は、Media Foundation アーキテクチャの概要を示しています。

メディア基盤アーキテクチャの概要を示す図。

Media Foundation には、2 つの異なるプログラミング モデルが用意されています。 図の左側に表示される最初のモデルでは、メディア データにエンドツーエンドのパイプラインが使用されます。 アプリケーションは、たとえば再生するファイルの URL を指定してパイプラインを初期化し、メソッドを呼び出してストリーミングを制御します。 図の右側に示されている 2 番目のモデルでは、アプリケーションはソースからデータをプルするか、コピー先 (またはその両方) にプッシュします。 このモデルは、アプリケーションがデータ ストリームに直接アクセスできるため、データを処理する必要がある場合に特に便利です。

プリミティブとプラットフォーム

図の下部から、 プリミティブ は Media Foundation API 全体で使用されるヘルパー オブジェクトです。

  • 属性 は、キーと値のペアのリストとして、オブジェクト内に情報を格納する一般的な方法です。
  • メディアの種類 は、メディア データ ストリームの形式を表します。
  • メディア バッファー は、ビデオ フレームやオーディオ サンプルなどのメディア データのチャンクを保持し、オブジェクト間でデータを転送するために使用されます。
  • メディア サンプル は、メディア バッファー用のコンテナーです。 また、タイム スタンプなどのバッファーに関するメタデータも含まれます。

Media Foundation Platform API には、非同期コールバックや作業キューなど、Media Foundation パイプラインで使用されるコア機能がいくつか用意されています。 特定のアプリケーションでは、これらの API を直接呼び出す必要がある場合があります。また、Media Foundation 用のカスタム ソース、変換、またはシンクを実装する場合は、それらを必要とします。

メディア パイプライン

メディア パイプラインには、メディア データを生成または処理する 3 種類のオブジェクトが含まれています。

  • メディア ソースは、 パイプラインにデータを導入します。 メディア ソースは、ビデオ ファイルなどのローカル ファイルからデータを取得する場合があります。ネットワーク ストリームから。またはハードウェア キャプチャ デバイスから。
  • Media Foundation Transforms (MFT) は、ストリームからのデータを処理します。 エンコーダーとデコーダーは、MFT として実装されます。
  • メディア シンクは データを使用します。たとえば、ディスプレイにビデオを表示したり、オーディオを再生したり、メディア ファイルにデータを書き込んだりします。

サード パーティは、独自のカスタム ソース、シンク、および MFT を実装できます。たとえば、新しいメディア ファイル形式をサポートするためです。

メディア セッションは、パイプラインを介したデータフローを制御し、品質管理、オーディオ/ビデオ同期、フォーマット変更への応答などのタスクを処理します。

ソース リーダーとシンク ライター

ソース リーダーシンク ライターは、基本的な Media Foundation コンポーネント (メディア ソース、変換、メディア シンク) を使用する別の方法を提供します。 ソース リーダーはメディア ソースと 0 個以上のデコーダーをホストし、シンク ライターはメディア シンクと 0 個以上のエンコーダーをホストします。 ソース リーダーを使用して、メディア ソースから圧縮または圧縮されていないデータを取得し、シンク ライターを使用してデータをエンコードし、データをメディア シンクに送信できます。

注意

ソース リーダーとシンク ライターは、Windows 7 で使用できます。

 

このプログラミング モデルにより、アプリケーションはデータフローをより詳細に制御でき、アプリケーションはソースからデータに直接アクセスできます。

メディア ファンデーション: 基本概念

メディア ファンデーションのアーキテクチャ