共用方式為


預覽影片 (DirectShow)

[與此頁面 相關的功能 DirectShow是舊版功能。 它已被 MediaPlayerIMFMediaEngineMedia Foundation 中的音訊/視訊擷取取代。 這些功能已針對Windows 10和Windows 11進行優化。 Microsoft 強烈建議新程式碼盡可能使用 MediaPlayerIMFMediaEngine音訊/視訊擷取 ,而不是 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);

此範例假設下列專案:

ICaptureGraphBuilder2::RenderStream方法的第一個參數會指定針腳類別;若為預覽圖表,請使用PIN_CATEGORY_PREVIEW。 第二個參數會將媒體類型指定為主要類型 GUID。 針對影片,請使用 MEDIATYPE_Video。 DV 裝置提供交錯的音訊和視訊,媒體類型 MEDIATYPE_Interleaved。 (如需 DV 擷取的詳細資訊,請參閱DirectShow.) 中的數位視訊

第三個參數是擷取篩選器 IBaseFilter 介面的指標。 此範例中不需要接下來的兩個參數。 它們可用來指定可能需要轉譯資料流程的其他篩選。 將最後一個參數設定為 Null 會導致擷取圖形產生器根據媒體類型選取資料流程的預設轉譯器。 針對影片,擷取圖形產生器一律會使用影片轉譯 篩選作為預設轉譯器。

注意

在 Windows XP 和更新版本中,雖然影片混合轉譯器 (VMR) 是 IGraphBuilder 方法的預設視訊轉譯器,但它不是 RenderStream 方法的預設轉譯器。 在任何平臺上,除非另有指定,否則擷取圖形產生器一律會使用舊的影片轉譯器篩選。

 

雖然釘選類別是以 PIN_CATEGORY_PREVIEW提供,但篩選準則是否實際具有預覽釘選並不重要;它可以有視訊埠釘選或只是擷取釘選。 不論是哪一種情況,擷取圖形產生器都會自動建置正確的圖形。

下圖顯示預覽影片的最簡單圖形。

影片預覽圖表

在此圖表中,擷取篩選器具有預覽釘選,它會直接連接到視訊轉譯器。

如果擷取篩選器只有擷取釘選,擷取圖形產生器會插入 Smart Tee 篩選器,將串流分割成擷取資料流程和預覽資料流程。 這在 結合影片擷取和預覽中詳細說明。

在某些情況下,視訊串流必須經過重迭混音器篩選。 如果是, RenderStream 方法會自動將它新增至圖形。

結合影片擷取和預覽

視訊