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

Vla*_*kin 27 android video-recording device-orientation mediarecorder

当我通过MediaRecorder录制视频时,它始终以横向模式录制,无论实际的设备方向如何.如何强制MediaRecorder/Camera使用真正的方向?

art*_*lar 19

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

有一个示例,而不是调用setRotation(旋转)尝试在录制视频时调用mediaRecorder.setOrientationHint(旋转).

  • `mediaRecorder.setOrientationHint`仅更改输出视频的方向,而不是预览的方向. (8认同)
  • 另外,`setOrientationHint`仅适用于MPEG4流.其他人(如MPEG2TS)没有实现这个选项(它被默默地忽略). (3认同)

Sag*_*ara 10

添加以下两行代码:

Camera.setDisplayOrientation(90); // use for set the orientation of the preview
mRecorder.setOrientationHint(90); // use for set the orientation of output video
Run Code Online (Sandbox Code Playgroud)

之前:

mRecorder.setCamera(mCamera);
Run Code Online (Sandbox Code Playgroud)

完整示例:

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));
Run Code Online (Sandbox Code Playgroud)


Lai*_*gem 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 
Run Code Online (Sandbox Code Playgroud)

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

  • 除非你在`recorder.setCamera(mCamera)之前调用`mCamera.unlock();`,否则这段代码会失败:http://developer.android.com/reference/android/hardware/Camera.html#unlock() (2认同)