как изменить ориентацию видео в MediaRecorder на портретную - PullRequest
26 голосов
/ 10 октября 2010

Когда я записываю видео с помощью MediaRecorder, оно всегда записывается в альбомном режиме, независимо от ориентации реального устройства. Как заставить MediaRecorder / Camera использовать реальную ориентацию?

Ответы [ 5 ]

18 голосов
/ 22 августа 2011

см. Camera.Parameters.setRotation () для получения дополнительной информации.

Там есть пример, и вместо вызова setRotation (вращение) попробуйте вызвать mediaRecorder.setOrientationHint (вращение) при записи видео.

9 голосов
/ 24 декабря 2016

Добавьте следующие две строки кода:

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));
8 голосов
/ 20 марта 2012

Взгляните на документацию здесь

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 

Надеюсь, это кому-нибудь поможет.Удачи !!

3 голосов
/ 08 сентября 2012

Я тоже сталкивался с этой проблемой раньше. Я обнаружил, что вы можете использовать функцию setOrientationHint (API 9). Вызовите эту функцию перед вызовом MediaRecorder.prepare (). Вы можете установить степень ориентации для вашего выходного видео.

Надеюсь, это поможет, удачи!

2 голосов
/ 11 августа 2017
 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));
...