2012-01-27 14 views
13

¿Hay alguna manera de obtener una marca de tiempo de cuando se capturó el Marco de vista previa de la cámara de Android?Marco de vista previa de la cámara de Android Marca de tiempo

  1. ningún método cámara está volviendo una marca de tiempo
  2. no podrá acceder a la cámara desde el código nativo
  3. tamaño del búfer no es estática (depende del tamaño min vista previa adquirida por la cámara - cuando y si el método es trabajando) y si hay más cuadros en la cola, hay buffers de vista previa que se descartan
  4. velocidad de fotogramas que se estableció (de nuevo, si/cuando el método está funcionando) es solo una pista para el sistema, la cámara puede ignorar el valor. Lo mismo ocurre con la velocidad de cuadros que la cámara está devolviendo.

Estoy haciendo un gran procesamiento de imágenes en tiempo real, y los pequeños errores cuando se suman son un problema real.

+0

¿Te refieres a la devolución de llamada onPreviewFrame, verdad? Debería haber datos EXIF ​​en el byte [] que se pasa, asumiendo que es un JPEG al menos. – michaelg

+0

Por lo que puedo decir, no hay exif en los datos, solo imagen cruda – LambergaR

+0

Por la falta de EXIF: No estoy seguro de si esto funcionará, pero ¿ha intentado establecer explícitamente el formato de vista previa a ImageFormat.jpeg? El formato NV21 (predeterminado) puede no tener ningún lugar para almacenar los datos EXIF. –

Respuesta

4

La única manera que conozco de hacer esto es usar una Textura de superficie en lugar de la devolución de llamada previa.

SurfaceTexture tiene un método getTimestamp() que devuelve nanosegundos desde un tiempo no especificado (pero constante).

Desafortunadamente, SurfaceTexture es una textura externa OpenGL, por lo que no es fácil trabajar con la devolución de llamada previa. Por otro lado, es sustancialmente más eficiente de la CPU: la devolución de vista previa realiza la conversión de colores y la remodelación en software, mientras que las características de OpenGL ES2 permiten procesar cantidades significativas de procesamiento de imágenes en la GPU.

+0

Sería genial, pero hay un problema ... "Dado que: Nivel de API 11" es algo que no está tan contento de ver cuando intenta soportar plataformas más antiguas :) – LambergaR

+0

Desgraciadamente, no lo sé siendo posible antes del nivel API 11 :( –

Cuestiones relacionadas