Partilhar via


Posicione e mova retângulos de vídeo no espaço de composição

[O recurso associado a esta página, DirectShow, é um recurso herdado. Foi substituído por MediaPlayer, IMFMediaEnginee Audio/Video Capture in Media Foundation. Esses recursos foram otimizados para Windows 10 e Windows 11. A Microsoft recomenda vivamente que o novo código utilize MediaPlayer, IMFMediaEngine e Captura de Áudio/Vídeo no Media Foundation em vez de DirectShow, quando possível. A Microsoft sugere que o código existente que usa as APIs herdadas seja reescrito para usar as novas APIs, se possível.]

Quando o VMR mistura vários fluxos de entrada, ele posiciona cada fluxo dentro de um retângulo normalizado, chamado "espaço de composição". Dentro do espaço de composição, as coordenadas (0.0, 0.0) a (1.0, 1.0) formam o retângulo de vídeo visível. Todas as coordenadas que estão fora deste retângulo são cortadas.

Um aplicativo pode executar efeitos especiais com mover, esticar e reduzir o vídeo de um fluxo de entrada, alterando o retângulo de destino no espaço de composição para esse fluxo. Se o retângulo especificado tiver um tamanho diferente do retângulo de vídeo nativo, o vídeo nativo será reduzido ou esticado para se ajustar. O retângulo de destino é especificado chamando o IVMRMixerControl::SetOutputRect método.

Por exemplo, suponha que o fluxo 0 (que corresponde ao pino 0) contém o fluxo de vídeo principal e o fluxo 1 (que corresponde ao pino 1) contém um vídeo secundário. O fluxo 1 pode ser posicionado completamente fora da tela especificando um retângulo normalizado de { -1.0f, 0.0f, 0.0f, 1.0f }. O fluxo 1 pode então ser movido para a área visível modificando os lados esquerdo e direito do retângulo em chamadas sucessivas para SetOutputRect:

Rótulo Valor
Hora Retângulo
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 }

 

mover um fluxo de vídeo no espaço de composição

No momento t + 10, o vídeo do fluxo 1 é completamente visível. Neste exemplo, o tamanho nativo do fluxo 1 foi mantido enquanto ele estava em movimento. Você também pode esticar ou encolher o retângulo para produzir efeitos interessantes. Você também pode inverter o vídeo verticalmente, especificando um valor maior para a parte superior do que para a parte inferior, ou espelhar o vídeo horizontalmente, especificando um valor maior para a esquerda do que para a direita.

Usando o modo de mistura VMR