增強式視訊轉譯器

[此頁面所述的元件, 增強的視訊轉譯器是舊版功能。 它已被透過 MediaPlayerIMFMediaEngine 元件公開的簡單視頻轉譯器(SVR)所取代。 若要播放視訊內容,您應該將數據傳送到其中一個元件,並允許它們具現化新的視訊轉譯器。 這些元件已針對 Windows 10 和 Windows 11 優化。 Microsoft 強烈建議新程式代碼盡可能使用 MediaPlayer 或較低層級 的 IMFMediaEngine API 在 Windows 中播放視訊媒體,而不是 EVR。 Microsoft 建議將使用舊版 API 的現有程式代碼重寫為盡可能使用新的 API。]

增強式視訊轉譯器 (EVR) 是一個元件,會在使用者的監視器上顯示視訊。 EVR 有兩個版本:

  • 媒體基礎應用程式的EVR媒體接收。
  • DirectShow 應用程式的 EVR 篩選器。

這兩個版本都使用相同的內部對象來轉譯視訊,而且它們會共用許多相同的介面。

EVR 最多可以混合 16 個視訊串流。 第一個輸入數據流稱為 參考數據流。 參考數據流一律會先以迭置順序出現。 任何其他數據流稱為 子數據流,且會混合在參考數據流之上。 應用程式可以變更子數據流的迭置順序,但子數據流不能先在 z 順序中。

圖形驅動程式會決定支援哪些視訊格式,但通常受限於下列內容:

  • 參考數據流:無每圖元 Alpha 的漸進式或交錯 YUV(例如 NV12 或 YUY2):或漸進式 RGB。
  • 子數據流:具有每圖元 Alpha 的漸進式 YUV,例如 AYUV 或 AI44。

可用的子數據流格式可能取決於參考數據流的格式。 如需詳細資訊,請參閱 EVR 媒體類型交涉

在內部,EVR 會使用稱為 混音器 的物件,將輸入數據流中的畫面格複合到一個表面進行轉譯。 混音器也會執行除交和色彩校正。 混音器輸出是最終的複合式視訊畫面。 第二個物件,稱為 演示者 ,會將視訊畫面呈現至顯示器。 演示者會在轉譯及管理 Direct3D 裝置時排程畫面。 應用程式可以提供混音器或演示者的自定義實作。

輸出幀速率會鎖定至參考數據流。 每當子數據流接收新的畫面格時,混音器就會按住它們。 當參考數據流收到新的框架時,混音器會將該框架與子數據流框架組合在一起。 (如果參考數據流交錯,完整的參考框架可能需要一個以上的媒體範例。當混音器等候參考框架時,子數據流可以接收多個框架。 在此情況下,混音器只會捨棄先前的子數據流框架。

由於演示者會建立 Direct3D 裝置,因此也會負責與其他需要存取 DirectX 影片加速 (DXVA) 服務的管線對象共用裝置。 特別是,EVR 混音器會使用 DXVA 視訊處理服務來清除並混合視訊。 在 EVR 外部,軟體譯碼器可以使用 DXVA 進行加速視訊譯碼。 演示者會透過 Direct3D 裝置管理員 來共用 Direct3D 裝置。 下圖顯示EVR的內部架構。 (以灰色著色的軟體譯碼器不是 EVR 的一部分。

architectural diagram showing the evr.

EVR 介面

EVR 支援下列介面。 其中有些介面是由混音器或演示者實作。 對於每個介面,參考主題描述如何取得介面的指標。

介面 描述
IEVRFilterConfig 設定 EVR 篩選器上的輸入針腳數目(僅限 DirectShow)。
IEVRFilterConfigEx 設定 EVR 篩選條件(僅限 DirectShow)。
IEVRTrustedVideoPlugin 可讓EVR外掛程式轉譯受保護的視訊。
IMFDesiredSample 可讓EVR演示者向混音器要求特定畫面。
IMFQualityAdvise 可讓品質管理員調整 EVR 視訊品質。
IMFTopologyServiceLookup 可讓自定義混音器或演示者從EVR取得介面指標。
IMFVideoDeviceID 傳回EVR混音器或演示者的裝置標識碼。
IMFVideoDisplayControl 控制EVR顯示影片的方式。
IMFVideoMixerBitmap Alpha 將靜態位圖影像與影片混合。
IMFVideoMixerControl 控制增強式視訊轉譯器 (EVR) 如何混合視訊子數據流。
IMFVideoMixerControl2 控制視訊解交的喜好設定。
IMFVideoPositionMapper 地圖 輸入視訊數據流上的位置,到輸出視訊數據流上的對應位置。
IMFVideoPresenter 由 EVR 演示者公開。
IMFVideoProcessor 控制視訊處理,包括調整、雜訊篩選和詳細數據篩選。
IMFVideoRenderer 在EVR上設定混音器或演示者。
IMFVideoSampleAllocator 配置影片範例。

 

本節內容

主題 說明
使用 DirectShow EVR 篩選 如何在 DirectShow 應用程式中使用 EVR。
使用EVR媒體接收 如何在 Media Foundation 應用程式中使用 EVR。
使用影片顯示控制件 如何控制 EVR 在應用程式視窗內顯示視訊的方式。
使用影片混音器控制件 如何控制EVR混音器的運作方式。
EVR 媒體類型交涉 描述EVR如何決定它可以接受為輸入的視訊格式。
自定義混音器 如何撰寫EVR的自定義混音器。
如何撰寫EVR演示者 如何撰寫EVR的自定義演示者。

 

音訊/視訊播放