2010-10-21 29 views
11

Có thể android MediaRecorder quay video có độ phân giải cao hơn 320*240 không?Sự cố với Android MediaRecorder setVideoSize()

Khi tôi sử dụng MediaRecorder::setVideoSize() để đặt kích thước video, video đã quay đều ở độ phân giải 320*240. Whats thậm chí tệ hơn, những người cao hơn không thể có được một video rõ ràng, họ bằng cách nào đó màu xanh lá cây. (Encoder sử dụng là h263, định dạng là mpeg4)

phiên bản Android sử dụng ở đây là 1.6

thể bạn hài lòng bất cứ ai giúp tôi không?

Trả lời

2

Trước tiên, bạn sẽ muốn xác định những gì Máy ảnh của bạn hỗ trợ. Hãy thử:

  List<String> anti = params.getSupportedAntibanding(); 
    List<String> color = params.getSupportedColorEffects(); 
    List<String> focus = params.getSupportedFocusModes(); 
    List<String> flash = params.getSupportedFlashModes(); 
    List<Size> previewSize = params.getSupportedPreviewSizes(); 
    List<Size> sizes = params.getSupportedPictureSizes(); 
    List<Integer> frameRates = params.getSupportedPreviewFrameRates(); 
    List<Integer> pictureFormats = params.getSupportedPictureFormats(); 
    List<String> scene = params.getSupportedSceneModes(); 
    List<String> white = params.getSupportedWhiteBalance(); 

Điều này sẽ cho bạn biết tất cả thông số được hỗ trợ của Máy ảnh. Thứ hai Hãy chắc chắn rằng bạn khởi tạo MediaRecorder của bạn đúng xem tài liệu google cho thứ tự mà bạn cần phải đặt MediaRecorder. Ngoài ra, nếu Camera.setPreviewSize và MediaRecorder.setVideoSize của bạn khác, nó có thể gây ra hành vi lạ.

+0

tôi chỉ hy vọng họ sẽ viết nó (khoảng VideoSize và PreviewSize) trên tài liệu API của họ. – artsylar

+0

không phải là setVideoSize() chỉ cần gọi setPreviewSize()? Có nghĩa là, chúng sẽ vẫn có cùng giá trị ở cuối miễn là video là một trong các kích thước xem trước được hỗ trợ. – artsylar

+0

"Thông số" là gì? Tham số – Felix

7

Tôi gặp sự cố tương tự với những gì được mô tả ở đây. Tôi bật ra rằng tôi đã phải cơ cấu lại mã của tôi một chút trước khi tôi có thể điều chỉnh kích thước video.

Điều quan trọng là setVideoSize() được gọi trước setVideoEncoder(). Tôi không thể tìm thấy điều này trong tài liệu, tuy nhiên nó giải quyết được vấn đề của tôi với việc thiết lập độ phân giải video cụ thể. Cũng nên nhớ rằng setOutputFormat() nên được gọi trước khi setVideoSize().

Giống như lưu ý phụ, điều này cũng đúng với setVideoFrameRate(). Nếu nó không được gọi trước setVideoEncoder() nó sẽ không có bất kỳ ảnh hưởng nào.

này đã được thử nghiệm với Android 2.3.3

Dưới đây là một ví dụ mã:

recorder.setAudioSource(MediaRecorder.AudioSource.DEFAULT); 
recorder.setVideoSource(MediaRecorder.VideoSource.DEFAULT); 
recorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4); 
recorder.setVideoSize(640,480); 
recorder.setVideoFrameRate(30); 
recorder.setVideoEncoder(MediaRecorder.VideoEncoder.DEFAULT); 
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT);  
+2

Điều này cho tôi lỗi «E/MediaRecorder ﹕ bắt đầu không thành công: -19'. –

+0

Câu trả lời này xứng đáng nhận được nhiều ưu đãi hơn – Bhargav

Các vấn đề liên quan