фактически не было)
017 год, и я наконец начинаю переключаться с Camera1 на Camera2. В Camera1 я очень полагался наsetPreviewCallbackWithBuffer()
чтобы выполнить обработку кадров в реальном времени, однако в Camera2 это работает намного медленнее, до такой степени, что становится практически непригодным для использования.
Для сравнения, на Moto G3 Camera1 может легко выдавать 30-40 FPS, тогда как на Camera2 я не мог получить более 10-15 FPS.
Вот как я создаюImageReader
imageReader = ImageReader
.newInstance(
previewSize.width, // size is around 1280x720
previewSize.height,
ImageFormat.YUV_420_888, // note, it is not JPEG
2 // max number of images, does not really affect performance
);
imageReader.setOnImageAvailableListener(
callback,
CameraThread.getInstance().createHandler()
);
Сам Callback выполняет минимально возможную работу:
Image image = reader.acquireNextImage();
image.close();
Я уже проверил похожие ответы, такие какэтот, Однако их проблема в том, что они используютJPEG
формат изображения вместоYUV_420_888
.
Как добиться производительности, аналогичной Camera1?