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

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

  • 如何从SD卡播放video
  • 同时顺利地播放video
  • 在Android WebView中播放Youtube HTML5嵌入式video
  • 播放前后的VideoView黑色闪光灯
  • 如何确定Android上的video宽度和高度
  • 从VideoView录制video
  • 将video插入MediaStore
  • Android TextureView与VideoView性能
  • 有关更多信息,请参阅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));