Videoframes lesen

Alles rund um die Programmierung mit Qt
Antworten
DimitriJunker
Beiträge: 47
Registriert: 8. September 2014 12:12

Videoframes lesen

Beitrag 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?
veeman
Beiträge: 277
Registriert: 3. Oktober 2012 01:43
Kontaktdaten:

Re: Videoframes lesen

Beitrag 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);
DimitriJunker
Beiträge: 47
Registriert: 8. September 2014 12:12

Re: Videoframes lesen

Beitrag 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...
Antworten