2010-10-10 21 views

Respuesta

16

consulte Camera.Parameters.setRotation() para obtener más información.

Hay un ejemplo allí y en lugar de llamar a setRotation (rotación) intente llamar a mediaRecorder.setOrientationHint (rotación) al grabar video.

+7

'mediaRecorder.setOrientationHint' solo cambia la orientación del video de salida, no la orientación de la vista previa. – Cat

+3

Además, 'setOrientationHint' solo funciona para las transmisiones MPEG4. Otros (como MPEG2TS) no implementan esta opción (se ignora silenciosamente). – Lekensteyn

+0

@Cat tienes razón, ¿alguna idea sobre cómo solucionar eso en la vista previa? –

6

Tome un vistazo a la documentación aquí

http://developer.android.com/guide/topics/media/camera.html#capture-video

La trampa más común con el presente ejemplo es el setCamera(). DEBE INSTALAR LA CÁMARA INMEDIATAMENTE DESPUÉS DE HACER EL MEDIA GRABADOR, de lo contrario, obtendrá errores.

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 

espero que esto ayude a alguien. ¡¡Buena suerte!!

+1

este código fallará A MENOS QUE llame a 'mCamera.unlock();' antes de 'recorder.setCamera (mCamera)': http://developer.android.com/reference/android/hardware/Camera.html#unlock() – Cat

3

Me he quedado con este problema antes, también. Descubrí que puedes usar la función setOrientationHint (API 9). Llame a esta función antes de llamar a MediaRecorder.prepare(). Puede configurar el grado de orientación para su video de salida.

Espero que ayude, ¡buena suerte!

+0

agradable ... funciona bien! ¡gracias! – Antonio

+2

en realidad no gira el video para corregir la orientación, es solo una bandera configurada como video, que algunos mediaplayers como vlc ignoran. – Nima

6

Añadir las siguientes dos líneas de código:

Camera.setDisplayOrientation(90); // use for set the orientation of the preview 
mRecorder.setOrientationHint(90); // use for set the orientation of output video 

antes:

mRecorder.setCamera(mCamera); 

ejemplo completo:

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)); 
Cuestiones relacionadas