DirectShow 編輯服務架構
[與此頁面相關的功能 DirectShow是舊版功能。 它已被 MediaPlayer、 IMFMediaEngine和 Media Foundation 中的音訊/視訊擷取取代。 這些功能已針對Windows 10和Windows 11進行優化。 Microsoft 強烈建議新程式碼盡可能使用 MediaPlayer、 IMFMediaEngine 和 音訊/視訊擷取 ,而不是 DirectShow。 Microsoft 建議使用舊版 API 的現有程式碼盡可能重寫為使用新的 API。
[不支援此 API,未來可能會改變或無法使用。]
下圖顯示 DirectShow Editing Services (DES) 的架構。
- 時間軸:以來源剪輯、轉換和效果集合的形式呈現影片生產,並組織成一組巢狀曲目。 如需詳細資訊,請參閱 時程表模型。
- XML 剖析器:剖析時程表並產生輸出檔案,或讀取輸入檔並產生時程表。 DES 支援 XML 型持續性格式。
- 轉譯引擎:將時程表轉譯成可轉譯為串流媒體的表單。 根據預設,轉譯引擎會產生 DirectShow 篩選圖表, (請參閱下一節) 。
- 媒體定位器:維護媒體元件位置的快取。 當嘗試開啟媒體元件失敗時,DES 會根據成功開啟的歷程記錄,使用快取來尋找元素。
時程表是影片編輯專案的抽象描述。 它會指定專案中使用的來源剪輯、開始和停止時間、效果和轉換等等。 不過,時程表不會轉譯視訊和音訊串流。 相反地,轉譯引擎會將時間軸轉譯為篩選圖形,以供預覽或檔案輸出使用。 應用程式會操作時程表,而不是直接操作篩選圖形,這很麻煩且容易出錯。
下表列出一般影片編輯應用程式執行的主要工作,以及支援每個工作的介面。 稍後的各節會更詳細地描述這些工作和介面。
Task | 介面 () |
---|---|
建構或修改時程表。 | IAMTimeline 和其他 IAMTimelineXXXX 介面 |
儲存和載入專案檔。 | IXml2Dex |
預覽專案或將它寫入檔案。 | IRenderEngine、 ISmartRenderEngine |
此外,應用程式可能會執行下列部分或所有次要工作。
Task | 介面 () |
---|---|
取得媒體檔案的相關資訊。 (資料流程數目;每個 stream.) 的格式和持續時間 | IMediaDet |
設定轉換和效果的屬性。 | IPropertySetter |
在轉譯期間發生錯誤時收到通知。 | IAMSetErrorLog、 IAMErrorLog |
擷取海報框架。 | IMediaDet、 ISampleGrabber |