18

我发现以纵向模式录制的视频会旋转 90 度。因此,我在设置 mediaRecorder 时使用了以下代码来旋转它:

 if (this.getResources().getConfiguration().orientation !=Configuration.ORIENTATION_LANDSCAPE)
{
     mediaRecorder.setOrientationHint(270);
}
 else
{
     mediaRecorder.setOrientationHint(0);
}

mediaRecorder.setOutputFile(file_name);                  
mediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.DEFAULT);
mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT);

由于我在 surfaceCreated 方法中使用了以下代码,因此预览也处于正确的方向:

Camera.Parameters params = camera.getParameters();

if (this.getResources().getConfiguration().orientation
     !=Configuration.ORIENTATION_LANDSCAPE)
{   
  camera.setDisplayOrientation(90);

}
else
{   
  camera.setDisplayOrientation(0);                  
}

  params.setRotation(90);
  camera.setParameters(params);

这样,录制的视频在设备上播放时方向正确。然而,视频上传到互联网后仍然是 90 度旋转。有人对此有建议吗?非常感谢。

4

2 回答 2

4

使用mMediaRecorder.setOrientationHint(int) 这绝对有效。您可能需要使用各种方向来获取纵向和横向所有相机的 int 值。

于 2015-08-14T18:19:42.677 回答
3

一些视频播放器在播放视频时会考虑方向提示。其他玩家没有。只需尝试在您的 PC 中使用 Windows Media Player、Quick Time 和 Real Player 播放此视频,然后查看差异。
问题可能不在于您的代码,而在于您用于查看视频的视频播放器。

于 2013-08-02T15:27:52.130 回答