共用方式為


圖形建置概觀

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

若要建立篩選圖表,請從建立 Filter Graph 管理員的實例開始:

IGraphBuilder* pIGB;
HRESULT hr = CoCreateInstance(CLSID_FilterGraph,
    NULL, CLSCTX_INPROC_SERVER, IID_IGraphBuilder,
    (void **)&pIGB);

Filter Graph Manager 支援下列圖表建置方法:

  • IFilterGraph::ConnectDirect 嘗試在兩個端點之間建立直接連線。 如果針腳無法連線,則方法會失敗。
  • IGraphBuilder::Connect 連接兩個針腳。 可能的話,它會建立直接連線。 否則,它會使用中繼篩選來完成連線。
  • IGraphBuilder::Render 會從輸出端點開始,並建置其餘的圖。 此方法會視需要新增篩選,在下游運作,直到到達轉譯器篩選為止。
  • IGraphBuilder::RenderFile 會建置完整的檔案播放圖表。
  • IFilterGraph::AddFilter 將篩選新增至圖形。 它不會連接過濾器。 您必須在呼叫此方法之前先建立篩選器,可以透過呼叫 CoCreateInstance,或使用篩選器對應程式或系統裝置枚舉器來完成。

這些方法提供三種建置圖形的基本方法:

  1. Filter Graph Manager 會建置整個圖形。
  2. Filter Graph Manager 會建置圖形的一部分。
  3. 應用程式會建置整個圖形。

過濾圖管理員會構建整個圖形

如果您只想播放以可辨識格式撰寫的檔案,例如 AVI、MPEG、WAV 或 MP3,請使用 RenderFile 方法。 本文 如何播放檔案 說明如何執行此任務。

RenderFile 方法會從登錄中尋找可剖析檔案的來源篩選開始。 它會使用 URL 中的通訊協定 (例如 “https://” )、擴展名或檔案中預先定義的位元組模式來判斷來源篩選。 如需詳細資訊,請參閱 註冊自定義檔案類型

為了建置篩選圖的其餘部分,Filter Graph 管理員會使用一個反覆運算程序,其中它會採用篩選器在其輸出端子支援的媒體類型,並搜尋註冊表中接受該媒體類型作為輸入的篩選器。 它會使用數個準則來縮小搜尋範圍,並設定篩選的優先順序:

  • 篩選類別 用於識別篩選的基本功能。
  • 媒體類型描述篩選條件可接受的數據類型做為輸入或傳遞為輸出。
  • 優點 決定嘗試篩選的順序。 如果相同篩選類別中的兩個篩選都支援相同的輸入類型,篩選圖形管理員會選取具有最高優點值的篩選。 某些篩選器故意被給了一個較低的優先級,因為它們是為特殊用途設計的,只應由應用程式新增至圖表。

Filter Graph 管理員會使用 Filter Mapper 物件來搜尋登錄。

每新增一個篩選時,濾鏡圖表管理員 (Filter Graph Manager) 會嘗試將新增的篩選連接到先前篩選的輸出引腳。 篩選器會協商以判斷是否可以連接,如果可以,則決定連接所使用的媒體類型。 如果新的篩選無法連線,Filter Graph 管理員會捨棄它,並嘗試另一個篩選。 此過程會繼續,直到每個數據流都被處理完畢。

Filter Graph Manager 會建置圖形 的一部分

若要執行不只是播放檔案以外的動作,您的應用程式必須至少執行一些圖形建置工作。 例如,視訊擷取應用程式必須選取擷取來源篩選,並將其新增至圖形。 如果您要將數據寫入 AVI 檔案,則必須將 AVI Mux 和檔案寫入器篩選器新增至圖形。 不過,通常可以讓篩選圖形管理員完成圖形。 例如,您可以呼叫 Render 方法來渲染預覽圖釘。

應用程式會建置整個圖形

在某些情況下,您的應用程式可能需要藉由新增和連接每個篩選來建置圖形。 在此情況下,您可能特別知道應該將哪些篩選新增至圖表。 透過此方法,應用程式會呼叫 AddFilter來新增每個濾鏡,列舉濾鏡上的接腳,並藉由呼叫 ConnectConnectDirect來連接它們。

使用擷取圖形產生器 建置圖形

列舉裝置和過濾器

在篩選圖形中列舉物件

一般 Graph-Building 技術

建置篩選圖形