Android Camera Preview Frame Отметка времени - PullRequest
15 голосов
/ 28 января 2012

Есть ли способ получить метку времени, когда был снят кадр предварительного просмотра камеры Android?

  1. нет Метод камеры возвращает метку времени
  2. вы не можете получить доступ к камере из собственногокод
  3. размер буфера не является статическим (зависит от минимального размера предварительного просмотра, полученного с камеры - когда и если метод работает), и если в очереди больше кадров, то есть буферы предварительного просмотра, которые они отбрасывают
  4. частота кадров, которая была установлена ​​(опять же, если / когда метод работает), является просто подсказкой для системы, камера может игнорировать это значение.То же самое относится и к частоте кадров, которую возвращает камера.

Я выполняю некоторую сложную обработку изображений в режиме реального времени, и небольшие ошибки при сложении представляют собой реальную проблему.

1 Ответ

4 голосов
/ 06 февраля 2012

Единственный способ, которым я знаю, это использовать SurfaceTexture вместо обратного вызова предварительного просмотра.

SurfaceTexture имеет метод getTimestamp (), который возвращает наносекунды с некоторого неопределенного (но постоянного) времени.

К сожалению, SurfaceTexture - это внешняя текстура OpenGL, поэтому работать с обратным вызовом предварительного просмотра не так просто.

С другой стороны, он значительно эффективнее ЦП: обратный вызов предварительного просмотра выполняет преобразование цвета и изображенияизменение в программном обеспечении, в то время как можно использовать функции OpenGL ES2 для выполнения значительных объемов обработки изображений на GPU.

...