CameraCharacteristics returns 中的 get(CameraCharacteristics.CONTROL_AE_AVAILABLE_TARGET_FPS_RANGES) 因 OS 版本而异

get(CameraCharacteristics.CONTROL_AE_AVAILABLE_TARGET_FPS_RANGES) in CameraCharacteristics returns differently by OS version

已测试 OS 版本。 & 设备:Android 5.0.2/6.0.1 两个设备都是 Galaxy Tab S2

当我尝试通过 Camera2 API 访问相机以获得设备支持的 fps 范围时,我从 get(CameraCharacteristics.CONTROL_AE_AVAILABLE_TARGET_FPS_RANGES).

得到了一个奇怪的结果

如果我在 Android 5.0.2 上尝试这个,我得到如下 fps 范围, [[15000, 15000], [24000, 24000], [15000, 30000], [30000, 30000]].

但是如果我在同一台设备上尝试此代码但 OS 版本 (6.0.1) 不同,我会得到如下所示的不同结果。 [[15, 15], [24, 24], [15, 30], [30, 30]]

为什么这些结果不同?我认为这是由不同的 OS 版本引起的。

为了更好地理解,我将我的一些代码放在这里,这些代码是参考 this.

编写的
CameraManager manager = (CameraManager)activity.getSystemService(Context.CAMERA_SERVICE);
...
String cameraId = manager.getCameraIdList()[0];
CameraCharacteristics characteristics = manager.getCameraCharacteristics(cameraId);
Range<Integer>[] fpsRanges = characteristics.get(CameraCharacteristics.CONTROL_AE_AVAILABLE_TARGET_FPS_RANGES);

不幸的是,早期 Android 版本存在一个错误,即某些设备上可用 FPS 范围的值不正确;正如您在 6.0.1 中看到的那样,这在以后的版本中得到了修复。

这些值应该只是每秒帧数;他们无意中达到了 1000* 帧率。

这意味着您必须小心解释旧 OS 版本上的此值,尤其是在 LEGACY 设备上。