視訊埠針腳
[與此頁面相關的功能 DirectShow是舊版功能。 它已被 MediaPlayer、 IMFMediaEngine和 Media Foundation 中的音訊/視訊擷取取代。 這些功能已針對Windows 10和Windows 11進行優化。 Microsoft 強烈建議新程式碼盡可能使用 MediaPlayer、 IMFMediaEngine 和 音訊/視訊擷取 ,而不是 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_AutoShow 和 IVideoWindow::p ut_Visible 方法來隱藏影片。
對於電視微調器,擷取篩選器也可能有視訊埠 VBI 針腳 (PIN_CATEGORY_VIDEOPORT_VBI) 。 如果是,請將該釘選連接到 VBI Surface 配置器 篩選器。 如需詳細資訊,請參閱 檢視隱藏式輔助字幕。
相關主題