MediaRecorder Videoaufnahme im Hochformat

7

Ich versuche, eine benutzerdefinierte Video-App zu erstellen. Iwork verwendet Einstellungen nur in Manifest 2.2 (API 8).

Alles geht gut, aber ich verstehe nicht, warum das Hochformat-Video nicht von der Landschaft eins abweicht.

Um die geänderte Ausrichtung des Geräts zu erkennen, verwende ich diesen Code innerhalb von surfaceChanged ()

%Vor%

Funktioniert wie ein Zauber. Wenn ich die Ausrichtung der Geräteoberfläche ändere, wende ich mich an den Aufruf von "surfaceChanged", wo die Kamera auf "DisplayRotation" eingestellt ist.

Die Frage ist, wie man später feststellen kann, ob das Video entweder im Landscape-Modus oder im Hochformat aufgenommen wurde. Da ich alle Videos habe, werden diese im Querformat aufgenommen. Es hängt nicht von setDisplayOrientation ab, die nur den Vorschauprozess beeinflussen.

Ich erkunde auch das Problem, dass ich, wenn Standard-Kamera-App verwenden, schreibt es spezielle Tag in Videodatei (in MediaInfo gesehen): Rotation 90 für das Porträt Videos.

Aber MediaRecorder-Klasse nicht.

Scheint das ist das Problem. Wer muss das lösen?

    
Oleg Karakoz 16.08.2012, 18:19
quelle

2 Antworten

28

Es gefunden! In der Tat, Sie können die Vorschau ändern, können Sie das Video taggen, aber es gibt keine Möglichkeit, das Video tatsächlich zu ändern ... (vielleicht ein Geschwindigkeitsproblem oder etwas)

%Vor%

Um die Vorschau zu drehen, drücken Sie

%Vor%

Um das Video mit einer 90 ° -Drehung zu markieren, dreht das Telefon es beim Lesen automatisch.

Sie müssen also nur noch

%Vor%

Ich hoffe, es hilft; -)

    
Taiko 26.12.2012 21:21
quelle
8

camera.setDisplayOrientation (90) funktioniert nicht auf allen Geräten. Die folgenden Lösungen funktionieren perfekt in verschiedenen Geräten und behandeln auch Marshmallow-Laufzeitberechtigungen.

  

Siehe setCameraRotation-Methode

%Vor%

Bereiten Sie nun den Medienrekorder mit korrekter Drehung vor, so dass das aufgezeichnete Video in richtiger Ausrichtung abgespielt wird.

  

mediaRecorder.setOrientationHint (CameraPreview.rotate);

private boolean prepareMediaRecorder () {

%Vor%

Sie können das vollständige Beispiel herunterladen Ссылка

    
USKMobility 06.06.2016 05:13
quelle