Когда я записываю видео с помощью MediaRecorder, он всегда записывается в ландшафтном режиме, независимо от реальной ориентации устройства. Как заставить MediaRecorder/Camera использовать реальную ориентацию?Как изменить ориентацию видео в MediaRecorder на портфолио
ответ
см. Camera.Parameters.setRotation() для получения дополнительной информации.
Приведен пример и вместо вызова setRotation (rotation) попробуйте вызвать mediaRecorder.setOrientationHint (вращение) при записи видео.
'mediaRecorder.setOrientationHint' изменяет ориентацию выходного видео, а не ориентацию предварительного просмотра. – Cat
Кроме того, 'setOrientationHint' работает только для потоков MPEG4. Другие (например, MPEG2TS) не реализуют этот параметр (он бесшумно игнорируется). – Lekensteyn
@ Кат вы правы, любая идея о том, как исправить это на предварительном просмотре? !! –
Посмотрите на документацию здесь
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();
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();' before' recorder.setCamera (mCamera) ': http://developer.android.com/reference/android/hardware/Camera.html#unlock() – Cat
Я тоже застрял в этой проблеме. Я обнаружил, что вы можете использовать функцию setOrientationHint (API 9). Вызовите эту функцию перед вызовом MediaRecorder.prepare(). Вы можете настроить степень ориентации для вашего выходного видео.
Надеюсь, это поможет, удачи!
Добавьте следующие две строки кода:
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));
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));
, что о наборе 'андроида: screenOrientation =" пейзаж "вашей CameraActivity в манифесте – IgniteCoders