2012-01-27 19 views
13

Android Kamera Önizleme Çerçevesi çekildiğinde bir zaman damgası almanın bir yolu var mı? Hiçbir Kamera yöntemi bir zaman damgası dönüyorAndroid Makine Önizleme Kare Zaman damgası

  1. Eğer
  2. tampon boyutu (statik değildir yerli kodundan Kamera erişemez kameradan alınan dk önizleme büyüklüğüne bağlıdır - ne zaman ve yöntem ise çalışma) ve kuyrukta daha fazla kare varsa o zaman onlar önizleme arabellekleri atılır
  3. ayarlanmış olan çerçeve hızı (yine, yöntem çalışıyorsa) sadece sisteme bir ipucu, kamera görmezden gelebilir değer. Aynı kamera geri dönen kare hızı için de geçerli.

Gerçek zamanlı olarak çok yoğun bir görüntü işleme gerçekleştiriyorum ve birlikte eklendiğinde küçük hatalar gerçek bir sorundur.

+0

onPreviewFrame geri aramasına atıfta bulunuyorsunuz değil mi? En az bir JPEG olduğunu varsayarak, bayt [] 'da EXIF ​​verileri olmalıdır. – michaelg

+0

Anlatabildiğim kadarıyla, verilerde bir exif yok, sadece ham imge – LambergaR

+0

EXIF ​​eksikliğinde: Bu işe yarayacak, ancak önizleme formatını açık bir şekilde ImageFormat.jpeg olarak ayarlamaya çalıştığınızdan emin değil misiniz? NV21 formatı (varsayılan) EXIF ​​verilerini saklayacak herhangi bir yere sahip olmayabilir. –

cevap

4

Bunu yapmamın tek yolu, önizleme geri araması yerine SurfaceTexture kullanmasıdır.

SurfaceTexture, bazı belirtilmemiş (ancak sabit) zamandan beri nanosaniye döndüren bir getTimestamp() yöntemine sahiptir.

Ne yazık ki, SurfaceTexture bir OpenGL dış dokudur, bu nedenle önizleme geri çağırma ile çalışmak kolay değildir.

Diğer yandan, daha fazla CPU etkin: Önizleme geri çağırma, yazılımda renk dönüştürme ve görüntü yeniden şekillendirme yaparken, GPU'da önemli miktarda görüntü işleme yapmak için OpenGL ES2 özelliklerini kullanabilir.

+0

Harika olurdu, ama bir problem var ... "Beri: API Seviye 11", eski platformları desteklemeye çalıştığınız zaman görmekten mutlu olmadığınız bir şeydir :) – LambergaR

+0

Ne yazık ki, bunun farkında değilim API level 11'den önce mümkün olmak: –