web-dev-qa-db-ja.com

MediaRecorderのビデオの向きを縦向きに変更する方法

MediaRecorderでビデオを録画すると、実際のデバイスの向きに関係なく、常に横向きモードで録画されます。 MediaRecorder/Cameraに実際の向きを強制する方法は?

27

詳細は Camera.Parameters.setRotation() を参照してください。

そこに例があり、setRotation(rotation)を呼び出す代わりに、ビデオの記録時にmediaRecorder.setOrientationHint(rotation)を呼び出してみてください。

19
artsylar

次の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));
10
Sagar Aghara

こちらのドキュメントをご覧ください

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 

これが誰かの役に立つことを願っています。幸運を!!

8
Laith Alnagem

私も以前にこの問題を抱えていました。関数 setOrientationHint (API 9)を使用できることがわかりました。 MediaRecorder.prepare()を呼び出す前に、この関数を呼び出します。出力ビデオの向きを設定できます。

お役に立てば幸いです。

3
tomelf
 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));
2
user6250541