Camera2中的预览回调比Camera1中的慢得多 [英] Preview callback in Camera2 is significantly slower than in Camera1
问题描述
现在是2017年,我终于开始从Camera1切换到Camera2.在Camera1中,我非常依赖setPreviewCallbackWithBuffer()
进行实时帧处理,但是在Camera2中,它的工作速度要慢得多,以至于几乎无法使用.
It is 2017 and I am finally starting switching from Camera1 to Camera2. In Camera1 I was greatly relying on setPreviewCallbackWithBuffer()
to perform a real time frame processing, however in Camera2 this works much much slower to the point where it becomes almost unusable.
相比之下,在Moto G3上,Camera1可以轻松产生30-40 FPS,而在Camera2上,我不能超过10-15 FPS.
To compare, on Moto G3 Camera1 can easily produce 30-40 FPS while on Camera2 I couldn't get more than 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 itself does the minimum possible job:
Image image = reader.acquireNextImage();
image.close();
我已经检查了类似的答案,例如这一个.但是,他们的问题是他们使用的是JPEG
图片格式而不是YUV_420_888
.
I already checked similar answers, such as this one. However their problem is that they're using JPEG
image format instead of YUV_420_888
.
如何实现与Camera1相似的性能?
How to achieve a performance similar to Camera1?
推荐答案
在同时支持Camera1和Camera2 API的应用程序上,我遇到了相同的性能问题.当Android版本高于Lollipop时,我曾经切换到Camera2 API,从而导致非常糟糕的性能(我当时有两个目标:ImageReader和Surface).
I had the same performance problems on an app supporting both Camera1 and Camera2 APIs. When Android version was above Lollipop I used to switch to Camera2 API resulting in very bad performances (I had two target at time: an ImageReader and a Surface).
我最终仅在电话获得了完整的硬件支持时才使用Camera2 API.您可以使用 CameraCharacteristics.INFO_SUPPORTED_HARDWARE_LEVEL
I ended up to use Camera2 API only when there was full Hardware support by the phone. You can check using the CameraCharacteristics.INFO_SUPPORTED_HARDWARE_LEVEL
希望有帮助
这篇关于Camera2中的预览回调比Camera1中的慢得多的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!