6

Tôi muốn cung cấp cho người dùng tùy chọn để đặt các độ phân giải khác nhau.setVideoSize() treo với độ phân giải cao

Tôi đã thử giải pháp này

camcorderProfile = CamcorderProfile.get(CamcorderProfile.QUALITY_720P); 
.... 
.... 
mCamera.unlock(); 
recorder.setCamera(mCamera); 
recorder.setAudioSource(MediaRecorder.AudioSource.DEFAULT); 
recorder.setVideoSource(MediaRecorder.VideoSource.DEFAULT); 
recorder.setProfile(camcorderProfile); 

Nó làm việc hoàn hảo: chất lượng tốt đẹp và tất cả mọi thứ ...

Khi tôi đặt nó vào

camcorderProfile = CamcorderProfile.get(CamcorderProfile.QUALITY_480P); 

với FLASH trên, video xuất hiện với màu xanh lục và một số màu kỳ lạ khác.

Tôi đọc trực tuyến và mọi người nói là vì QUALITY_480P có thể không được hỗ trợ trên điện thoại của tôi. Ok, nó tạo ra giác quan.

Do đó, tôi bắt đầu làm việc trên các giải pháp khác nhau, vì vậy tôi đã cố gắng ....

recorder.setVideoSize(640, 480); 

Nó làm việc rất lớn,

nhưng đoạn video trông rất xấu xí.

Tiếp theo, tôi đã kiểm tra danh sách video được hỗ trợ.

List<Size> GetSupportedVideosResolutions = params.getSupportedVideoSizes(); 

Độ phân giải: 1280x720 có trong danh sách, vì vậy

Tôi đã cố gắng để thiết lập như sau:

recorder.setAudioSource(MediaRecorder.AudioSource.DEFAULT); 
recorder.setVideoSource(MediaRecorder.VideoSource.DEFAULT); 
recorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4); 
recorder.setVideoSize(1280,720); 
recorder.setVideoEncoder(MediaRecorder.VideoEncoder.DEFAULT); 
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT); 

Nó đã cho tôi một lỗi RuntimeException.

Câu hỏi đặt ra là

Tại sao nó không thể cho tôi thiết lập độ phân giải cao mà có sẵn trên điện thoại?

Bất kỳ trợ giúp nào sẽ được đánh giá rất cao,

Cảm ơn bạn.

Edit: thêm lỗi log

04-18 17:40:07.391: E/AndroidRuntime(30191): java.lang.RuntimeException: start failed. 
04-18 17:40:07.391: E/AndroidRuntime(30191): at android.media.MediaRecorder.start(Native Method) 
04-18 17:40:07.391: E/AndroidRuntime(30191): at test.com.VideoActivity.prepare_StartRecorder(VideoActivity.java:1009) 
04-18 17:40:07.391: E/AndroidRuntime(30191): at test.com.VideoActivity.Recorder_Start_Stop(VideoActivity.java:1102) 
04-18 17:40:07.391: E/AndroidRuntime(30191): at test.com.VideoActivity$6.onClick(VideoActivity.java:246) 
04-18 17:40:07.391: E/AndroidRuntime(30191): at android.view.View.performClick(View.java:4489) 
04-18 17:40:07.391: E/AndroidRuntime(30191): at android.widget.CompoundButton.performClick(CompoundButton.java:104) 
04-18 17:40:07.391: E/AndroidRuntime(30191): at android.view.View$PerformClick.run(View.java:18803) 
04-18 17:40:07.391: E/AndroidRuntime(30191): at android.os.Handler.handleCallback(Handler.java:730) 
04-18 17:40:07.391: E/AndroidRuntime(30191): at android.os.Handler.dispatchMessage(Handler.java:92) 
04-18 17:40:07.391: E/AndroidRuntime(30191): at android.os.Looper.loop(Looper.java:137) 
04-18 17:40:07.391: E/AndroidRuntime(30191): at android.app.ActivityThread.main(ActivityThread.java:5493) 
04-18 17:40:07.391: E/AndroidRuntime(30191): at java.lang.reflect.Method.invokeNative(Native Method) 
04-18 17:40:07.391: E/AndroidRuntime(30191): at java.lang.reflect.Method.invoke(Method.java:525) 
04-18 17:40:07.391: E/AndroidRuntime(30191): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1209) 
04-18 17:40:07.391: E/AndroidRuntime(30191): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1025) 
04-18 17:40:07.391: E/AndroidRuntime(30191): at dalvik.system.NativeStart.main(Native Method) 
+0

Vì 720p là 1280x720, bạn mong đợi gì khác với khối mã cuối cùng của mình so với khối mã đầu tiên mà bạn cho biết đã hoạt động tốt? IOW, nếu bạn muốn đầu ra 1280x720, bạn đã có mã làm việc cho điều đó. Ngoài ra, chúng tôi không thể giúp bạn với ngoại lệ trừ khi bạn đăng theo dõi ngăn xếp và cho biết những đường nào trong dấu vết ngăn xếp đó tương ứng với những dòng nào trong mã của bạn trong câu hỏi của bạn. – CommonsWare

+0

Cảm ơn bạn đã bình luận. Tôi muốn cung cấp cho người dùng tùy chọn để chọn các độ phân giải khác nhau. 720P là mã cứng. 720P có thể không được hỗ trợ trên một thiết bị khác. Ngoài ra, tôi đã đề cập rằng đã xảy ra sự cố với 480P khi bật flash. Tôi có thể thử 1920x1080 và lỗi tương tự. – Iam1414

+0

Bạn đang thử nghiệm thiết bị nào? –

Trả lời

3

I figured những gì các vấn đề được. Điều này có thể giúp người khác. tôi đã kết thúc với:

camcorderProfile = CamcorderProfile.get(CamcorderProfile.QUALITY_720P); 
recorder.setVideoSize(1280, 720); //NEEDED or it will crash 

Code:

camcorderProfile = CamcorderProfile.get(CamcorderProfile.QUALITY_720P); 
.... 
.... 
mCamera.unlock(); 
recorder.setCamera(mCamera); 
recorder.setAudioSource(MediaRecorder.AudioSource.DEFAULT); 
recorder.setVideoSource(MediaRecorder.VideoSource.DEFAULT); 
recorder.setProfile(camcorderProfile); 
recorder.setVideoSize(1280 720); //NEEDED or it will crash 
.... 
... 

// hoặc

CamcorderProfile.get(CamcorderProfile.QUALITY_1080P); 
recorder.setProfile(camcorderProfile); 
recorder.setVideoSize(1920, 1080); //NEEDED or it will crash 
0

GIẢI PHÁP: Câu trả lời của Iam1414 LÀ ĐÚNG.

Tôi đã ở đây cả ngày và vô lý vì nó ghép nối, kỹ thuật của anh ấy hoạt động.

Tôi đã cố gắng ghi âm trong 4k (3840 x 2160), tôi đã tích cực thiết bị cũng có khả năng, nhưng nó vẫn hạn chế tôi ở mức 1080 và sẽ làm hỏng bất cứ thứ gì cao hơn. Giải pháp đã được đề cập đến trong Iam1414.

-Thiết hồ sơ cá nhân
-Thiết video kích thước

profile = CamcorderProfile.get(CamcorderProfile.QUALITY_2160P); 
recorder.setProfile(profile); 
recorder.setVideoSize(3820, 2160); //NEEDED or it will crash 

Đáng tiếc là thiết lập hồ sơ cá nhân khóa tôi trong lúc mã hóa H264 và đã không cho phép tôi để thiết lập mã hóa của tôi để mã hóa H265 của tôi sau. Vì vậy, hy vọng có một workaround cho điều đó là tốt.

Iam1414, Cảm ơn bạn. Tôi sẽ bầu bạn nếu tôi có đại diện :)

Chỉnh sửa: Đây là một lỗi rất lạ. Đường nối như thể tôi không còn cần phải sử dụng giải pháp thay thế. Tôi có thể ghi lại trong 2160p chỉ đơn giản bằng cách sử dụng hồ sơ phù hợp. Tôi sẽ điều tra thêm nếu nó tiếp tục là một vấn đề.

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