Wie ändere ich die Ausrichtung des Kameravorschau-Callback-Puffers?

9

Dies ist eine Variante einer Frage, die hier häufig gestellt wird, aber ich sehe diese genaue Situation nicht, also werde ich sie dort rauswerfen.

Ich habe einen onPreviewFrame-Rückruf eingerichtet. Dies erhält ein Byte [] mit NV21-Daten darin. Wir h.264 kodieren es und senden es als Videostream aus. Auf der anderen Seite sehen wir das Video schief, entweder 90 oder 270 Grad, abhängig vom Telefon.

Die Frage ist also, wie man die Daten dreht, nicht nur das Vorschaubild? Camera.Parameters.setRotation wirkt sich nur auf das Bild aus, nicht auf das Video. Camera.setDisplayOrientation gibt ausdrücklich an, dass es sich nur auf die Anzeigevorschau auswirkt, nicht auf die Frame-Bytes:

  

Dies hat keinen Einfluss auf die Reihenfolge der Byte-Arrays, die in onPreviewFrame (byte [], Camera), JPEG-Bildern oder aufgezeichneten Videos übergeben werden.

Gibt es also auf irgendeiner API-Ebene eine Möglichkeit, die Ausrichtung des Byte-Arrays zu ändern? Können Sie das NV21-Format (YVU-Format), in dem dieses Format enthalten ist, sogar drehen, oder muss ich es vorher RGB?

    
Hieronymus 08.12.2011, 18:30
quelle

2 Antworten

1

Es stellt sich heraus, dass Sie jeden Frame selbst drehen müssen, bevor Sie ihn senden. Wir haben am Ende libyuv benutzt, was eine sehr praktische Funktion hat, die sowohl rotiert als auch konvertiert - libyuv :: ConvertToI420

Ссылка

    
Hieronymus 04.06.2014, 17:50
quelle
0

Ich denke, dass Sie das Bild selbst drehen müssten. Ich habe es einmal mit dem NDK und der Leptonica-Bibliothek gemacht. Ein Blick auf meinen Code sollte Ihnen den Einstieg erleichtern. Die Leistung war okay auf einem Samsung Galaxy S2 (ich glaube, ich habe etwa 15 Bilder oder so). Da ich das Ergebnis in eine OpenGL-Textur pushen musste, musste ich auch die Farbbytes umdrehen. Sie könnten es beschleunigen, indem Sie das Bild direkt in der Schleife drehen, die die Yuv-Daten decodiert.

mPix32 und mPix8 wurden zuvor zugewiesen, um die konvertierten Daten zu speichern. Sie müssten natürlich durch Ihre eigene Bilddatenstruktur ersetzen.

%Vor%     
Renard 24.03.2012 21:07
quelle

Tags und Links