在組合空間中放置和移動視訊矩形
[與此頁面相關聯的功能,DirectShow是舊版功能。 它已被 MediaPlayer、imfMediaEngine 取代,並在媒體基金會 音訊/視訊擷取。 這些功能已針對 Windows 10 和 Windows 11 進行優化。 Microsoft強烈建議新程式代碼盡可能在媒體 基礎中使用 MediaPlayer、IMFMediaEngine 和 音訊/視訊擷取,而不是 DirectShow。 Microsoft建議使用舊版 API 的現有程式代碼,盡可能改寫成使用新的 API。]
當 VMR 混合多個輸入數據流時,它會將每個數據流放置在標準化矩形內,稱為「組合空間」。在組合空間內,座標 (0.0, 0.0) 到 (1.0, 1.0) 會形成可見的視訊矩形。 落在此矩形外的任何座標會裁剪。
應用程式可以藉由變更該數據流組合空間中的目的地矩形,以移動、伸展和縮小輸入數據流中的視訊來執行特殊效果。 如果指定的矩形的大小與原生視訊矩形不同,原生視訊將會壓縮或縮放以符合大小。 目的地矩形是藉由呼叫 IVMRMixerControl::SetOutputRect 方法來指定。
例如,假設數據流 0 (對應至 pin 0) 包含主要視訊串流,而數據流 1(對應至 pin 1)則包含次要視訊。 數據流 1 可以藉由指定 { -1.0f、0.0f、0.0f、0.0f、1.0f }的正規化矩形,完全關閉畫面。 接著,串流 1 可以修改矩形的左邊和右側,以 SetOutputRect來移至可見區域:
標籤 | 價值 |
---|---|
時間 | 矩形 |
t + 0 | { -1.0f, 0.0f, 0.0f, 1.0f } |
t + 1 | { -0.9f, 0.0f, 0.1f, 1.0f } |
t + 2 | { -0.8f, 0.0f, 0.2f, 1.0f } |
... | ... |
t + 10 | { 0.0f, 0.0f, 1.0f, 1.0f } |
在組合空間中移動視訊串流
t+10 時,串流 1 中的影片完全可見。 在此範例中,數據流 1 的原生大小會在移動時維持。 您也可以縮放或縮小矩形,以產生有趣的效果。 您也可以指定高於底部的頂端值,或水平鏡像視訊,藉由為左邊指定大於右邊的值,垂直翻轉視視訊。
相關主題