如何将输入配置传递给Camera 2 Android

时间:2018-10-08 04:49:45

标签: android android-camera2

我正在开发一个android相机应用程序,我想在拍摄照片之前传递捕获大小以配置相机。

这是我的代码:

try {
    mCaptureRequestBuilder = cameraDevice.createCaptureRequest(CameraDevice.TEMPLATE_PREVIEW);
    mCaptureRequestBuilder.addTarget(previewSurface);

    InputConfiguration inputConfiguration = new InputConfiguration(1920, 1080, ImageFormat.JPEG); //error here.

    cameraDevice.createReprocessableCaptureSession(inputConfiguration, Arrays.asList(previewSurface), new CameraCaptureSession.StateCallback() {
            @Override
            public void onConfigured(@NonNull CameraCaptureSession cameraCaptureSession) {
                try {
                    cameraCaptureSession.setRepeatingRequest(mCaptureRequestBuilder.build(), null, handler);
                } catch (CameraAccessException e) {
                    e.printStackTrace();
                }
            }

            @Override
            public void onConfigureFailed(@NonNull CameraCaptureSession cameraCaptureSession) {
                Toast.makeText(getApplicationContext(), "Camera Preview Failed!!", Toast.LENGTH_SHORT).show();
            }
    }, null);
}

因此,我正在尝试将输入配置传递给此处的相机。 我的问题是我在InputConfiguration行上遇到了错误。 这是我的错误:

java.lang.IllegalArgumentException: input format 256 is not valid

我尝试了很多不同的ImageFormat,例如JPEG,UNKNOWN,NV21等。没用 可以帮助我解决此错误,并且如果我的方法在与相机交互时出错,也可以告诉我。

3 个答案:

答案 0 :(得分:0)

您正在使用TEMPLATE_PREVIEW,它不支持 ImageFormat.JPEG

Camera2 的预览命令支持YUV 420like this

InputConfiguration inputConfiguration = new InputConfiguration(1920, 1080, ImageFormat.YUV_420_888);

答案 1 :(得分:0)

仅在reprocessing用例中使用输入配置,在这些用例中,您具有捕获部分处理的帧的应用程序级循环缓冲区。

当用户按下快门按钮时,您会将捕获的帧之一发送回相机设备进行最终处理。输入配置用于选择返回相机的路径的大小和格式。

对于简单的捕获应用程序,您只关心输出配置。

答案 2 :(得分:0)

这里描述了另一个可悲的情况:https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#REPROCESS_MAX_CAPTURE_STALL

检查相机是否支持后处理,否则您将根本不会通过“输入格式无效”,因为不允许进行后处理。

此外,如果缺少此键值,则可能表明Yuv重新处理不可用:https://developer.android.com/reference/android/hardware/camera2/CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_YUV_REPROCESSING