共用方式為


視訊轉譯器篩選

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

影片轉譯器篩選器是強固、全用途的視訊轉譯器。

注意

在 Windows XP 和更新版本上,預設視訊轉譯器是影片 混合轉譯器篩選器 7 (VMR-7) 。 VMR-7 和視訊轉譯器都有易記名稱「影片轉譯器」。在先前的平臺上,影片轉譯器是預設轉譯器。 請參閱 選擇正確的轉譯器

 

如果視訊卡片支援 DirectDraw 和重迭表面,影片轉譯器就會使用 DirectDraw 和重迭表面。 Filter Graph 管理員會公開 IVideoWindow 介面,讓應用程式能夠在影片轉譯器上設定和擷取屬性。 透過較新的視訊卡,影片轉譯器支援全螢幕轉譯。 否則,篩選圖形管理員會自動切換至 全螢幕轉譯器 篩選以取得全螢幕模式。 如需詳細資訊,請參閱 IVideoWindow::p ut_FullScreenMode

  • ![重要]

    一般而言,此篩選準則的視訊視窗會處理篩選圖形管理員所建立背景工作執行緒上的訊息。 不過,如果應用程式直接使用 CoCreateInstance建立篩選,影片視窗就會處理應用程式執行緒上的訊息。 在此情況下,應用程式執行緒必須有訊息迴圈,才能將訊息分派至視訊視窗。 此外,執行緒在對影片轉譯器的最終 發行 呼叫之前不得結束,這會在篩選圖形管理員關閉時發生。 否則,應用程式可能會死結。

     

標籤
篩選介面 IBaseFilterIBasicVideoIBasicVideo2IDirectDrawVideoIKsPropertySetIMediaPositionIMediaSeekingIQualityControlIQualPropIVideoWindow
輸入釘選媒體類型 未壓縮的視訊格式。
輸入針腳介面 IMemInputPinIOverlay、IPin、IPinConnectionIQualityControl
輸出釘選媒體類型 不適用。
輸出針腳介面 不適用。
篩選 CLSID CLSID_VideoRenderer
屬性頁 CLSID 沒有屬性頁。
可執行檔 quartz.dll
優點 Windows XP 和更新版本: MERIT_UNLIKELY
篩選類別 CLSID_LegacyAmFilterCategory

 

備註

在偵錯版本的 Quartz.dll 中,如果LOG_TRACE偵錯層級設定為 5 或更新版本,影片轉譯器就會在視訊視窗上顯示每個畫面的時間戳記。 這些數位不會出現在 DLL 的零售版本中。 如需詳細資訊,請參閱 偵錯輸出函式

下列備註適用于篩選開發人員:

如果視訊圖形卡支援 YUV 重迭表面,影片轉譯器會接受 YUV 格式。 不過,當它第一次連線到上游篩選時,影片轉譯器需要符合目前監視器設定之色彩深度的 RGB 格式。 例如,如果目前的顯示設定為 24 位色彩,上游篩選準則必須能夠提供 24 位 RGB 視訊。 當篩選圖形切換至執行狀態時,影片轉譯器會交涉動態格式變更至適當的 YUV 色彩空間。

透過使用 RGB 類型連線,影片轉譯器可確保在無法使用 DirectDraw 的情況下,可以使用 GDI。 如果另一個應用程式正在使用視訊記憶體,如果視訊矩形在多監視器系統上跨越兩個監視器,或視訊矩形被另一個視窗完全遮蔽,則會切換至 GDI。

注意

視訊混合轉譯器不會執行這種類型的動態格式變更,而且不需要 RGB 媒體類型,因為它永遠不會使用 GDI 進行轉譯。

 

若要交涉格式變更,影片轉譯器會以新的媒體類型呼叫 IPin::QueryAccept 。 如果上游篩選準則傳回S_OK,影片轉譯器會將新媒體附加至下一個範例。 上游篩選應該在每個範例上呼叫 IMediaSample::GetMediaType 。 如果 GetMediaType 傳回非Null 值,表示格式變更,而且上游篩選應該透過切換輸出類型來回應。 (請勿在 QueryAccept 方法中切換類型。) 上游篩選應該至少接受主要 RGB 類型,而且最好支援常見的 YUV 類型。 在串流期間,視訊轉譯器可能會在 YUV 和 RGB 類型之間來回切換任何次數。 影片轉譯器不接受上游篩選所起始的動態格式變更。

當影片轉譯器繪製到 DirectDraw 重迭表面時,它會為其輸入釘選配置單一緩衝區。 如果上游篩選嘗試使用多個緩衝區強制連接,影片轉譯器將無法使用重迭表面。

DirectShow 篩選