2012-08-23 6 views
18

녹화 된 비디오가 세로 모드에서 90도 회전합니다. 내가 surfaceCreated 방법에 다음 코드를 사용하기 때문에녹화 된 비디오가 인터넷에 업로드 된 후 90도 회전 됨

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); 

미리보기가 우측 방향으로도 : 이런 식으로

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); 

을, 나는 mediaRecorder을 설정하면 따라서 나는 그것을 회전하려면 다음 코드를 사용 녹화 된 비디오는 장치에서 재생할 때 올바른 방향입니다. 그러나 인터넷에 업로드 한 후에도 비디오는 90도 회전합니다. 아무도 이것에 대해 조언 해 주었습니까? 고마워.

+0

문제의 해결책을 찾으셨습니까? –

+0

@LazyNinja, 그렇지 않다고 생각합니다. 회전 된 이미지를 보내고 나중에 다시 변경해야합니다. – Iam619

+0

답장을 보내 주셔서 감사합니다. 나는 같은 문제에 직면하고 그것을 해결하는 방법을 찾고 싶었어 @ lam619 –

답변

3

일부 비디오 플레이어는 비디오를 재생할 때 방향 힌트를 고려합니다. 다른 플레이어는 그렇지 않습니다. Windows Media Player, Quick Time 및 Real Player로이 비디오를 PC에서 재생하고 차이점을 확인하십시오.
아마도 문제는 코드가 아닌 비디오를 보는 데 사용하는 비디오 플레이어입니다.

3

사용 mMediaRecorder.setOrientationHint(int) 이것은 올바르게 작동합니다. potrait 및 landscape의 모든 카메라에 대해 int 값을 가져 오려면 다양한 방향을 사용해야 할 수도 있습니다.