zl程序教程

您现在的位置是:首页 >  其他

当前栏目

Camera的预览帧率是如何设置的

2023-03-07 09:10:00 时间

在不同的应用场景中,可能会有调整预览帧率的时候,比如客户需要录制的视频固定在24帧,或者需要优化Camera功耗(抖音功耗优化实践

(来自字节跳动技术团队的抖音功耗优化实践)

本篇文章分别从Camera1和Camera2两套API来说明如何调整相机预览帧率

Camera1

getSupportedPreviewFpsRange: 获取设备支持的fps range

总结下来有两个关键点:

  • 每个Range包含最小和最大值,如果最小值和最大值相等,则是固定帧率,否则就是动态帧率;
  • 实际的帧率值需要除以1000,比如帧率max为26623,实际帧率为26.623

动态帧率的值具体是多少受环境光线的影响,也就是和AE的关系比较大,可以参考ISP之自动曝光这篇文章

在我们固定fps的时候(比如【30,30】),可以会存在预览亮度变暗的情况

setPreviewFpsRange: 设置帧率range,值必须来自support list

帧率的设置需要在startPreview之前

如下是笔者的手机相机支持的fps range情况,可以看到最大的动态范围为【8,30】,最大的固定帧率为【30,30】

Camera2

CameraCharacteristics#CONTROL_AE_AVAILABLE_TARGET_FPS_RANGES: 通过该Tag获取支持的fps range

CaptureRequest.CONTROL_AE_TARGET_FPS_RANGE: 通过该Tag设置预览fps range

示例如下:

可以看到通过Camera2 API获取的fps range是没有乘以1000的

关于高帧率的设置,比如【240,240】,可以参考Android手机如何实现慢动作录制