零快门延迟可降低延迟

CameraX 1.2 开始,零快门延迟作为一种捕获模式提供。启用零快门延迟可显著降低延迟,相比 默认捕获模式,您永远不会错过精彩瞬间。

启用零快门延迟

要启用零快门延迟,请将 CAPTURE_MODE_ZERO_SHOT_LAG 传递给 ImageCapture.Builder.setCaptureMode()。如果失败,setCaptureMode() 将回退到 CAPTURE_MODE_MINIMIZE_LATENCY

有关捕获模式的更多信息,请参阅图像捕获指南

工作原理

零快门延迟使用一个环形缓冲区,其中存储最近的三个捕获帧。当用户按下捕获按钮时,CameraX 会调用 takePicture(),环形缓冲区会检索时间戳最接近按钮按下时间的捕获帧。然后,CameraX 会重新处理捕获会话,从该帧生成图像,并以 JPEG 格式保存到磁盘。

前提条件

在启用零快门延迟之前,请使用 isZslSupported() 确定您的设备是否满足以下要求:

对于不满足最低要求的设备,CameraX 将回退到 CAPTURE_MODE_MINIMIZE_LATENCY

零快门延迟仅适用于图像捕获。您不能将其用于视频捕获或与相机扩展一起使用。

最后,由于使用闪光灯会导致更高的延迟,因此当闪光灯开启或处于自动模式时,零快门延迟功能将不起作用。有关设置闪光灯模式的更多信息,请参阅 setFlashMode()