这是2017年,我终于开始从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()

);

回调本身可以完成最小的工作:

Image image = reader.acquireNextImage();

image.close();

我已经检查了类似的答案,例如this one.但是他们的问题是他们使用的是JPEG图像格式而不是YUV_420_888。

如何实现类似于Camera1的性能?

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐