Camera2 ImageReader 冻结重复的捕获请求
Camera2 ImageReader freezes repeating capture request
我正在尝试使用 camera2 API 从相机中捕获图像数据。我主要使用取自 android Capture2RAW 示例的代码。在完全停止之前,只有少数图像通过(即调用 onImageAvailable)。我已经尝试使用 RAW_SENSOR 和 JPEG 格式以不同的大小进行捕获,但结果相同。我做错了什么?
this.mImageReader = ImageReader.newInstance(width, height, ImageFormat.RAW_SENSOR, /*maxImages*/ 1);
Surface surface = this.mImageReader.getSurface();
final List<Surface> surfaces = Arrays.asList(surface);
this.mCamera.createCaptureSession(surfaces, new CameraCaptureSession.StateCallback() {
// Callback methods here
}, null);
CaptureRequest.Builder captureRequestBuilder;
captureRequestBuilder = this.mCamera.createCaptureRequest(CameraDevice.TEMPLATE_PREVIEW);
captureRequestBuilder.addTarget(surface);
this.mCaptureRequest = captureRequestBuilder.build();
this.mCaptureSession.setRepeatingRequest(mCaptureRequest, null, null);
已修复。 ImageReader产生的Images需要关闭,否则会很快占满内存。
@Override
onImageAvailable(ImageReader reader) {
Image image = reader.acquireLatestImage();
// Process the image
image.close();
}
我正在尝试使用 camera2 API 从相机中捕获图像数据。我主要使用取自 android Capture2RAW 示例的代码。在完全停止之前,只有少数图像通过(即调用 onImageAvailable)。我已经尝试使用 RAW_SENSOR 和 JPEG 格式以不同的大小进行捕获,但结果相同。我做错了什么?
this.mImageReader = ImageReader.newInstance(width, height, ImageFormat.RAW_SENSOR, /*maxImages*/ 1);
Surface surface = this.mImageReader.getSurface();
final List<Surface> surfaces = Arrays.asList(surface);
this.mCamera.createCaptureSession(surfaces, new CameraCaptureSession.StateCallback() {
// Callback methods here
}, null);
CaptureRequest.Builder captureRequestBuilder;
captureRequestBuilder = this.mCamera.createCaptureRequest(CameraDevice.TEMPLATE_PREVIEW);
captureRequestBuilder.addTarget(surface);
this.mCaptureRequest = captureRequestBuilder.build();
this.mCaptureSession.setRepeatingRequest(mCaptureRequest, null, null);
已修复。 ImageReader产生的Images需要关闭,否则会很快占满内存。
@Override
onImageAvailable(ImageReader reader) {
Image image = reader.acquireLatestImage();
// Process the image
image.close();
}