我发现以纵向模式录制的视频会旋转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度。有没有人对此提出建议?非常感谢。
答案 0 :(得分:3)
有些视频播放器在播放视频时会考虑方向提示。其他球员没有。只需尝试使用Windows Media Player,Quick Time和Real Player在您的PC上播放此视频,并查看差异 问题可能不是您的代码,而是您用来观看视频的视频播放器。
答案 1 :(得分:3)
使用mMediaRecorder.setOrientationHint(int)
这绝对有效。
您可能需要使用各种方向来获取potrait和landscape中所有摄像机的int值。