Wenn ich Video mit MediaRecorder aufzeichne, zeichnet es immer im Querformat auf, unabhängig von der tatsächlichen Geräteausrichtung. Wie erzwinge MediaRecorder/Kamera die richtige Orientierung?So ändern Sie die Videoausrichtung in MediaRecorder in Hochformat
Antwort
Weitere Informationen finden Sie unter Camera.Parameters.setRotation().
Es gibt dort ein Beispiel und anstatt setRotation (Rotation) aufzurufen, versuchen Sie mediaRecorder.setOrientationHint (Rotation) beim Videoaufzeichnen aufzurufen.
'mediaRecorder.setOrientationHint' ändert nur die Ausrichtung des Ausgabevideos, nicht die Ausrichtung der Vorschau. – Cat
Darüber hinaus funktioniert 'setOrientationHint' nur für MPEG4-Streams. Andere (wie MPEG2TS) implementieren diese Option nicht (sie wird stillschweigend ignoriert). – Lekensteyn
@Cat du hast Recht, irgendeine Idee, wie man das auf der Vorschau beheben kann? !! –
Werfen Sie einen Blick in die Dokumentation hier
http://developer.android.com/guide/topics/media/camera.html#capture-video
Die häufigste pitfall mit diesem Beispiel ist die setCamera(). SIE MÜSSEN DIE KAMERA SOFORT NACH DER HERSTELLUNG DES MEDIA RECORDER EINSTELLEN, sonst werden Fehler angezeigt.
Camera mCamera = getCameraInstance();
// adjust the camera the way you need
mCamera.setDisplayOrientation(90);
MediaRecorder recorder = new MediaRecorder();
recorder.setCamera(mCamera);
recorder.setAudioSource(MediaRecorder.AudioSource.DEFAULT);
recorder.setVideoSource(MediaRecorder.VideoSource.DEFAULT);
recorder.setProfile(CamcorderProfile.get(CamcorderProfile.QUALITY_HIGH));
recorder.setOutputFile(filePath);
// add any limits
recorder.setMaxDuration(50000); // 50 seconds
recorder.setMaxFileSize(5000000); // Approximately 5 megabytes
Ich hoffe, das hilft jemandem. Viel Glück!!
Dieser Code wird fehlschlagen, wenn Sie 'mCamera.unlock(); vor' recorder.setCamera (mCamera) 'aufrufen: http://developer.android.com/reference/android/hardware/Camera.html#unlock() – Cat
Ich habe mit diesem Problem auch vorher festgefahren. Ich habe festgestellt, dass Sie die Funktion setOrientationHint (API 9) verwenden können. Rufen Sie diese Funktion auf, bevor Sie MediaRecorder.prepare() aufrufen. Sie können den Ausrichtungsgrad für Ihr Ausgangsvideo festlegen.
Hoffe es hilft, viel Glück!
die folgenden zwei Codezeilen hinzufügen:
Camera.setDisplayOrientation(90); // use for set the orientation of the preview
mRecorder.setOrientationHint(90); // use for set the orientation of output video
vor:
mRecorder.setCamera(mCamera);
Voll Beispiel:
mRecorder = new MediaRecorder();
// Both are required for Portrait Video
mCamera.setDisplayOrientation(90);
mRecorder.setOrientationHint(90);
// Step 1: Unlock and set camera to MediaRecorder
mCamera.unlock();
mRecorder.setCamera(mCamera);
// Step 2: Set sources
mRecorder.setAudioSource(MediaRecorder.AudioSource.DEFAULT);
mRecorder.setVideoSource(MediaRecorder.VideoSource.DEFAULT);
// Step 3: Set a CamcorderProfile (requires API Level 8 or higher)
mRecorder.setProfile(CamcorderProfile.get(CamcorderProfile.QUALITY_480P));
mMediaRecorder = new MediaRecorder();
mServiceCamera.setDisplayOrientation(90);
mMediaRecorder.setOrientationHint(90);
mServiceCamera.unlock();
mMediaRecorder.setCamera(mServiceCamera);
mMediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
mMediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
mMediaRecorder.setProfile(CamcorderProfile.get(CamcorderProfile.QUALITY_HIGH));
was Set 'android: screenOrientation =" Landschaft "' deiner CameraActivity im Manifest – IgniteCoders