Arbeiten mit Videoframes

[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.]

Unkomprimiertes Video ist eine Sequenz von Bitmaps, die in schneller Folge wiedergegeben werden, in der Regel mit einer Rate von etwa 30 Bildern pro Sekunde. Da die meisten Videos in ein DirectShow-Filterdiagramm in einem komprimierten Format gelangen, durchläuft der Videostream in der Regel einen Decoder für die Dekomprimierung. Viele Decoder geben Daten in einem YUV-Format aus und lassen die endgültige Konvertierung in RGB für die Videohardware direkt vor dem Rendern. Wenn ein Decoder die DirectX-Videobeschleunigung verwendet, führt die Videohardware zusätzlichen Aufwand zum Decodieren des Bilds aus. Daher kann die endgültige Dekomprimierung der Bitmaps erst ausgeführt werden, wenn die Daten die Videohardware erreichen.

Um jedoch viele Arten von Videoanalyse, -verarbeitung oder -bearbeitung durchzuführen, ist es häufig erforderlich, nicht komprimierte Bitmaps in einem RGB- oder YUV-Format zu bearbeiten, bevor sie gerendert oder in eine Datei geschrieben werden. Diese Arbeit erfolgt in der Regel innerhalb eines Transformationsfilters, der auf der CTransformFilter-Basisklasse basiert, insbesondere in der Transform-Methode . Diese Methode empfängt einen Zeiger auf ein IMediaSample-Objekt , das die Videodaten kapselt. Die IMediaSample::GetPointer-Methode gibt einen Zeiger auf das erste Byte der Rohdaten zurück. Bei nicht komprimierten Frames bestehen diese Daten aus Pixeln, auf die direkt über den Filter zugegriffen oder geändert werden kann. Die folgenden Abschnitte enthalten Hintergrundinformationen, die Ihnen helfen, auf diese Weise effektiv mit DIB-Daten zu arbeiten.

Hinweis

Sie können die Bits auch mithilfe der Funktionen GDI, GDI+, DirectDraw oder Direct3D ändern, aber diese Techniken gehen über den Rahmen dieses Artikels hinaus.

 

Dieser Abschnitt enthält die folgenden Themen: