次の方法で共有


Media Foundation でのエンコードの概要

このトピックでは、Microsoft Media Foundation で提供されているファイル エンコード API の概要について説明します。

用語

エンコード は、いくつかの異なるプロセスをカバーする一般的な用語です。

  1. オーディオまたはビデオ ストリームを圧縮形式にエンコードする。 たとえば、ビデオ ストリームを H.264 ビデオにエンコードします。
  2. 1 つ以上のストリームを 1 バイト ストリームに多重化 ("muxing") します。 通常、受信ストリームは最初にエンコードされます。 この手順には、エンコードされたストリームのパケット化が含まれる場合があります。
  3. 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 のセットであり、エンコード用にメディア セッションを簡単に構成できます。

次の図は、ソース リーダーとシンク ライターを示しています。

ソース リーダーとシンク ライターを使用したコード変換を示す図

エンコードとファイルのオーサリング

Media Foundation プログラミング: 基本的な概念