Vorrei offrire agli utenti un'opzione per impostare risoluzioni diverse.setVideoSize() si blocca con risoluzioni elevate
Ho provato questa soluzione
camcorderProfile = CamcorderProfile.get(CamcorderProfile.QUALITY_720P);
....
....
mCamera.unlock();
recorder.setCamera(mCamera);
recorder.setAudioSource(MediaRecorder.AudioSource.DEFAULT);
recorder.setVideoSource(MediaRecorder.VideoSource.DEFAULT);
recorder.setProfile(camcorderProfile);
Ha funzionato perfettamente: qualità piacevole e tutto ...
Quando ho impostato a
camcorderProfile = CamcorderProfile.get(CamcorderProfile.QUALITY_480P);
con FLASH su, il video è uscito con colori verdastri e altri strani colori.
Ho letto online e la gente ha detto che è perché QUALITY_480P probabilmente non è supportato sul mio telefono. Ok, rende i sensi.
Pertanto, ho iniziato a lavorare sulla diversa soluzione, così ho provato ....
recorder.setVideoSize(640, 480);
ha funzionato grande,
ma il video sembrava molto brutto.
Successivamente, ho controllato per un elenco di video supportati.
List<Size> GetSupportedVideosResolutions = params.getSupportedVideoSizes();
Risoluzione: 1280x720 è nella lista, in modo da
Ho cercato di impostare la seguente:
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);
Mi ha dato un errore di RuntimeException.
La domanda è
Perché non può farmi impostare le risoluzioni più alte che sono disponibili al telefono?
Qualsiasi aiuto sarebbe molto apprezzato,
Grazie.
Edit: aggiunte log degli errori
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)
Poiché 720p è 1280x720, cosa ti aspettavi diverso dal tuo ultimo blocco di codice rispetto al primo blocco di codice che hai detto funzionava bene? IOW, se vuoi output 1280x720, hai già un codice funzionante per questo. Oltre a ciò, non possiamo aiutarti con un'eccezione a meno che non pubblichi la traccia dello stack e indicherai quali linee in quella traccia dello stack corrispondono a quali linee del tuo codice nella tua domanda. – CommonsWare
Grazie per il commento. Mi piace dare agli utenti la possibilità di scegliere diverse risoluzioni. 720P era il codice difficile. 720P potrebbe non essere supportato su un altro dispositivo. Inoltre, ho detto che c'era un problema con 480P con il flash acceso. Potrei provare 1920x1080 e lo stesso errore. – Iam1414
Quale dispositivo stai testando? –