CameraX ImageAnalysis 输出帧大小设置

CameraX ImageAnalysis 输出帧大小设置

CameraX 是对 Jetpack 的补充,可让您更轻松地利用 Camera2 API 的功能
它提供一致且易于使用的 API 界面,适用于大多数 Android 设备,并可向后兼容至 Android 5.0(API 级别 21)。
CameraX 架构
GitHub: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不适合
  • Camera2 录像并获取实时帧可参考 Gitee:Camera2VideoJava

你可能感兴趣的:(Android开发,android)