ImageReader 使相机滞后

ImageReader makes Camera lag

我遇到了一个问题,除了用于显示相机输出的 SurfaceView 之外,我还使用了 ImageReader。我像这样添加了 SurfaceView 本身和 ImageReader 的表面(并添加了 ImageReader 侦听器以便接收新图像上的事件):

preview.addTarget(_surfaces.get(1)); //ImageReader surface
preview.addTarget(_surfaces.get(0)); //SurfaceView of the layout

但是,如果我删除 ImageReader,应用程序工作正常(相机没有滞后)。但是一旦添加了 ImageReader 表面,相机就会滞后很多。任何人有什么想法可以使相机 运行 更流畅? ImageReader 是这样创建的:

reader = ImageReader.newInstance(640, 480, ImageFormat.JPEG, 1);

我猜延迟可能是由于图像必须渲染两次(?),既在布局的 SurfaceView 上又在 ImageReader 本身上

原来是ImageReader的ImageFormat的问题。将 ImageFormat.JPEG 更改为例如 ImageFormat.YUV_420_888 修复了滞后问题。