是否可以将 Preview、ImageAnalysis 和 VideoCapture 与 CameraX 结合使用?

Is it possible to combine Preview, ImageAnalysis, and VideoCapture with CameraX?

是否可以同时绑定PreviewImageAnalysisVideoCapture?成对组合,所有可能的组合(即 Preview+ImageAnalysisPreview+VideoCaptureImageAnalysis+VideoCapture)工作得很好但是将所有三个绑定在一起会引发以下异常。

java.lang.IllegalArgumentException: No supported surface combination is found for camera device - Id : 1.  May be attempting to bind too many use cases.
    at androidx.camera.camera2.internal.Camera2DeviceSurfaceManager.getSuggestedResolutions(Camera2DeviceSurfaceManager.java:193)
    at androidx.camera.core.CameraX.calculateSuggestedResolutions(CameraX.java:943)
    at androidx.camera.core.CameraX.bindToLifecycle(CameraX.java:293)
    at androidx.camera.lifecycle.ProcessCameraProvider.bindToLifecycle(ProcessCameraProvider.java:229)

是否有任何解决方法可以让我在使用 ImageAnalysis 的同时录制视频?

由于相机硬件管道的缩放单元限制,同时输出的数量受到限制。

一般来说,高端设备之外不支持 3 个并行 YUV 输出。

您可以在此处查看许多表格: https://developer.android.com/reference/android/hardware/camera2/CameraDevice#createCaptureSession(android.hardware.camera2.params.SessionConfiguration)

并查看可以在各种硬件级别上设置哪些类型的并行输出(PRIV 和 YUV 是这些用例的操作对象)。

只要分析以 640x480 或更低分辨率运行,完整设备就可以做到。但是 LEGACY 和 LIMITED 不能。

就是说,您可以使用 ImageAnalysis 帧来驱动预览,但肯定不太方便 - 可能需要使用 NDK 或其他麻烦。