Share via


コーデックの操作

[このページに関連付けられている機能 DirectShow は、従来の機能です。 MediaPlayerIMFMediaEngine、および Media Foundation のオーディオ/ビデオ キャプチャに置き換わりました。 これらの機能は、Windows 10とWindows 11用に最適化されています。 新しいコードでは、可能であれば、DirectShow ではなく Media Foundation で MediaPlayerIMFMediaEngineAudio/Video Capture を使用することを強くお勧めします。 Microsoft は、従来の API を使用する既存のコードを、可能であれば新しい API を使用するように書き直すよう提案しています。]

Microsoft Windows には、オペレーティング システム コンポーネントとしていくつかのコーデックが用意されています。 使用可能なコーデックには、常に、Windows リリースに含まれていた DirectX とWindows メディア プレーヤーのバージョンに付属するものが含まれます。 新しいバージョンの DirectX またはWindows メディア プレーヤー、または Windows Media SDK ランタイムがインストールされている場合は、追加のコーデックがインストールされる場合があります。 サード パーティは、ホスト システムに追加のコーデックをインストールする場合があります。これらのコーデックは、特定のアプリケーションでのみ動作するように設計されているか、DirectShow アプリケーションによる一般的な使用をサポートしている場合があります。

コーデックは、次の 3 つの異なる方法のいずれかで実装できます。

  • Video for Windows タイプのオーディオまたはビデオのインストール可能なコーデックとして、Video Compression Manager (VCM) または Audio Compression Manager (ACM) によって読み込まれます。 一般に、このテクノロジは非推奨と見なされ、その使用は推奨されません。 インストール可能なコーデックは、AVI 圧縮解除ラッパー フィルターを使用して DirectShow フィルター グラフに参加します。
  • DirectShow フィルターとして。 多くのサード パーティ製コーデックは、ネイティブ DirectShow フィルターとして実装されています。 そのようなフィルタの1つは、フラウエンホーファーMP3減圧フィルタである。 一般に、これらのフィルターは通常の方法でフィルター グラフに追加できます。 この規則の 1 つの例外は、一部の Windows Media™ Audio コーデックまたは Windows Media Video コーデックと Microsoft MPEG-4 コーデックをフィルター グラフに手動で追加できないことです。 これらのフィルターは、ASF リーダー フィルターと ASF ライター フィルターでのみ追加できます。
  • DirectX メディア オブジェクト (DMU)。 DMO ラッパー フィルターを使用して DirectShow フィルター グラフ内で使用するか、DirectShow ベース以外の他のストリーミング アプリケーションで個別に使用できるため、DMO はコーデックを実装するために推奨される方法です。 一部の Windows Media Audio および Windows Media Video コーデックは、DMU として実装されています。 Windows Media フィルターと同様に、これらの DMU は Windows Media SDK のコンテキストの外部では使用できません。 つまり、DirectShow では、ASF リーダーフィルターまたは ASF ライター フィルターを使用してのみグラフに追加できます。

GraphEdit では、これらすべての異なる種類のコーデックが次のカテゴリにまとめて表示されます。

  • オーディオコンプレッサー
  • ビデオコンプレッサー
  • DirectShow フィルター

ただし、これらのコーデックの多くは、サード パーティ、または他の Microsoft アプリケーションまたはオペレーティング システム コンポーネントによってインストールされ、他の DirectShow アプリケーションで使用するためのものではありません。 GraphEdit に表示されるコーデックの一覧は、ホスト システムで実行されている Windows のバージョンと、インストールされている DirectShow SDK のバージョンによっても異なります。