Android camera2 加速

Android camera2 speed-up

我需要加快 camera2 的拍摄速度 API。我试图从 google 个示例构建 "android-Camera2Basic" 个项目。对于示例中的默认捕获请求:

 if (null == activity || null == mCameraDevice) {
            return;
        }
        // This is the CaptureRequest.Builder that we use to take a picture.
        final CaptureRequest.Builder captureBuilder =
                mCameraDevice.createCaptureRequest(CameraDevice.TEMPLATE_STILL_CAPTURE);
        captureBuilder.addTarget(mImageReader.getSurface());

        // Use the same AE and AF modes as the preview.
        captureBuilder.set(CaptureRequest.CONTROL_AF_MODE,
                CaptureRequest.CONTROL_AF_MODE_CONTINUOUS_PICTURE);
        captureBuilder.set(CaptureRequest.CONTROL_AE_MODE,
                CaptureRequest.CONTROL_AE_MODE_ON_AUTO_FLASH);

        // Orientation
        int rotation = activity.getWindowManager().getDefaultDisplay().getRotation();
        captureBuilder.set(CaptureRequest.JPEG_ORIENTATION, ORIENTATIONS.get(rotation));

        CameraCaptureSession.CaptureCallback CaptureCallback
                = new CameraCaptureSession.CaptureCallback() {

            @Override
            public void onCaptureCompleted(CameraCaptureSession session, CaptureRequest request,
                                           TotalCaptureResult result) {
                showToast("Saved: " + mFile);
                unlockFocus();
            }
        };

        mCaptureSession.stopRepeating();
        mCaptureSession.capture(captureBuilder.build(), CaptureCallback, null);

发送请求需要 200-300 毫秒

mCaptureSession.capture(captureBuilder.build(), CaptureCallback, null);

并得到结果

onImageAvailable(ImageReader reader)

这个时间可以缩短吗?我尝试为抓包请求设置不同的参数,如TEMPLATE_ZERO_SHUTTER_LAG、NOISE_REDUCTION_MODE_OFF、EDGE_MODE_OFF等,但没有任何效果。 如果我尝试捕捉连拍,那么除了第一张图像之外的所有图像都非常快,不会超过 30-40 毫秒。如何减少第一张图片的拍摄时间?

回复您的评论,但使其成为正确答案:

如果您检查幻灯片 #22 上 Samsung dev. conference 中的那些幻灯片,它会显示 camera2 模型。如您所见,有几个队列:

  • 待处理请求队列
  • 在飞行捕获队列中
  • 将图像队列输出到显示相机预览的 Surface
  • 以及对onCaptureComplete
  • 的回调

这解释了为什么第一次拍摄很慢,但在连拍模式下,下一张图像来得非常快。请求和处理已排队,第一个需要 300 毫秒才能到达回调,但下一个已经 "right behind it"。

如果您对新的 API 感兴趣(谁不感兴趣,camera2 太棒了),您还可以查看 full video from the Samsung Dev. conference on YouTube. And the official docs。有很多关于这些的好信息。