2010-10-10 31 views

Trả lời

16

tham khảo Camera.Parameters.setRotation() để biết thêm thông tin.

Có một ví dụ ở đó và thay vì gọi setRotation (rotation), hãy thử gọi phương thức mediaRecorder.setOrientationHint (quay) khi quay video.

+7

'mediaRecorder.setOrientationHint' chỉ thay đổi hướng của video đầu ra, không thay đổi hướng của bản xem trước. – Cat

+3

Ngoài ra, 'setOrientationHint' chỉ hoạt động đối với các luồng MPEG4. Những người khác (như MPEG2TS) không thực hiện tùy chọn này (nó bị bỏ qua âm thầm). – Lekensteyn

+0

@ Bạn có đúng không, bất kỳ ý tưởng nào về cách khắc phục điều đó trên bản xem trước? !! –

6

Hãy xem tài liệu ở đây

http://developer.android.com/guide/topics/media/camera.html#capture-video

Các cạm bẫy phổ biến nhất với các ví dụ này là setCamera(). BẠN PHẢI THIẾT LẬP MÁY ẢNH NGAY LẬP TỨC SAU KHI THỰC HIỆN MediaRecorder nếu không bạn sẽ gặp lỗi.

Camera mCamera = getCameraInstance(); 
    // adjust the camera the way you need 
    mCamera.setDisplayOrientation(90); 

    MediaRecorder recorder = new MediaRecorder(); 

    recorder.setCamera(mCamera); 

    recorder.setAudioSource(MediaRecorder.AudioSource.DEFAULT); 
    recorder.setVideoSource(MediaRecorder.VideoSource.DEFAULT); 
    recorder.setProfile(CamcorderProfile.get(CamcorderProfile.QUALITY_HIGH)); 
    recorder.setOutputFile(filePath); 

    // add any limits 
    recorder.setMaxDuration(50000); // 50 seconds 
    recorder.setMaxFileSize(5000000); // Approximately 5 megabytes 

Tôi hy vọng điều này sẽ giúp ai đó. Chúc may mắn!!

+1

mã này sẽ không thành công UNLESS bạn gọi 'mCamera.unlock();' trước 'ghi.setCamera (mCamera)': http://developer.android.com/reference/android/hardware/Camera.html#unlock() – Cat

3

Tôi cũng đã gặp vấn đề này trước đây. Tôi thấy rằng bạn có thể sử dụng hàm setOrientationHint (API 9). Gọi hàm này trước khi bạn gọi phương thức MediaRecorder.prepare(). Bạn có thể thiết lập mức độ định hướng cho video đầu ra của bạn.

Hy vọng nó sẽ giúp, chúc bạn may mắn!

+0

tốt đẹp ... hoạt động tốt! cam ơn bạn! – Antonio

+2

không thực sự xoay video để định hướng đúng, nó chỉ là một cờ được đặt thành video mà một số trình phát đa phương tiện như vlc bỏ qua. – Nima

6

Thêm hai dòng mã sau đây:

Camera.setDisplayOrientation(90); // use for set the orientation of the preview 
mRecorder.setOrientationHint(90); // use for set the orientation of output video 

trước:

mRecorder.setCamera(mCamera); 

Full dụ:

mRecorder = new MediaRecorder(); 

// Both are required for Portrait Video 
mCamera.setDisplayOrientation(90); 
mRecorder.setOrientationHint(90); 

// Step 1: Unlock and set camera to MediaRecorder 
mCamera.unlock(); 
mRecorder.setCamera(mCamera); 

// Step 2: Set sources 
mRecorder.setAudioSource(MediaRecorder.AudioSource.DEFAULT); 
mRecorder.setVideoSource(MediaRecorder.VideoSource.DEFAULT); 

// Step 3: Set a CamcorderProfile (requires API Level 8 or higher) 
mRecorder.setProfile(CamcorderProfile.get(CamcorderProfile.QUALITY_480P)); 
1
mMediaRecorder = new MediaRecorder(); 
     mServiceCamera.setDisplayOrientation(90); 
     mMediaRecorder.setOrientationHint(90); 
     mServiceCamera.unlock(); 
     mMediaRecorder.setCamera(mServiceCamera); 
     mMediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC); 
     mMediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA); 
     mMediaRecorder.setProfile(CamcorderProfile.get(CamcorderProfile.QUALITY_HIGH)); 
Các vấn đề liên quan