6

Kullanıcılara farklı çözünürlükler belirleme seçeneği sunmak istiyorum. Ben üzerinde FLASH ilesetVideoSize() yüksek çözünürlükle çöküyor

camcorderProfile = CamcorderProfile.get(CamcorderProfile.QUALITY_480P); 

olarak ayarlayın zaman ...

güzel kalite ve her şey:

Bu çözümü

camcorderProfile = CamcorderProfile.get(CamcorderProfile.QUALITY_720P); 
.... 
.... 
mCamera.unlock(); 
recorder.setCamera(mCamera); 
recorder.setAudioSource(MediaRecorder.AudioSource.DEFAULT); 
recorder.setVideoSource(MediaRecorder.VideoSource.DEFAULT); 
recorder.setProfile(camcorderProfile); 
Bu mükemmel çalıştı

denedim video yeşilimsi ve bazı garip renkler ile çıktı.

Çevrimiçi okudum ve insanlar bunun QUALITY_480P telefonumda desteklenmediğinden kaynaklandığını belirtti. Tamam, duyu yapar.

Bu nedenle, farklı çözüm üzerinde çalışmaya başladı, bu yüzden,

recorder.setVideoSize(640, 480); 

O amele ....

denedim ancak video ÇOK çirkin görünüyordu.

Daha sonra, desteklenen bir video listesini kontrol ettim.

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

Çözünürlük: 1280x720 yüzden

aşağıdaki ayarlamak için denedim, listede geçerli:

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); 

Bana bir RuntimeException hata verdi.

soru

olduğunu

Neden beni telefonda mevcuttur yüksek çözünürlükleri set izin vermiyorsun?

Herhangi bir yardım büyük takdir,

teşekkür ederiz.

Düzenleme: katma hata günlüğü

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

720p 1280x720 olduğundan, son kod bloğundan farklı çalıştığını söyleyen ilk kod bloğundan farklı olarak ne bekliyordunuz? IOW, 1280x720 çıkışını isterseniz, bunun için zaten çalışma kodunuz var. Bunun da ötesinde, yığın izlemeyi yayınlamadıkça ve bu yığın izlemede hangi satırların sizin kodunuzdaki sorulara karşılık gelmediğini belirtmediğiniz sürece bir istisnada size yardımcı olamayız. – CommonsWare

+0

Yorumunuz için teşekkür ederiz. Kullanıcılara farklı çözünürlükler seçme seçeneği sunmayı seviyorum. Sabit kod 720P idi. Başka bir cihazda 720P desteklenmeyebilir. Ayrıca, flaş ile 480P ile bir sorun olduğunu belirtti. 1920x1080 ve aynı hatayı deneyebilirim. – Iam1414

+0

Hangi cihazı test ediyorsunuz? –

cevap

3

Ben sorunun ne olduğunu anladım. Bu başka birine yardımcı olabilir. ben erdi:

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

Kodu:

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 
.... 
... 

// veya

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

ÇÖZÜM: Iam1414 cevabı DOĞRU.

Bütün gün uğraştım ve dikiş yaptığı kadar saçma, tekniği işe yarıyor.

4k'da (3840 x 2160) kayıt yapmaya çalışıyordum, cihazın da yeteneği vardı, ama 1080'ye sınırlamaya devam ettim ve daha yüksek bir şeye çarpıyordum. Çözelti, Iam1414 olarak belirtildi. profile -Set

video boyutu

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

Maalesef profil ayarı H264 kodlayan beni ele kilitler ve bana H265 kodlayıcı benim kodlayıcı ayarlamak için izin vermedi -Set
sonra. Umarım bunun için de bir çözüm vardır.

Iam1414, Teşekkürler.

Düzenleme olsaydı size oy verirdim. Düzenleme: Bu çok garip bir hatadır. Dikişler artık geçici çözümü kullanmayacağımı sanıyor. Sadece eşleşen profili kullanarak 2160p'de kaydedebiliyorum. Bir sorun olmaya devam ederse daha fazla araştırırım.