Когда я записываю видео с помощью MediaRecorder, он всегда записывается в альбомном режиме, независимо от реальной ориентации устройства. Как заставить MediaRecorder/Camera использовать реальную ориентацию?
Как изменить ориентацию видео в MediaRecorder на портрет
Ответ 1
обратитесь к Camera.Parameters.setRotation() для получения дополнительной информации.
Здесь есть пример и вместо вызова setRotation (rotation) попробуйте вызвать mediaRecorder.setOrientationHint(вращение) при записи видео.
Ответ 2
Добавьте следующие две строки кода:
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));
Ответ 3
Взгляните на документацию здесь
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
Надеюсь, это кому-нибудь поможет. Удачи!!
Ответ 4
Я тоже сталкивался с этой проблемой. Я обнаружил, что вы можете использовать функцию setOrientationHint (API 9). Вызовите эту функцию перед вызовом MediaRecorder.prepare(). Вы можете настроить степень ориентации для вашего выходного видео.
Надеюсь, это поможет, удачи!
Ответ 5
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));