1

Kamera API'sini kullanarak Slow Motion ve Time Lapse kayıtlarını gerçekleştirmenin bir yolu var mı? Camera API kullanarak SlowMotion ve TimeLapse video kaydı nasıl uygulanır

benim için VideoFrameRate, VideoBitRate VideoCaptureRate ama hiçbir şey çalışmalarını ayarı MediaRecorder kullanarak çalıştı.

JNI kullanarak başarıyla uygulandım, ancak çok fazla zaman aldığını ve optimize edilmediğini de buldum.

Başka bir çözüm bulursanız lütfen bana yardımcı olun.

+0

İki zorluk çok farklı. SlowMotion, yüksek FPS yerel kamera desteğine bağlıyken, TimeLapse MediaCodec ile gerçekleştirilebilir. Http://stackoverflow.com/questions/30972081/how-to-drop-frames-while-recording-with-mediacodec-and-inputsurface ve https://github.com/saki4510t/TimeLapseRecordingSample –

+0

Diğer bir açık kaynak projesine bakın. https://github.com/mercyorangi/sky-camera –

+0

@AlexCohn Denediğiniz için teşekkürler, ancak yukarıdaki kod, yavaş hareket durumunda benim için çalışmıyor. – IshRoid

cevap

6

Kendim çözüldü ve ben sadece Kamera API yavaş çekim ve zaman atlama Eğer setCaptureRate(double fps)

Seti video kare yakalama hızı tanımını bilmesi gerekir başlamadan önce

uygulanmaktadır kullanarak, benim çalışma kod parçasını paylaşıyorum . Bu, kayıtlı videonun oynatma oranından farklı bir video karesi yakalama oranı ayarlamak için kullanılabilir. Bu yöntem ayrıca zaman atlamasına kayıt modunu ayarlar. Zaman atlamalı video kaydında sadece video kayıtlıdır. Bir uygulama ayarlandığında, bir zaman aralığı kayıt oturumu başladığında, sesle ilgili parametreler göz ardı edilir. Timelapse

zaman atlamalı için video karesinin genişlik ve yüksekliğini size göre, kamera profiline aşağıdaki kullanmak gerekir. Aşağıdaki profillerden birini seçin veya ihtiyacınıza göre başka birini seçebilirsiniz.

profile = CamcorderProfile.get(CamcorderProfile.QUALITY_TIME_LAPSE_1080P); 

profile = CamcorderProfile.get(CamcorderProfile.QUALITY_TIME_LAPSE_720P); 

profile = CamcorderProfile.get(CamcorderProfile.QUALITY_TIME_LAPSE_480P); 

Ve şimdi setCaptureRate ve

video_recorder.setCaptureRate(profile.videoFrameRate/6.0f); 
video_recorder.setVideoEncodingBitRate(profile.videoBitRate); 

setVideoEncodingBitRate ve sonunda size MediaRecorder için yapılandırılmış Profili ayarlamanız gerekir video yapılandırmak gerekir.

video_recorder.setProfile(profile); 

ağır çekim için Ağır Çekim
da ben profil için akan yapılandırma kullanıyorum CamcorderProfile yapılandırmanız gerekir.

profile = CamcorderProfile.get(CamcorderProfile.QUALITY_HIGH_SPEED_HIGH); 
video_recorder.setCaptureRate(profile.videoFrameRate/0.25f); 
video_recorder.setVideoEncodingBitRate(profile.videoBitRate); 
video_recorder.setProfile(profile); 

slowmotion için, aksi takdirde çalışmaz CameraAPI2 kullanmak zorunda.

+0

Merhaba, cevabınız için teşekkürler, zaten 120 fps hızında yakalanan bir android kamera uygulaması (üçüncü taraf) biliyor musunuz? Teşekkürler –

+0

Google Kamera API 2 Örnek çekim 120 fps. Ancak API 2, cihaz donanımına bağlıdır. – IshRoid