DirectShow Editing Services アーキテクチャ
[このページに関連付けられている機能 DirectShow は、従来の機能です。 MediaPlayer、IMFMediaEngine、Media Foundation のオーディオ/ビデオ キャプチャに置き換わりました。 これらの機能は、Windows 10とWindows 11用に最適化されています。 新しいコードでは、可能であれば、DirectShow ではなく Media Foundation で MediaPlayer、IMFMediaEngine、Audio/Video Capture を使用することを強くお勧めします。 Microsoft は、レガシ API を使用する既存のコードを、可能であれば新しい API を使用するように書き換えるよう提案しています。]
[この API はサポートされていないため、今後変更または使用できない可能性があります。]
次の図は、 DirectShow Editing Services (DES) のアーキテクチャを示しています。
- タイムライン: 入れ子になったトラックのセットに編成されたソース クリップ、画面切り替え、効果のコレクションとしてビデオ制作を表します。 詳細については、「 タイムライン モデル」を参照してください。
- XML パーサー: タイムラインを解析して出力ファイルを生成するか、入力ファイルを読み取ってタイムラインを生成します。 DES では、XML ベースの永続化形式がサポートされています。
- レンダリング エンジン: タイムラインをストリーミング メディアとしてレンダリングできるフォームに変換します。 既定では、レンダリング エンジンは DirectShow フィルター グラフを生成します (次のセクションを参照)。
- メディア ロケーター: メディア要素の場所のキャッシュを維持します。 メディア要素を開こうとすると、DES はキャッシュを使用して、正常に開かれた履歴に基づいて要素を検索します。
タイムラインは、ビデオ編集プロジェクトの抽象的な説明です。 プロジェクトで使用されるソース クリップ、開始時間と停止時間、効果と切り替えなどを指定します。 ただし、タイムラインはビデオストリームとオーディオストリームをレンダリングしません。 代わりに、レンダリング エンジンは、プレビュー出力またはファイル出力のために、タイムラインをフィルター グラフに変換します。 アプリケーションは、フィルター グラフを直接操作するのではなく、タイムラインを操作します。これは面倒でエラーが発生しやすくなります。
次の表に、一般的なビデオ編集アプリケーションが実行するメイン タスクと、各タスクをサポートするインターフェイスを示します。 以降のセクションでは、これらのタスクとインターフェイスについて詳しく説明します。
タスク | インターフェイス |
---|---|
タイムラインを構築または変更します。 | IAMTimeline およびその他の IAMTimelineXXXX インターフェイス |
プロジェクト ファイルを保存して読み込みます。 | IXml2Dex |
プロジェクトをプレビューするか、ファイルに書き込みます。 | IRenderEngine、 ISmartRenderEngine |
さらに、アプリケーションは、次のセカンダリ タスクの一部またはすべてを実行する場合があります。
タスク | インターフェイス |
---|---|
メディア ファイルに関する情報を取得します。 (ストリームの数。各ストリームの形式と継続時間)。 | IMediaDet |
画面切り替えと効果のプロパティを設定します。 | IPropertySetter |
レンダリング中にエラーが発生したときに通知を受け取ります。 | IAMSetErrorLog、 IAMErrorLog |
ポスター フレームを取得します。 | IMediaDet、 ISampleGrabber |
関連トピック