Cómo cambiar la orientación de vídeo en MediaRecorder a retrato
Cuando grabo video por MediaRecorder, siempre registra en modo horizontal, independientemente de la orientación real del dispositivo. ¿Cómo forzar a MediaRecorder / Camera a usar la orientación real?
- La resolución de CamcorderProfile.QUALITY_HIGH produce vídeo verde parpadeante
- Cómo saber cuando MediaRecorder ha terminado de escribir datos en el archivo
- Necesita un ejemplo sencillo para la grabación de audio
- ¿Cómo transmitir flujo de la videocámara a través de la red, la producción de archivo de vídeo válido, utilizando Android?
- Android MediaRecorder API mantiene el recorte de la velocidad de bits de vídeo
- Problema con android MediaRecorder setVideoSize ()
- Grabe vídeo con un tamaño de vista previa diferente al del archivo de vídeo resultante
- Android agrega texto (marca de tiempo) al vídeo grabado
- Cómo cambiar entre la cámara delantera y trasera cuando se utiliza MediaRecorder android
- MediaRecorder.stop () colgando con Android 4.0 (ICS)
- Android MediaRecorder para grabar una superficie (no la cámara)
- Problemas con MediaRecorder al iniciar la captura de vídeo en android
- Android MediaRecorder: Sobreescritura continua
Consulte Camera.Parameters.setRotation () para obtener más información.
Hay un ejemplo allí y en lugar de llamar setRotation (rotación) intenta llamar a mediaRecorder.setOrientationHint (rotación) al grabar vídeo.
Echa un vistazo a la documentación aquí
http://developer.android.com/guide/topics/media/camera.html#capture-video
El error más común con este ejemplo es el setCamera (). USTED DEBE FIJAR LA CÁMARA INMEDIATAMENTE DESPUÉS DE HACER EL MEDIOS DE TRABAJO, 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!!
Me he quedado con este problema antes, también. Encontré que usted puede utilizar 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 vídeo de salida.
¡Espero que ayude, buena suerte!
Agregue 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 de:
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));
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));