增強式視訊轉譯器
[此頁面所述的元件, 增強的視訊轉譯器是舊版功能。 它已被透過 MediaPlayer 和 IMFMediaEngine 元件公開的簡單視頻轉譯器(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 的一部分。
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的自定義演示者。 |
相關主題