[與此頁面相關聯的功能,DirectShow是舊版功能。 它已被 MediaPlayer、IMFMediaEngine和 Media Foundation 中的 音訊/視訊擷取所取代。 這些功能已針對 Windows 10 和 Windows 11 進行優化。 Microsoft強烈建議新程式代碼盡可能在媒體 基礎中使用 MediaPlayer、IMFMediaEngine 和 音訊/視訊擷取,而不是 DirectShow。 Microsoft建議使用舊版 API 的現有程式代碼,盡可能改寫成使用新的 API。]
若要建置影片預覽圖表,請呼叫 ICaptureGraphBuilder2::RenderStream 方法,如下所示:
ICaptureGraphBuilder2 *pBuild; // Capture Graph Builder
// Initialize pBuild (not shown).
IBaseFilter *pCap; // Video capture filter.
/* Initialize pCap and add it to the filter graph (not shown). */
hr = pBuild->RenderStream(&PIN_CATEGORY_PREVIEW, &MEDIATYPE_Video,
pCap, NULL, NULL);
此範例假設下列項目:
- pBuild 已初始化,如 《關於擷取圖形生成器》中所述。
- pCap 已初始化,方法是建立擷取篩選的實例,並將其新增至篩選圖形,如 選取擷取裝置中所述。
ICaptureGraphBuilder2::RenderStream 方法的第一個參數指定 pin 類別。若是預覽圖形,請使用 PIN_CATEGORY_PREVIEW。 第二個參數會將媒體類型指定為主要類型 GUID。 針對影片,請使用 MEDIATYPE_Video。 DV 裝置提供交錯的音訊和視訊,媒體類型為 MEDIATYPE_Interleaved。 (如需 DV 擷取的詳細資訊,請參閱 DirectShow 中的 Digital Video。
第三個參數是指向擷取篩選器的 IBaseFilter 介面的指標。 此範例中不需要接下來的兩個參數。 它們可用來指定可能需要用於呈現資料流的其他篩選器。 將最後一個參數設定為 NULL 會使擷取圖形產生器根據媒體類型選取數據流的預設轉譯器。 針對影片,擷取圖形產生器一律會使用 視訊轉譯器 篩選作為默認轉譯器。
注意
在 Windows XP 和更新版本中,雖然 Video Mixing Renderer (VMR) 是 IGraphBuilder 方法的預設視訊轉譯器,但它不是 RenderStream 方法的預設轉譯器。 在任何平臺上,除非另有指定,否則擷取圖形產生器一律會使用舊的影片轉譯器篩選。
雖然引腳類別被指定為 PIN_CATEGORY_PREVIEW,但濾波器實際上是否具有預覽引腳並不重要;它可以有視頻埠引腳或只是擷取引腳。 不論是哪一種情況,擷取圖形產生器都會自動建置正確的圖形。
下圖顯示預覽影片的最簡單圖形。
在此示意圖中,捕捉濾波器具有預覽連接針,可直接連接到視訊渲染器。
如果擷取過濾器只有擷取插針,擷取圖表建構器會插入 Smart Tee 過濾器,將串流分割成擷取串流和預覽串流。 這在結合影片擷取和預覽 更詳細地說明。
在某些情況下,視訊串流必須經過覆疊混合器濾鏡。 如果是,RenderStream 方法會自動將它新增至圖形。
相關主題