2013-04-23 32 views
6

Şu anda onPreviewCallback'i kullanıyorum, böylece önizlemede fotoğraf makinelerinden kareleri yakalayabilir ve bunları http yoluyla aktarabilirim. çalışır ama sonra ben artık bir önizleme geri arama yok, öyle görünüyor ki, kaydı başlatmak için bir komut veVideo kaydederken önizleme geri arama tutmak mı?

.

Yani, nasıl bu kadar benim sunucuya yüzeyden çerçeveleri göndermek VE cihazı video kayıt hem önizleme geri arama duruyorsun?

cevap

5

Android Kamera ile uzun süredir çalışmadım. Ben ele olduğunu gördü

Camera onPreviewFrame not called How to show real time filtered camera preview while recording videos?

2): Eğer

kaydederken Ancak, hatırlıyorum olarak

1) onPreviewCallback Bu soruların çift belirtilenlerin çağrılmaz SipDroid ve yol izleyen diğer Android SIP istemcileri birkaç (bu 1-2 yıl önce olduğunu, bu yüzden bu yöntem outdates olabilir):

    borunun yuva alma
  • bir boru oluşturuldu
  • Filedescriptor sarılmış sürekli bir diş okundu borunun yuva gönderme MediaRecorder setOutputFile
  • geçildi.
  • Bu şekilde, bir dosyaya yazılan içeriği alabilirsiniz
  • Şimdi, içerikle nasıl baş edeceğimiz sorunu (çünkü H.263 veya H.264 kodlanmış ve sesle karıştırılabilir) ses ile video kaydedersiniz).
  • içeriği (ancak ağrı kıçından var)

3) Sen onPreviewFrame + Sesli kayıt başlatmak ve mp4 için ffmpeg veya böyle bir şey) kullanarak (kendiniz kodlamak kullanabilirsiniz çözümlenen bazı heuristical algoritmalar vardı dosya. Bu şekilde MediaRecorder kaydını başlatmanız gerekmez. Ben başlamak ve çökmesini olmadan Kaydı durdurmak için kamera ve MediaRecorder aldığımda

1

önizleme geri arama denilen alma dururdu nerede, açıklanan gibi hala bir sorun vardı (kolay değildi).

nihayet buldum düzeltme mediaRecorder.start() sonra setPreviewCallback için bir çağrı ekleme ve başka mediaRecorder.stop sonra() oldu. Bunun doğru olup olmadığından emin değilim, ama üzerinde çalıştığım Razr M üzerinde çalıştım.

2

Bunu, medya recorder.start sonra bu yöntemleri() çağırabilir aşağıdaki şekilde çağrıldığını:

camera.reconnect(); 
camera.setPreviewCallback(); 
surfaceview.getHolder().addCallback(); 

nedenler: camera.unlock sonra

  1. () denir, başka işlem (Burada medya kaydedici işlemidir) kamerayı kullanabilir; İşlem bittiğinde, kilidi tekrar edinecek ve kamerayı kullanmaya devam etmenizi sağlayacak olan kameraya yeniden bağlanmanız gerekir. onun bazı devlet sonra yeniden değiştirilebilir çünkü
  2. Ve sonra, kamera yeniden sonra SurfaceView çerçeve veri geri arama yeniden kaydedin.

Uygulamamda sizinkiyle aynı sorunla karşılaştım ve bunu düzeltdim. Umarım sorunlarını çözebilir!