管理影片編輯專案
[與此頁面 相關的功能 DirectShow是舊版功能。 它已被 MediaPlayer、 IMFMediaEngine和 Media Foundation 中的音訊/視訊擷取取代。 這些功能已針對Windows 10和Windows 11進行優化。 Microsoft 強烈建議新程式碼盡可能使用 MediaPlayer、 IMFMediaEngine 和 音訊/視訊擷取 ,而不是 DirectShow。 Microsoft 建議盡可能重寫使用舊版 API 的現有程式碼,以使用新的 API。]
[此 API 不受支援,未來可能會變更或無法使用。]
下列秘訣將協助您管理 DirectShow 編輯服務中的專案。
時間軸的變更
- 如果您在建置篩選圖形之後變更時程表,請再次呼叫 IRenderEngine::ConnectFrontEnd 以重建前端。 這通常不會影響圖形的其餘部分。 不過,轉譯引擎偶爾需要先刪除整個圖形,才能重建前端。 (例如,如果您新增或移除 group.) ConnectFrontEnd 方法會傳回S_WARN_OUTPUTRESET,表示它已刪除圖表。 如果發生這種情況,您的應用程式必須重建圖形的轉譯區段。
- 若要從時間軸完全移除所有物件,請呼叫 IAMTimeline::ClearAllGroups 方法。
清除
- 當您完成使用轉譯引擎時,請呼叫 IRenderEngine::ScrapIt 方法。 如同任何 COM 物件,請務必在完成使用時釋放每個介面指標。
- 轉譯引擎不會在時間軸上保留參考計數。 請勿在完成使用之前釋出時程表,並一律先在轉譯引擎上呼叫 ScrapIt 。
- 如果您釋放時間軸的所有參考,請勿使用該時間軸中的任何物件,即使您保留參考計數也一樣。
多個時間軸實例
- 請勿在時間軸之間移動時程表物件。 時間軸中的每個物件都必須由該時程表建立。 時間軸會保存內部快取,其中包含其所建立之物件的相關資訊;移動時間軸物件可能會中斷快取。
- 永遠不要使用具有多個時間軸的相同轉譯引擎實例。 轉譯引擎會保存具有時間軸相關資訊的快取。 多個時間軸會中斷快取,並導致無法預期的結果。 如果您需要兩個作用中的時程表,請針對每個時間軸建立個別的轉譯引擎實例。
- 時間軸可以使用多個轉譯引擎,但不能同時使用。 使用另一個轉譯引擎之前,請先刪除舊的轉譯引擎。 (當您從使用基本轉譯引擎進行預覽切換至智慧轉譯引擎進行檔案寫入時,您通常會執行這項操作。)
持續性
- 當您將專案儲存至 XML 檔案時,篩選圖表並不持續。 因此,您會遺失與智慧型重新壓縮、壓縮格式或壓縮參數相關的任何資訊。 載入專案之後,應用程式可以還原這些參數。
相關主題