Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
[Das dieser Seite zugeordnete Feature DirectShow ist ein Legacyfeature. Es wurde von MediaPlayer, IMFMediaEngine und Audio/Video Capture in Media Foundation abgelöst. Diese Features wurden für Windows 10 und Windows 11 optimiert. Microsoft empfiehlt dringend, dass neuer Code mediaPlayer, IMFMediaEngine und Audio/Video Capture in Media Foundation anstelle von DirectShow verwendet, wenn möglich. Microsoft schlägt vor, dass vorhandener Code, der die Legacy-APIs verwendet, so umgeschrieben wird, dass nach Möglichkeit die neuen APIs verwendet werden.]
[Diese API wird nicht unterstützt und kann in Zukunft geändert oder nicht mehr verfügbar sein.]
In diesem Artikel wird die Alphamischung in DirectShow Editing Services (DES) beschrieben.
Alpha misst die Transparenz eines Pixels oder Bilds. In unkomprimierten 32-Bit-RGB-Videos definieren vier Komponenten jedes Pixel: ein Alphakanal (A) und drei Farbkomponenten (RGB). Ein Pixel mit dem Alphawert 0 (null) ist vollständig transparent. Ein Pixel mit dem Alphawert 255 ist undurchsichtig. Zwischen diesen Werten weist das Pixel verschiedene Transparenzgrade auf.
DirectShow definiert zwei Medientypen für 32-Bit-RGB-Video:
- MEDIASUBTYPE_ARGB32: Das Video ist 32-Bit-RGB mit einem gültigen Alphakanal.
- MEDIASUBTYPE_RGB32: Pixel sind 32 Bit, aber der Alphakanal ist nicht notwendigerweise gültig.
Legen Sie zum Durchführen der Alphamischung in DES den unkomprimierten Medientyp der Videogruppe auf MEDIASUBTYPE_ARGB32 fest. Rufen Sie in C++ die IAMTimelineGroup::SetMediaType-Methode auf. Im XTL-Format wird dies ebenfalls durch Festlegen des bitdepth-Attributs des group-Elements auf 32 erreicht.
Als Nächstes benötigen Sie Videodaten, die einen Alphakanal enthalten. Es gibt mehrere Optionen:
- Sie können eine AVI-Datei verwenden, die bereits 32-Bit-RGB-Video mit Alphadaten enthält. Derzeit wird Alpha für MPEG- oder WMF-Quelldateien (Windows Media Format) nicht unterstützt.
- DES unterstützt 32-Bit-Bitmapdateien (.bmp) und Targa-Dateien (.tga) mit Alphadaten.
- Sie können einen benutzerdefinierten Quellfilter schreiben, der 32-Bit-RGB-Daten mit Alpha erstellt. Der Ausgabemedientyp muss MEDIASUBTYPE_ARGB32 sein. Verwenden Sie den Filter als Unterobjekt in einem Zeitleiste Quellobjekt.
Wenn Ihre Videoquelle kein Alpha aufweist, können Sie einen Effekt verwenden, der Alphadaten erstellt. Der Alpha-Setter-Effekt legt den Alphakanal für das gesamte Bild auf einen konstanten Wert fest. Um das Alpha im Laufe der Zeit zu variieren, verwenden Sie die IPropertySetter-Schnittstelle mit dem Alpha Setter-Effekt. Die ursprüngliche Quelle muss nicht aus 32 Bit bestehen, solange der nicht komprimierte Medientyp der Gruppe MEDIASUBTYPE_ARGB32 ist.
Übergeben Sie schließlich das Video an einen Effekt oder Übergang, der die Alphamischung ausführt. Der Compositor-Übergang führt eine Alphamischung durch, und der Schlüsselübergang kann nach Alphawert schlüsseln.
Im folgenden XTL-Beispielprojekt wird eine Alphamischung durchgeführt:
<timeline>
<group type="video" bitdepth="32" width="320" height="240">
<track>
<clip start="0" stop="6" src="c:\Example.avi" />
</track>
<track>
<clip start="0" stop="6" src="c:\Example2.avi">
<!-- Alpha Setter effect. -->
<effect clsid="{506D89AE-909A-44f7-9444-ABD575896E35}" start="0" stop="6">
<param name="alpha" value="255">
<linear time="6" value="0" />
</param>
</effect>
</clip>
<!-- Key transition, with alpha keying. -->
<transition clsid="{C5B19592-145E-11d3-9F04-006008039E37}" start="0" stop="6">
<param name="KeyType" value="3" />
</transition>
</track>
</group>
</timeline>
Zugehörige Themen