如何将MediaRecorder中的video方向更改为纵向

当我通过MediaRecorder录制video时,无论实际的设备方向如何,它总是以横向模式进行录制。 如何强制MediaRecorder / Camera使用真正的方向?

Solutions Collecting From Web of "如何将MediaRecorder中的video方向更改为纵向"

有关更多信息,请参阅Camera.Parameters.setRotation() 。

有一个例子,而不是调用setRotation(旋转)尝试调用mediaRecorder.setOrientationHint(旋转)录制video时。

添加以下两行代码:

 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)); 

看看这里的文档

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 

我希望这可以帮助别人。 祝你好运!!

我之前也遇到过这个问题。 我发现你可以使用函数setOrientationHint (API 9)。 在调用MediaRecorder.prepare()之前调用此函数。 您可以设置输出video的方向度。

希望它有帮助,祝你好运!

  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));