關於 DirectShow 篩選

[與此頁面 相關的功能 DirectShow是舊版功能。 它已被 MediaPlayerIMFMediaEngineMedia Foundation 中的音訊/視訊擷取取代。 這些功能已針對Windows 10和Windows 11進行優化。 Microsoft 強烈建議新程式碼盡可能使用 MediaPlayerIMFMediaEngine音訊/視訊擷取 ,而不是 DirectShow。 Microsoft 建議盡可能重寫使用舊版 API 的現有程式碼,以使用新的 API。]

DirectShow 會使用模組化架構,其中每個處理階段都是由稱為篩選準則的 COM 物件完成。 DirectShow 提供一組標準篩選器供應用程式使用,而開發人員可以撰寫自己的自訂篩選,以擴充 DirectShow 的功能。 為了說明,以下是播放 AVI 視訊檔案所需的步驟,以及執行每個步驟的篩選準則:

  • 從檔案讀取原始資料作為位元組資料流程, ([檔案來源] 篩選準則) 。
  • 檢查 AVI 標頭,並將位元組資料流程剖析為個別的視訊畫面和音訊範例, (AVI 分割器篩選) 。
  • 根據壓縮格式) ,將視訊畫面解碼 (各種解碼器篩選準則。
  • (視訊轉譯器篩選) 繪製視訊畫面。
  • 將音訊範例傳送至音效卡, (預設 DirectSound 裝置篩選器) 。

下圖顯示這些篩選準則。

使用壓縮視訊播放 avi 檔案的篩選圖表

如圖所示,每個篩選準則都會連接到一或多個其他篩選。 連接點也是 COM 物件,稱為 針腳。 篩選準則會使用釘選從下一個篩選準則移動資料。 圖表中的箭號會顯示資料移動的方向。 在 DirectShow 中,一組篩選準則稱為 篩選圖形

篩選準則有三種可能的狀態:執行中、已停止和暫停。 篩選執行時,它會處理媒體資料。 停止時,它會停止處理資料。 暫停狀態是用來在執行之前提示資料; 篩選圖表中的資料流程 一節會更詳細地描述此概念。 在非常罕見的例外狀況下,狀態變更會在整個篩選圖表中協調;圖形參數狀態中的所有篩選準則都處於一致狀態。 因此,整個篩選圖形也稱為執行、停止或暫停。

篩選可以分成數個廣泛的類別:

  • 來源篩選會將資料導入圖形中。 資料可能來自檔案、網路、相機或其他地方。 每個來源篩選會處理不同類型的資料來源。
  • 轉換篩選會採用輸入資料流程、處理資料,並建立輸出資料流程。 編碼器和解碼器是轉換篩選的範例。
  • 轉譯器 篩選準則位於鏈結結尾。 他們會收到資料,並將其呈現給使用者。 例如,影片轉譯器會在顯示器上繪製視訊畫面格;音訊轉譯器會將音訊資料傳送至音效卡;和檔案寫入器篩選器會將資料寫入檔案。
  • 分割器篩選器會將輸入資料流程分割成兩個或多個輸出,通常會沿著方向剖析輸入資料流程。 例如,AVI 分割器會將位元組資料流程剖析為不同的視訊和音訊資料流程。
  • 多工篩選器會接受多個輸入,並將其合併成單一資料流程。 例如,AVI Mux 會執行 AVI 分割器的反向運算。 它會接受音訊和視訊串流,並產生 AVI 格式的位元組資料流程。

這些類別之間的差異不是絕對的。 例如,ASF 讀取器篩選會同時做為來源篩選準則和分隔器篩選。

所有 DirectShow 篩選器都會公開 IBaseFilter 介面,而所有針腳都會公開 IPin 介面。 DirectShow 也會定義許多其他支援更特定功能的介面。

關於 Filter Graph 管理員

篩選圖形中的資料流程

DirectShow 篩選