共用方式為


視訊埠針腳

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

具有硬體視訊埠的擷取裝置可能會使用 Microsoft® DirectX® 中的 VPE) 視訊埠延伸 (模組。 如果是,擷取篩選器會有視訊埠 (VP) 釘選。 沒有視訊資料會透過篩選圖表從 VP 釘選移動。 相反地,視訊畫面會在硬體中產生,並直接傳送至視訊記憶體。 VP 針腳可讓控制訊息傳送至硬體。

即使您的應用程式只執行沒有預覽的檔案擷取,也請務必連接 VP 釘選。 如果您將針腳保持未連線,圖形將無法正確執行。 這與預覽針腳不同,不需要連線。

不同的 DirectShow 視訊轉譯器提供不同的 VP 針腳支援:

  • 視訊轉譯器:將 VP 針腳連接到 重迭混音器 篩選器上的釘選 0,並將重迭混音器篩選器連接到視訊轉譯器。
  • VMR-7:將 VP 針腳連線到 影片埠管理員 篩選器,並將影片埠管理員連線至 VMR-7。
  • VMR-9:如果裝置有 VP 針腳,則無法使用 VMR-9,因為 Direct3D 9 不支援視訊埠。 使用影片轉譯器或 VMR-7。

針對視訊埠案例,建議透過視訊埠管理員和 VMR-7 使用重迭混音器和視訊轉譯器,因為並非所有驅動程式都支援視訊埠管理員。 一般而言,重迭混音器是視訊埠最可靠的選項。

ICaptureGraphBuilder2::RenderStream方法會在有 VP 針腳時自動插入重迭混音器。 如果您要在不使用此方法的情況下建置圖形,您應該檢查擷取篩選器上的視訊埠針腳,如果有的話,請將它連接到重迭混合器篩選,如下圖所示。

將視訊埠針腳連接到重迭混音器篩選器。

您可以使用 ICaptureGraphBuilder2::FindPin 方法來搜尋擷取篩選器上的 VP 針腳:

hr = pBuild->FindPin(
    pCap,                    // Pointer to the capture filter.
    PINDIR_OUTPUT,           // Look for an output pin.
    &PIN_CATEGORY_VIDEOPORT, // Look for a video port pin.
    NULL,                    // Any media type.
    FALSE,                   // Pin can be connected.
    0,                       // Retrieve the first matching pin.
    &pVPPin                  // Receives a pointer to the pin.
);

將重迭混合器新增至圖形之後,請再次呼叫 FindPin ,以在重迭混合器上尋找針腳 0。 針腳 0 一律是篩選上的第一個輸入針腳。

pBuild->FindPin(pOvMix, PINDIR_INPUT, NULL, NULL, TRUE, 0, &pOVPin);

呼叫 IGraphBuilder::Connect來連接兩個針腳。

pGraph->Connect(pVPPin, pOvPin);

然後將重迭器輸出針腳連接到影片轉譯器篩選。 您可以在 Filter Graph 管理員上呼叫 IVideoWindow::p ut_AutoShowIVideoWindow::p ut_Visible 方法來隱藏影片。

對於電視微調器,擷取篩選器也可能有視訊埠 VBI 針腳 (PIN_CATEGORY_VIDEOPORT_VBI) 。 如果是,請將該釘選連接到 VBI Surface 配置器 篩選器。 如需詳細資訊,請參閱 檢視隱藏式輔助字幕

進階擷取主題

在視訊擷取中使用重迭混音器