当我通过MediaRecorder录制视频时,它始终以横向模式录制,无论实际的设备方向如何。 如何强制MediaRecorder / Camera使用真正的方向?
答案 0 :(得分:18)
有关详细信息,请参阅Camera.Parameters.setRotation()。
有一个例子,而不是调用setRotation(旋转),在录制视频时尝试调用mediaRecorder.setOrientationHint(旋转)。
答案 1 :(得分:9)
添加以下两行代码:
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));
答案 2 :(得分:7)
看一下这里的文档
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 :(得分:3)
我之前也遇到过这个问题。我发现你可以使用函数setOrientationHint(API 9)。在调用MediaRecorder.prepare()之前调用此函数。您可以设置输出视频的方向度。
希望它有所帮助,祝你好运!