共用方式為


圖形建置概觀

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

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

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

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

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

  1. 篩選圖形管理員會建置整個圖表。
  2. Filter Graph Manager 會建置圖形的一部分。
  3. 應用程式會建置整個圖形。

篩選圖形管理員會建置整個圖形

如果您只想要播放以辨識格式撰寫的檔案,例如 AVI、MPEG、WAV 或 MP3,請使用 RenderFile 方法。 如何播放檔案一文說明如何執行這項操作。

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

為了建置圖形的其餘部分,Filter Graph 管理員會使用反復程式,其中它會取得篩選在其輸出釘選上支援的媒體類型,並搜尋登錄中將接受該媒體類型做為輸入的篩選準則。 它會使用數個準則來縮小搜尋範圍,並排定篩選的優先順序:

  • 篩選類別可識別篩選準則的一般功能。
  • 媒體類型描述篩選可以接受為輸入或傳遞做為輸出的資料種類。
  • 優點會決定篩選準則的嘗試順序。 如果相同篩選類別中的兩個篩選都支援相同的輸入類型,篩選圖形管理員會選取具有最高優點值的篩選。 某些篩選準則會基於特殊用途而設計,而且只應該由應用程式新增至圖形,因此會特別提供低價值值。

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

新增每個篩選時,Filter Graph 管理員會嘗試將其連線到先前篩選的輸出釘選。 篩選準則會交涉以判斷它們是否可以連線,如果是的話,要用於連線的媒體類型。 如果新的篩選無法連線,篩選圖形管理員會捨棄它並嘗試另一個篩選。 此程式會繼續執行,直到轉譯每個資料流程為止。

篩選圖形管理員會建置圖形的一部分

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

應用程式會建置整個圖形

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

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

列舉裝置和篩選

列舉篩選圖形中的物件

一般Graph-Building技術

建置篩選圖形