Chciałbym dać użytkownikom opcję ustawiania różnych rozdzielczości.setVideoSize() ulega awarii w wysokiej rozdzielczości
Próbowałem to rozwiązanie
camcorderProfile = CamcorderProfile.get(CamcorderProfile.QUALITY_720P);
....
....
mCamera.unlock();
recorder.setCamera(mCamera);
recorder.setAudioSource(MediaRecorder.AudioSource.DEFAULT);
recorder.setVideoSource(MediaRecorder.VideoSource.DEFAULT);
recorder.setProfile(camcorderProfile);
To działało idealnie: ładne jakości i wszystko ...
Kiedy ustawić go
camcorderProfile = CamcorderProfile.get(CamcorderProfile.QUALITY_480P);
z rzutowej na, film wyszedł z zielonkawymi i dziwnymi kolorami.
Czytam online i ludzie mówili, że to dlatego, że QUALITY_480P prawdopodobnie nie jest obsługiwany przez mój telefon. Ok, to sprawia, że zmysły.
Dlatego zacząłem pracować na inne rozwiązanie, więc próbowałem ....
recorder.setVideoSize(640, 480);
To było wspaniałe,
ale film wyglądał bardzo brzydkie.
Następnie sprawdziłem listę obsługiwanych filmów.
List<Size> GetSupportedVideosResolutions = params.getSupportedVideoSizes();
Rozdzielczość: 1280x720 znajduje się na liście, więc
Próbowałem ustawić:
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);
To dało mi błąd RuntimeException.
Pytanie jest
Dlaczego nie może to niech mi ustawić wyższej rozdzielczości, które są dostępne w telefonie?
Każda pomoc będzie bardzo mile widziane,
Dziękuję.
Edit: dodano dziennik błędów
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)
Ponieważ 720p to 1280 x 720, to, czego się spodziewałeś, różni się od ostatniego bloku kodu, w porównaniu z pierwszym blokiem kodu, który powiedziałeś, że działał poprawnie? IOW, jeśli chcesz mieć wyjście 1280x720, masz już działający kod dla tego. Poza tym nie możemy ci pomóc z wyjątkiem, chyba że umieścisz ślad stosu i wskażesz, które linie w tym stosie odpowiadają temu, jakie linie w twoim kodzie w pytaniu. – CommonsWare
Dziękuję za komentarz. Chciałbym dać użytkownikom opcję wyboru różnych rozdzielczości. 720P było twardym kodem. 720P może nie być obsługiwane na innym urządzeniu. Wspomniałem również, że wystąpił problem z 480P z włączonym flashowaniem. Mógłbym wypróbować 1920x1080 i ten sam błąd. – Iam1414
Jakie urządzenie testujesz? –