DirectShow Editing Services アーキテクチャ

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

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

次の図は、 DirectShow Editing Services (DES) のアーキテクチャを示しています。

directshow 編集サービスのアーキテクチャ

  • タイムライン: 入れ子になったトラックのセットに編成されたソース クリップ、画面切り替え、効果のコレクションとしてビデオ制作を表します。 詳細については、「 タイムライン モデル」を参照してください。
  • XML パーサー: タイムラインを解析して出力ファイルを生成するか、入力ファイルを読み取ってタイムラインを生成します。 DES では、XML ベースの永続化形式がサポートされています。
  • レンダリング エンジン: タイムラインをストリーミング メディアとしてレンダリングできるフォームに変換します。 既定では、レンダリング エンジンは DirectShow フィルター グラフを生成します (次のセクションを参照)。
  • メディア ロケーター: メディア要素の場所のキャッシュを維持します。 メディア要素を開こうとすると、DES はキャッシュを使用して、正常に開かれた履歴に基づいて要素を検索します。

タイムラインは、ビデオ編集プロジェクトの抽象的な説明です。 プロジェクトで使用されるソース クリップ、開始時間と停止時間、効果と切り替えなどを指定します。 ただし、タイムラインはビデオストリームとオーディオストリームをレンダリングしません。 代わりに、レンダリング エンジンは、プレビュー出力またはファイル出力のために、タイムラインをフィルター グラフに変換します。 アプリケーションは、フィルター グラフを直接操作するのではなく、タイムラインを操作します。これは面倒でエラーが発生しやすくなります。

次の表に、一般的なビデオ編集アプリケーションが実行するメイン タスクと、各タスクをサポートするインターフェイスを示します。 以降のセクションでは、これらのタスクとインターフェイスについて詳しく説明します。

タスク インターフェイス
タイムラインを構築または変更します。 IAMTimeline およびその他の IAMTimelineXXXX インターフェイス
プロジェクト ファイルを保存して読み込みます。 IXml2Dex
プロジェクトをプレビューするか、ファイルに書き込みます。 IRenderEngineISmartRenderEngine

 

さらに、アプリケーションは、次のセカンダリ タスクの一部またはすべてを実行する場合があります。

タスク インターフェイス
メディア ファイルに関する情報を取得します。 (ストリームの数。各ストリームの形式と継続時間)。 IMediaDet
画面切り替えと効果のプロパティを設定します。 IPropertySetter
レンダリング中にエラーが発生したときに通知を受け取ります。 IAMSetErrorLogIAMErrorLog
ポスター フレームを取得します。 IMediaDetISampleGrabber

 

DirectShow Editing Services を使用したはじめに