Буфер обратного вызова для предварительного просмотра камеры Android не заполнен: всегда заполнен нулями - PullRequest
0 голосов
/ 01 февраля 2019

Пока вызывается Camera.PreviewCallback#onPreviewFrame, переданный буфер byte[] не заполняется камерой: он всегда полон нулей.

Причина, по которой я использую устаревший API, заключается в том, что яполучал очень низкую частоту кадров, используя более новую.Поскольку мои камеры считаются LEGACY, я рекомендовал попробовать устаревший API.

Мой код, где вызывается обратный вызов, но буфер пуст:

camera = Camera.open();
camera.setParameters(configurator.getParameters());
Size size = configurator.getOutputSize();
camera.addCallbackBuffer(new byte[size.getWidth() * size.getHeight() * ImageFormat.getBitsPerPixel(ImageFormat.YV12) / 8]);
camera.setPreviewCallbackWithBuffer(this);
camera.startPreview();

Одинстранная вещь, которую я вижу в журнале, заключается в следующем: когда я вызываю camera.setPreviewCallbackWithBuffer(this);, появляется это сообщение отладки: D/Camera-JNI: (tid:3466)[release camera] - X context=0x0.
Кроме того, все модификации буфера очищаются: буфер фактически заполняется нулями перед каждымпозвонить на обратный звонок.

1 Ответ

0 голосов
/ 01 февраля 2019

Проблема заключалась в недостаточном освещении по сравнению со временем экспозиции: я установил максимальный диапазон FPS для предварительного просмотра, но это привело к тому, что время экспозиции было слишком низким по сравнению с освещением в моей комнате.В результате получилось абсолютно черное изображение, за исключением случаев, когда я направил камеру прямо на источник света.Изменение диапазона FPS на более низкое исправило мою проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...