Когда я записываю видео с помощью MediaRecorder, он всегда записывает в ландшафтном режиме, независимо от реальной ориентации устройства. Как заставить MediaRecorder/Camera использовать реальную ориентацию?
как изменить ориентацию видео в MediaRecorder на книжную
Ответы (4)
см. Camera.Parameters.setRotation() а> для получения дополнительной информации.
Там есть пример, и вместо вызова setRotation(rotation) попробуйте вызвать mediaRecorder.setOrientationHint(rotation) при записи видео.
mediaRecorder.setOrientationHint
изменяет только ориентацию выходного видео, но не ориентацию предварительного просмотра.
- person Cat; 11.05.2014
setOrientationHint
работает только для потоков MPEG4. Другие (например, MPEG2TS) не реализуют эту опцию (она молча игнорируется).
- person Lekensteyn; 02.06.2014
Добавьте следующие две строки кода:
Camera.setDisplayOrientation(90); // use for set the orientation of the preview
mRecorder.setOrientationHint(90); // use for set the orientation of output video
до:
mRecorder.setCamera(mCamera);
Полный пример:
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));
Взгляните на документацию здесь
http://developer.android.com/guide/topics/media/camera.html#capture-video
Самая распространенная ошибка в этом примере — setCamera(). КАМЕРУ ОБЯЗАТЕЛЬНО УСТАНОВИТЬ СРАЗУ ПОСЛЕ ИЗГОТОВЛЕНИЯ MediaRecorder иначе будут ошибки.
Camera mCamera = getCameraInstance();
// adjust the camera the way you need
mCamera.setDisplayOrientation(90);
MediaRecorder recorder = new MediaRecorder();
mCamera.unlock();
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
Я надеюсь, что это поможет кому-то. Удачи!!
mCamera.unlock();
до recorder.setCamera(mCamera)
: developer.android .com/reference/android/hardware/
- person Cat; 11.05.2014
Я тоже застрял с этой проблемой раньше. Я обнаружил, что вы можете использовать функцию setOrientationHint. (API 9). Вызовите эту функцию перед вызовом MediaRecorder.prepare(). Вы можете настроить степень ориентации для вашего выходного видео.
Надеюсь поможет, удачи!
android:screenOrientation="landscape"
вашей CameraActivity в манифесте - person IgniteCoders   schedule 17.11.2016