使用Camera2从PreviewHighSpeedCamera回调方法onCaptureCompleted()读取输入帧

时间:2017-04-20 09:15:03

标签: android android-camera2 camera2

使用Camera2从PreviewHighSpeedCamera回调方法onCaptureCompleted()读取输入帧

我们正在尝试将摄像头预览设置为120fps以上,即使用Camera2 API的PreviewSessionHighSpeed,下面是代码片段

private void updatePreview() {

    if (null == mCameraDevice) {
        return;
    }

    try {

        setUpCaptureRequestBuilder(mPreviewRequestBuilder);
        HandlerThread thread = new HandlerThread("CameraPreview");
        thread.start();
        List<CaptureRequest> mPreviewBuilderBurst = mPreviewHighSpeedCamera.createHighSpeedRequestList(mPreviewRequestBuilder.build());

        mPreviewHighSpeedCamera.setRepeatingBurst( mPreviewBuilderBurst, new CameraCaptureSession.CaptureCallback(){
            @Override
            public void onCaptureCompleted(CameraCaptureSession session, CaptureRequest request, TotalCaptureResult result) {

                super.onCaptureCompleted(session, request, result);

                // We want to read the captured image buffer here
                // We tried to use ImageReader but highSpeedCameraSession doesnnot support ImageReader surface
                // HighSpeedcameraSession only supports preview or recording surface
            }

        }, mBackgroundHandler);

    } catch (Exception e) {

        e.printStackTrace();

    }
}

我们可以为PreviewSessionHighSpeed设置相机预览帧,但是在OnCaptureComplete()之后无法获得帧缓冲。

任何人都知道如何在OnCaptureCompete()之后获得帧缓冲区?

提前致谢

1 个答案:

答案 0 :(得分:0)

受约束的高速录制会话受到很大限制(因此名称);不支持应用程序访问高帧率数据 - 它只能发送到视频编码器。

预览也只有30fps,因此这里不能使用SurfaceTexture来获取高速数据。

只有在常规目标FPS范围内列出高帧率的设备才能支持更灵活的输出;截至今天,我还没有发现任何此类设备。如今,高速录音在移动电话功能方面处于领先地位。