Android camera2加速

时间:2015-02-17 17:03:10

标签: android android-camera

我需要加速捕获camera2 API。我试图从谷歌样本构建“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毫秒。如何减少第一张图像的拍摄时间?

1 个答案:

答案 0 :(得分:6)

回复你的评论,但要把它变成一个正确的答案:

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

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

Camera2 API core operation model

这解释了为什么第一次捕捉很慢,但在突发模式下,下一张图像速度非常快。请求和处理是排队的,第一个需要300毫秒才能一直返回到回调,但下一个已经#34;就在它后面"。

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