Seite 1 von 1

Videoframes lesen

Verfasst: 19. März 2016 01:02
von DimitriJunker
Hallo,

Vor längerer Zeit habe ich ein Programm geschrieben, daß Videos erzeugt, per VFW, zum Schreiben eines Frames (QImage) verwende ich:

Code: Alles auswählen

err = AVIStreamWrite(m_paviComp, m_frameNr++, 1, imFrame.mirrored().bits(),
            imHead->biSizeImage, AVIIF_KEYFRAME, NULL, &bytesW);
jetzt brauche ich das umgekehrte:

Code: Alles auswählen

BYTE* pDIB = (BYTE*) AVIStreamGetFrame(m_pFrame, index);
Laut: https://msdn.microsoft.com/de-de/librar ... 85%29.aspx
ist der Rückgabewert:
The frame data is returned as a packed DIB.
Wie kann ich diesen pDIB ein QImage kopieren?

Re: Videoframes lesen

Verfasst: 20. März 2016 12:08
von veeman
Das packet-DIB Format ist anscheinend ein normals DIB ohne Header.

Von daher sollte mit den nötigen Parametern ein einfache QImage instanziierung reichen.

-> QImage(const uchar * data, int width, int height, Format format);
-> QImage(const uchar *data, int width, int height, int bytesPerLine, Format format);

Re: Videoframes lesen

Verfasst: 23. März 2016 00:23
von DimitriJunker
Danke, aber irgendwie scheitert es schon beim AVIFileOpen, da kommt -2147221164 zurück, wenn ich das richtig sehe bedeutet das, daß der nötige Codec nicht vorhanden ist, bei einem Doppelklick im Explorer wird es aber abgespielt, also muß der Codec da sein...