Media Foundation でのエンコードの概要
このトピックでは、Microsoft Media Foundation で提供されているファイル エンコード API の概要について説明します。
用語
エンコード は、いくつかの異なるプロセスをカバーする一般的な用語です。
- オーディオまたはビデオ ストリームを圧縮形式にエンコードする。 たとえば、ビデオ ストリームを H.264 ビデオにエンコードします。
- 1 つ以上のストリームを 1 バイト ストリームに多重化 ("muxing") します。 通常、受信ストリームは最初にエンコードされます。 この手順には、エンコードされたストリームのパケット化が含まれる場合があります。
- MP4 ファイルや Advanced Systems Format (ASF) ファイルなどのファイルへの多重バイト ストリームの書き込み。 または、多重化ストリームをネットワーク経由で送信することもできます。
次の図は、これらの 3 つのプロセスを示しています。
このプロセスのバリエーションには、コード変換と再多重化が含まれます。
- コード変換 とは、既存のファイルのデコード、ストリームの再エンコード、エンコードされたストリームの再多重化を意味します。 コード変換は、あるエンコードの種類から別のエンコードの種類にファイルを変換するために行われる場合があります。たとえば、H.264 ビデオを Windows Media Video (WMV) に変換する場合などです。 エンコードされたビットレートを変更することもできます。ビデオフレームのサイズ。フレーム レート。またはその他の書式パラメーター。
- 再多重化 または 再多重化 は、デコード/エンコードステップなしで、ファイルを多重解除し、ストリームを再多重化することを意味します。 これは、オーディオ/ビデオ パケットの多重化方法を変更したり、ストリームを削除したり、2 つの異なるソース ファイルからストリームを結合したりするために行われる場合があります。
- トランスレート は、圧縮の種類を変更せずにビット レートが変更される、コード変換の特殊なケースです。 たとえば、高ビット レート ファイルを低いビット レートに変換できます。 トランスラットが使用される一般的なシナリオは、PC からポータブル デバイスにメディア コンテンツを同期する場合です。 ポータブル デバイスが高ビット レートをサポートしていない場合、ファイルはポータブル デバイスにコピーされる前にトランスレートされる可能性があります。
次のブロック図は、コード変換プロセスを示しています。
次のブロック図は、再多重化プロセスを示しています。
このドキュメントでは、 エンコード という用語を使用して、コード変換と再多重化の両方を含める場合があります。 それらを区別することが重要な場合、ドキュメントでは違いに注意してください。
「Media Foundation: Essential Concepts」も参照してください。
Media Foundation エンコード アーキテクチャ
Media Foundation アーキテクチャの最下位レイヤーでは、エンコードに次の種類のコンポーネントが使用されます。
- コード変換では、 メディア ソース を使用してソース ファイルを多重化します。
- エンコード プロセスでは、 Media Foundation Transforms を 使用してストリームをデコードおよびエンコードします。
- 多重化プロセスでは、 メディア シンク を使用してストリームを多重化し、多重化されたストリームをファイルまたはネットワークに書き込みます。
次の図は、コード変換シナリオでのこれらのコンポーネント間のデータ フローを示しています。
ほとんどのアプリケーションでは、これらのコンポーネントを直接使用しません。 代わりに、アプリケーションでは、これらの下位レベルのコンポーネントを管理する上位レベルの API を使用します。 Media Foundation には、エンコード用の 2 つの上位レベルの API が用意されています。
-
メディア セッションは、メディア ソースからコーデックを介して、最後にメディア シンクにデータを移動するエンドツーエンドのパイプラインを提供します。 アプリケーションはメディア セッションを制御し、メディア セッションからステータス イベントを受信します。
-
ソース リーダーは、メディア ソースと必要に応じてデコーダーをラップします。 これは、アプリケーションでエンコードまたはデコードされたサンプルを提供します。 シンク ライターは、メディア シンクとオプションでエンコーダーをラップします。 アプリケーションは、シンク ライターにサンプルを渡します。
次の図は、メディア セッションを示しています。
トランスコード API (青い網かけのボックス) は、Windows 7 で導入された API のセットであり、エンコード用にメディア セッションを簡単に構成できます。
次の図は、ソース リーダーとシンク ライターを示しています。
関連トピック