Camera2中的预览回调比Camera1中的慢得多 [英] Preview callback in Camera2 is significantly slower than in Camera1

查看:783
本文介绍了Camera2中的预览回调比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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆