Ich bekomme die allgemeine Idee, dass die frame.data[]
je nachdem, welches Pixelformat ist das Video (RGB oder YUV) interpretiert wird. Aber gibt es einen allgemeinen Weg, um alle Pixeldaten vom Rahmen zu erhalten? Ich möchte nur den Hash der Rahmendaten berechnen, ohne ihn zu interpretieren, um das Bild anzuzeigen.Wie bekomme ich rohe Framedaten von AVFrame.data [] und AVFrame.linesize [], ohne das Pixelformat anzugeben?
AVFrame.h Nach:
uint8_t* AVFrame::data[AV_NUM_DATA_POINTERS]
Zeiger zu den Bild/Kanalebenen.
int AVFrame::linesize[AV_NUM_DATA_POINTERS]
Für Video, Größe in Bytes jeder Bildzeile.
Bedeutet das, dass, wenn ich nur aus data[i]
für linesize[i]
Bytes extrahiere, dann bekomme ich die volle Pixelinformationen über den Rahmen?
Danke, das ist was ich suche: D btw, bedeutet Flugzeug einen Farbkanal wie R/G/B oder Y/U/V? Ich habe versucht, nach der Definition zu suchen, aber mit diesen Schlüsselwörtern habe ich nicht viel Information bekommen. – vivienlwt
siehe meine Antwort auf http://StackOverflow.com/Questions/13286022 – pogorskiy
Wie kommen wir manuell kopieren, ohne 'avpicture_layout', wie' für (Anzahl der vertikalen Zeilen []) {Speicher kopieren bis zu Zeilengröße in einen Puffer und erhöhen Pufferzeiger nach Linesize} 'macht den Job ?? – nmxprime