CameraX ImageAnalysis 输出帧大小设置
- CameraX 是对 Jetpack 的补充,可让您更轻松地利用 Camera2 API 的功能
它提供一致且易于使用的 API 界面,适用于大多数 Android 设备,并可向后兼容至 Android 5.0(API 级别 21)。- CameraX 架构
https://developer.android.google.cn/training/camerax/architectur- Gitee:CameraXBasic 示例
https://gitee.com/chenjim/CameraDemo/tree/master/CameraXBasic
设置分析帧大小有以下两个函数,只能选择其一,否则运行会出错
//设置宽高比
ImageAnalysis.Builder().setTargetAspectRatio(AspectRatio.RATIO_16_9)
//设置实际的尺寸
ImageAnalysis.Builder().setTargetResolution(Size(1920, 1080))
在Camex配置中有如下描述
用例 | 内部界面分辨率 | 输出数据分辨率 |
---|---|---|
预览 | 宽高比:使目标与设置最相符的分辨率。 默认分辨率:最高的预览分辨率,或与上述宽高比匹配的最高设备首选分辨率。 最大分辨率:预览大小,指的是与设备的屏幕分辨率或 1080p (1920x1080) 匹配的最佳尺寸(以较低者为准)。 | 内部界面分辨率。提供元数据以允许 View 针对目标宽高比进行剪裁、缩放和旋转。 |
图片分析 | 宽高比:使目标与设置最相符的分辨率。 默认分辨率:默认目标分辨率设置为 640x480。同时调整目标分辨率和相应的宽高比会导致支持的最佳分辨率低于 1080p。 最大分辨率:CameraX 将其限制为 1080p。目标分辨率默认设置为 640x480;如果您希望分辨率大于 640x480,则必须使用 setTargetResolution 和 setTargetAspectRatio 从支持的分辨率中选择最接近的一个。 | 内部界面分辨率。 |
图片拍摄 | 宽高比:最适合设置的宽高比。 默认分辨率:最高的可用分辨率,或与上述宽高比匹配的最高设备首选分辨率。 最大分辨率:StreamConfigurationMap#getOutputSizes 中 JPEG 格式的相机设备的最大输出分辨率 | 内部界面分辨率。 |
真机(小米 MIX3 参数)测试结果如下,测试代码 Gitee:CameraXBasic
- setTargetAspectRatio(AspectRatio.RATIO_16_9),ImageAnalysis 最大只能输出1280x720,无法输出1920x1080
- setTargetResolution(Size(1920, 1080)) ,ImageAnalysis 最大只能输出1600x1200,无法输出1920X1080
综上
如果要拿到Camera输出的1920X1080数据,CameraX的API不适合
相关连接