次の方法で共有


レンダリング エンジンについて

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

[この API はサポートされていないため、今後変更または使用できない可能性があります。]

この記事では、 DirectShow Editing Services (DES) がビデオ編集プロジェクトをレンダリングする方法について説明します。

DES では、プロジェクトはタイムラインとして表されます。 タイムラインは、ソース クリップの再配置やビデオ効果の追加など、ビデオ編集の最も一般的なタスクを簡略化するため便利です。 一方、DirectShow ストリーム アーキテクチャにはフィルター グラフが必要です。 したがって、プロジェクトをレンダリングするには、タイムラインをフィルター グラフに変換する必要があります。 これを行うコンポーネントは、 レンダー エンジンと呼ばれます。 DirectShow には、次の 2 つのレンダリング エンジンが用意されています。

  • 基本的なレンダリング エンジン: 圧縮されていない出力を提供するフィルター グラフを構築します。
  • スマート レンダリング エンジン: 圧縮された出力を提供するフィルター グラフを構築します。

スマート レンダリング エンジンは、スマート再圧縮を使用してパフォーマンスを向上させます。 スマート再圧縮では、元のファイル形式が最終的な出力形式と異なる場合にのみ、ソース ファイルが再圧縮されます。 形式が一致する場合、ソースは圧縮解除されません。 スマート再圧縮は、オーディオ圧縮ではなく、ビデオ圧縮でのみサポートされます。

プレビューの場合は、基本的なレンダリング エンジンを使用します。 スマート レンダリング エンジンはプレビューすることもできますが、圧縮ストリームを圧縮解除する必要があるため、効率は低くなります。 ファイルを書き込む場合は、スマート 再圧縮が必要な場合は、スマート レンダリング エンジンを使用します。 それ以外の場合は、基本的なレンダリング エンジンを使用します。 スマートな圧縮は、ファイルの書き込みに要する時間を大幅に短縮できます。

重要

Windows Media ファイルの読み取りまたは書き込みにスマート レンダリング エンジンを使用しないでください。

 

重要

どちらのレンダリング エンジンも、メッセージを処理する非表示ウィンドウを作成します。 メッセージをディスパッチするには、レンダリング エンジンを作成するスレッドにメッセージ ループが必要です。 また、そのスレッドは、レンダー エンジンとフィルター グラフ マネージャーが解放されるまで終了できません。 そうしないと、アプリケーションがデッドロックする可能性があります。

 

フィルター グラフの構築

フィルター グラフは、2 つの段階で構築されています。 最初のステージでは、レンダー エンジンによって "フロントエンド" が構築されます。これは、部分的なフィルター グラフです。 次の図は、一般的なフロントエンドを示しています。

フィルター グラフフロントエンド

サブシステムには、レンダリング エンジンが自動的にアセンブルするさまざまな特殊なフィルターが含まれています。 フロントエンドには、タイムライン内のグループごとに 1 つの出力ピンが含まれています。 出力ピンは、基本的なレンダリング エンジンを使用する場合は圧縮されていないデータを提供し、スマート レンダリング エンジンを使用する場合は圧縮データを提供します。

2 番目の手順では、出力ピンがレンダリング フィルターに接続されます。 プレビューの場合、レンダリング フィルターはビデオ レンダラーとオーディオ レンダラーです。 ファイル書き込みの場合、レンダリング フィルターはマルチプレクサー (多重化) フィルターとファイル ライター フィルターです。

フィルター グラフの完成

プロジェクトのプレビュー

プロジェクトをファイルに書き込む