Positionner et déplacer des rectangles vidéo dans l’espace de composition
[La fonctionnalité associée à cette page, DirectShow, est une fonctionnalité héritée. Il a été remplacé par MediaPlayer, IMFMediaEngine et Audio/Video Capture in Media Foundation. Ces fonctionnalités ont été optimisées pour Windows 10 et Windows 11. Microsoft recommande vivement que le nouveau code utilise MediaPlayer, IMFMediaEngine et Audio/Video Capture dans Media Foundation au lieu de DirectShow, si possible. Microsoft suggère que le code existant qui utilise les API héritées soit réécrit pour utiliser les nouvelles API si possible.]
Lorsque le VMR mélange plusieurs flux d’entrée, il positionne chaque flux dans un rectangle normalisé, appelé « espace de composition ». Dans l’espace de composition, les coordonnées (0.0, 0.0) à (1.0, 1.0) forment le rectangle vidéo visible. Toutes les coordonnées qui se trouvent en dehors de ce rectangle sont coupées.
Une application peut effectuer des effets spéciaux en déplaçant, étirant et réduisant la vidéo à partir d’un flux d’entrée, en modifiant le rectangle de destination dans l’espace de composition de ce flux. Si le rectangle spécifié a une taille différente de celle du rectangle vidéo natif, la vidéo native est réduite ou étirée pour s’adapter. Le rectangle de destination est spécifié en appelant la méthode IVMRMixerControl::SetOutputRect .
Par exemple, supposons que le flux 0 (qui correspond à l’épingle 0) contient le flux vidéo main et que le flux 1 (qui correspond à l’épingle 1) contient une vidéo secondaire. Le flux 1 peut être positionné complètement hors écran en spécifiant un rectangle normalisé de { -1.0f, 0.0f, 0.0f, 1.0f }. Le flux 1 peut ensuite être déplacé dans la zone visible en modifiant les côtés gauche et droit du rectangle lors des appels successifs à SetOutputRect :
Étiquette | Valeur |
---|---|
Temps | Rectangle |
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 } |
À l’heure t+10, la vidéo du flux 1 est entièrement visible. Dans cet exemple, la taille native du flux 1 a été conservée pendant son déplacement. Vous pouvez également étirer ou réduire le rectangle pour produire des effets intéressants. Vous pouvez également retourner la vidéo verticalement, en spécifiant une valeur supérieure à la partie inférieure, ou miroir la vidéo horizontalement, en spécifiant une valeur plus élevée pour la gauche que pour la droite.
Rubriques connexes