2012-08-23 28 views
18

Tôi nhận thấy rằng video đã quay ở chế độ dọc sẽ xoay 90 độ. Vì vậy tôi đã sử dụng đoạn mã sau để xoay nó khi tôi đặt mediaRecorder:Quay video được quay 90 độ sau khi tải lên Internet

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

Các preview cũng nằm trong định hướng đúng đắn kể từ khi tôi sử dụng đoạn mã sau vào phương pháp 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); 

Bằng cách này, video đã quay ở đúng hướng khi được phát trên thiết bị. Tuy nhiên, video vẫn xoay 90 độ sau khi tải lên Internet. Có ai có lời khuyên về điều này? Cảm ơn rất nhiều.

+0

Bạn có tìm thấy giải pháp cho vấn đề của mình không? –

+0

@LazyNinja, tôi đoán là không, tôi phải gửi các hình ảnh được xoay và thay đổi lại sau ... – Iam619

+0

Cảm ơn bạn đã trả lời. Tôi đang đối mặt với cùng một vấn đề và muốn tìm ra cách giải quyết nó @ lam619 –

Trả lời

3

Một số trình phát video xem xét gợi ý định hướng khi phát video. Những người chơi khác thì không. Chỉ cần thử phát video này trong PC của bạn bằng Windows Media Player, Quick Time và Real Player và xem sự khác biệt.
Có thể sự cố không phải là mã của bạn, mà là trình phát video bạn đang sử dụng để xem video của mình.

3

Sử dụng mMediaRecorder.setOrientationHint(int) Điều này chắc chắn hoạt động. Bạn có thể cần phải thực hiện các định hướng khác nhau để có được giá trị int cho tất cả các máy ảnh trong nồi và cảnh quan.