camera - Vorschau ändert sich nach dem Start der Videoaufnahme

8

Ich habe eine benutzerdefinierte Vollbildkamera im Querformat. Die Gerätegröße beträgt 1024 x 600.

Liste der unterstützten Vorschaugrößen
Breite x Höhe
 176 x 144
 320 x 240
 352 x 288
 528 x 432
 640 x 480
 1024 x 576
 1024 x 768

Unterstützte Videogrößenliste
Breite x Höhe
         176 x 144
         320 x 240
         352 x 288
         640 x 480
         720 x 480
         1280 x 720

Ohne setPreviewSize wird meine Vorschau von oben und unten und komprimiert länger von links und rechts.

Meine Vorschau getOptimalPreviewSize gibt die Größe 1024 x 576 zurück. und die nahe Videogröße ist 1280 x 720

Also, nach dem Einstellen der Videogröße und starten Sie die Videoaufnahme

  

mediaRecorder.setVideoSize (1280, 720);

ändert sich in der Oberflächenansicht (in diesem Fall gezoomt).

Ich frage mich, wie man Größenunterschiedsprobleme lösen kann und vor und nach der Aufnahme immer die gleiche Vorschau sehen?

    
ella2964823 24.05.2014, 11:42
quelle

3 Antworten

1

Tatsächlich ist dies ein kniffliges Problem und variiert mit der Hardware. Einfach gesagt, ist es manchmal unmöglich, auf einigen Hardware-Anbietern zu erreichen.

Hardwarehersteller legen fest, wie die Unterschiede zwischen der Auflösung des Rohkamerasensors, der Größe der angeforderten Vorschau und der Videoaufnahme und der nachfolgenden Verarbeitung (Größenänderung mit Interpolation) für die Vorschau in die Bildschirmauflösung zu handhaben sind / p>

Normalerweise beinhaltet die "Handhabung":

  • Cropping, was bedeutet, dass ein Teil der rohen Bilder - die Ränder - einfach verworfen werden.
  • Größenänderung - bedeutet, dass ein Interpolations- und Mittelungsalgorithmus verwendet wird, um ein Bild mit unterschiedlicher Größe zu erzeugen. Das Seitenverhältnis kann geändert werden.

Beide sind normalerweise so programmiert, dass sie entweder auf dedizierter Hardware oder auf der GPU laufen. System-on-Chip (SoC) bedeutet, dass neben der CPU und der GPU eine Menge dedizierter Hardware vorhanden ist, die der Hersteller (und nur der Hersteller) für die Verarbeitung verwenden kann.

Wenn Sie ein Gerät verwenden, das das Zuschneiden als Mittel zum Anpassen der Größe verwendet, stimmen die Vorschau und die endgültige Bild / Video-Grenze nicht überein. Sie können nichts dagegen tun, es sei denn, Sie passen zusätzlichen Verarbeitungscode für dieses Gerätemodell an.

Außerdem werden nicht alle Vorschaugrößen im selben Seitenverhältnis wie der Kamerasensor zurückgegeben. Dies sollte offensichtlich sein, da die Vorschaugrößen selbst eine Mischung aus Seitenverhältnissen haben.

    
rwong 08.07.2014 18:14
quelle
0

Ich würde einfach bei 1280x720 bleiben. Ich bin mir sicher, dass es einen erheblichen Leistungseinbruch gibt, wenn Sie diese Vorschaugröße verwenden, während Sie kein Video aufnehmen.

Lassen Sie mich erklären: Die Auflösung, die Sie in setPreviewSize() auswählen, hat zwei Effekte: Sie definiert das Seitenverhältnis des von Ihrer SurfaceView oder TextureView empfangenen Bildes und definiert die Größe des in Camera.PreviewCallback empfangenen Datenpuffers. onPreviewFrame () (wenn Sie setPreviewCallback () verwenden). Diese Auflösung wirkt sich nicht auf die Zeit zum Rendern der Vorschau auf der Oberfläche oder Textur aus, da diese Vorgänge in Hardware ausgeführt werden.

    
Alex Cohn 24.05.2014 14:32
quelle
0

Ich hatte ein ähnliches Problem. Dokumente zu lesen und sicherzustellen, dass alle Recorder- und Kamera-Methoden in der richtigen Reihenfolge aufgerufen werden, wurde behoben.

Ссылка

    
lxknvlk 13.06.2017 17:46
quelle