Positionieren und Verschieben von Videorechtecke im Kompositionsraum
[Das dieser Seite zugeordnete Feature DirectShow ist ein Legacyfeature. Es wurde durch MediaPlayer, IMFMediaEngine und Audio/Video Capture in Media Foundation ersetzt. Diese Features wurden für Windows 10 und Windows 11 optimiert. Microsoft empfiehlt dringend, dass neuer Code nach Möglichkeit MediaPlayer, IMFMediaEngine und Audio/Video Capture in Media Foundation anstelle von DirectShow verwendet. Microsoft schlägt vor, vorhandenen Code, der die Legacy-APIs verwendet, um nach Möglichkeit die neuen APIs zu verwenden.]
Wenn der VMR mehrere Eingabedatenströme mischt, positioniert er jeden Stream innerhalb eines normalisierten Rechtecks, das als "Kompositionsraum" bezeichnet wird. Innerhalb des Kompositionsraums bilden die Koordinaten (0,0, 0,0) bis (1,0, 1,0) das sichtbare Videorechteck. Alle Koordinaten, die außerhalb dieses Rechtecks liegen, werden abgeschnitten.
Eine Anwendung kann Spezielle Effekte beim Verschieben, Strecken und Verkleinern des Videos aus einem Eingabedatenstrom ausführen, indem sie das Zielrechteck im Kompositionsraum für diesen Stream ändert. Wenn das angegebene Rechteck eine andere Größe als das native Videorechteck aufweist, wird das native Video verkleinert oder gestreckt, um es anzupassen. Das Zielrechteck wird durch Aufrufen der IVMRMixerControl::SetOutputRect-Methode angegeben.
Angenommen, Stream 0 (entspricht Pin 0) enthält den Standard Videodatenstrom, und Stream 1 (entspricht Pin 1) enthält ein sekundäres Video. Stream 1 kann vollständig außerhalb des Bildschirms positioniert werden, indem ein normalisiertes Rechteck von { -1.0f, 0.0f, 0.0f, 1.0f } angegeben wird. Stream 1 kann dann in den sichtbaren Bereich verschoben werden, indem die linke und rechte Seite des Rechtecks bei aufeinander folgenden Aufrufen von SetOutputRect geändert wird:
Bezeichnung | Wert |
---|---|
Time | Rechteck |
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 } |
Zum Zeitpunkt t+10 ist das Video aus Stream 1 vollständig sichtbar. In diesem Beispiel wurde die native Größe von Stream 1 beibehalten, während er verschoben wurde. Sie können das Rechteck auch strecken oder verkleinern, um interessante Effekte zu erzielen. Sie können das Video auch vertikal drehen, indem Sie einen höheren Wert für den oberen als den unteren Wert angeben oder das Video horizontal Spiegel, indem Sie einen höheren Wert für die linke seite als die rechte angeben.
Zugehörige Themen