Камера для предварительного просмотра камеры для камеры
Есть ли способ получить временную метку, когда был взят кадр предварительного просмотра камеры Android?
- no Метод камеры возвращает временную метку
- вы не можете получить доступ к Camera from native code
- размер буфера не является статическим (зависит от размера предварительного просмотра, полученного с камеры, - когда и если этот метод работает), и если в очереди больше кадров, тогда есть буферы предварительного просмотра, которые они отбрасываются.
- частота кадров, которая была установлена (опять же, если/когда метод работает) является лишь подсказкой для системы, камера может игнорировать значение. То же самое касается частоты кадров, которые камера возвращает.
Я занимаюсь обработкой тяжелых изображений в реальном времени, а небольшие ошибки при объединении - настоящая проблема.
Ответы
Ответ 1
Единственный способ, которым я это знаю, - использовать SurfaceTexture вместо обратного вызова предварительного просмотра.
SurfaceTexture имеет метод getTimestamp(), который возвращает наносекунды с некоторого неопределенного (но постоянного) времени.
К сожалению, SurfaceTexture является внешней текстурой OpenGL, поэтому работать с обратным вызовом предварительного просмотра не так просто.
С другой стороны, это существенно больше эффективности ЦП: обратный вызов предварительного просмотра выполняет преобразование цветов и изменение изображения в программном обеспечении, тогда как можно использовать функции OpenGL ES2 для выполнения значительных объемов обработки изображений на графическом процессоре.