MediaRecorder でビデオを録画すると、実際のデバイスの向きに関係なく、常に横向きモードで録画されます。MediaRecorder/Camera に実際の向きを強制する方法は?
31240 次
5 に答える
20
詳細については、 Camera.Parameters.setRotation()を参照してください。
そこに例があり、 setRotation(rotation) を呼び出す代わりに、ビデオを録画するときに mediaRecorder.setOrientationHint(rotation) を呼び出してみてください。
于 2011-08-22T02:06:42.637 に答える
15
次の 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));
于 2016-12-24T09:07:01.110 に答える
8
こちらのドキュメントをご覧ください
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
これが誰かに役立つことを願っています。幸運を!!
于 2012-03-20T18:30:43.870 に答える
3
私も以前にこの問題に固執しました。関数setOrientationHint (API 9)を使用できることがわかりました。MediaRecorder.prepare() を呼び出す前に、この関数を呼び出します。出力ビデオの向きを設定できます。
それが役に立てば幸いです、頑張ってください!
于 2012-09-08T01:47:04.973 に答える