0

我需要从我的 camera2getFrameNumber接收到的 Image 对象。ImageReader

目前,我收到以下代码的不同时间戳,因此,我无法映射回调getFrameNumberCameraResult

 CameraCaptureSession.CaptureCallback captureListenerLeft = new CameraCaptureSession.CaptureCallback() {
        @Override
        public void onCaptureCompleted(CameraCaptureSession session, CaptureRequest request, TotalCaptureResult result) {
            super.onCaptureCompleted(session, request, result);

                Log.d(TAG, "#### Camera Preview: FrameNumber:[" + result.getFrameNumber()+"] TimeStamp:[" + result.get(CaptureResult.SENSOR_TIMESTAMP) / 1000000 + "] Expo:[" +result.get(CaptureResult.SENSOR_EXPOSURE_TIME)+ "] FrameDuration:[" + result.get(CaptureResult.SENSOR_FRAME_DURATION) + "]");

        }
    };

现在在 ImageReader 回调:-

ImageReader.OnImageAvailableListener mImgLeftCameraListener=new ImageReader.OnImageAvailableListener() {
        @Override
        public void onImageAvailable(ImageReader imageReader) {

            try{
                Image mImage=imageReader.acquireNextImage();
                long mTimeStap=mImage.getTimestamp()/1000000;              
                mImage.close();
            }catch (Exception exc){

                exc.printStackTrace();
            }

        }
    };

现在的问题是图像阅读器mTimeStap与值不匹配result.get(CaptureResult.SENSOR_TIMESTAMP) / 1000000,所以我无法映射 getFrameNumber。

注意:我的 android 是为 Qualcomm 820 构建的 7.1.1 自定义操作系统。

4

1 回答 1

0

时间戳是匹配这些的唯一方法;根据 API 的设计,它们应该匹配。您在时间戳值中看到了哪些类型的差异?

编辑:并且补充一点,没有办法从图像阅读器中获取帧号;该值根本没有传递给 ImageReader。

于 2018-05-23T16:40:03.660 回答