我发现在纵向模式下录制的视频可以旋转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度旋转。有人对此有什么建议吗?非常感谢。
发布于 2015-08-15 02:19:43
使用mMediaRecorder.setOrientationHint(int)
,这是非常有效的。您可能需要使用不同的方向来获得纵向和横向中所有相机的int值。
发布于 2013-08-02 23:27:52
有些视频播放器在播放视频时会考虑方向提示。其他播放器不支持。只需尝试在您的电脑上使用Windows Media Player、Quick Time和Real Player播放此视频,并查看其中的差异。
问题可能不在于你的代码,而在于你用来观看视频的视频播放器。
https://stackoverflow.com/questions/12098147
复制相似问题