Umístění a přesunutí obdélníků videa v prostoru složení
[Funkce přidružená k této stránce DirectShow je starší funkce. Byla nahrazena MediaPlayer, MMFMediaEnginea Audio/Video Capture v Media Foundation. Tyto funkce jsou optimalizované pro Windows 10 a Windows 11. Microsoft důrazně doporučuje, aby nový kód používal MediaPlayer, MMFMediaEngine a Audio/Video Capture v Media Foundation místo DirectShow, pokud je to možné. Microsoft navrhuje, aby se stávající kód, který používá starší rozhraní API, přepsal, aby se nová rozhraní API používala, pokud je to možné.]
Když VMR mixuje více vstupních proudů, umístí každý proud do normalizovaného obdélníku označovaného jako "kompoziční prostor". Souřadnice (0,0, 0,0) do (1,0, 1,0) tvoří obdélník viditelného videa. Všechny souřadnice, které spadají mimo tento obdélník, jsou oříznuty.
Aplikace může provádět speciální efekty s pohybem, roztažením a zmenšením videa ze vstupního datového proudu změnou cílového obdélníku v prostoru pro složení daného datového proudu. Pokud je zadaný obdélník jinou velikost než nativní obdélník videa, bude nativní video roztaženo nebo roztaženo tak, aby se vešlo. Cílový obdélník je určen voláním IVMRMixerControl::SetOutputRect metoda.
Předpokládejme například, že stream 0 (který odpovídá pinu 0) obsahuje hlavní video stream a stream 1 (který odpovídá špendlíku 1) obsahuje sekundární video. Stream 1 lze umístit zcela mimo obrazovku zadáním normalizovaného obdélníku { -1.0f, 0.0f, 0.0f, 1.0f }. Stream 1 pak lze přesunout do viditelné oblasti úpravou levé a pravé strany obdélníku při následných voláních SetOutputRect:
Označit | Hodnota |
---|---|
Čas | Obdélník |
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 } |
V čase t+10 je video ze streamu 1 zcela viditelné. V tomto příkladu byla během přesouvání zachována nativní velikost datového proudu 1. Můžete také roztáhnout nebo zmenšit obdélník tak, aby vznikl zajímavé efekty. Video můžete také překlopit svisle tak, že zadáte větší hodnotu pro horní část, než je dolní, nebo video zrcadlí vodorovně zadáním větší hodnoty vlevo než vpravo.
Související témata