2010-10-10 17 views

Antwort

16

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.

+7

'mediaRecorder.setOrientationHint' ändert nur die Ausrichtung des Ausgabevideos, nicht die Ausrichtung der Vorschau. – Cat

+3

Darüber hinaus funktioniert 'setOrientationHint' nur für MPEG4-Streams. Andere (wie MPEG2TS) implementieren diese Option nicht (sie wird stillschweigend ignoriert). – Lekensteyn

+0

@Cat du hast Recht, irgendeine Idee, wie man das auf der Vorschau beheben kann? !! –

6

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!!

+1

Dieser Code wird fehlschlagen, wenn Sie 'mCamera.unlock(); vor' recorder.setCamera (mCamera) 'aufrufen: http://developer.android.com/reference/android/hardware/Camera.html#unlock() – Cat

3

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!

+0

schön ... funktioniert gut! Danke dir! – Antonio

+2

dreht das Video nicht wirklich zur richtigen Ausrichtung, es ist nur ein Flag, das auf Video eingestellt ist, das einige Mediaplayer wie VCL ignorieren. – Nima

6

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)); 
1
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)); 
Verwandte Themen