Android Camera 延时优化

2023-05-23  本文已影响0人  善良的老农

下文将介绍 Camera 延时优化的几种方式,希望对你有所帮助:

前言: 需求起因是因为公司enheylig相机(300+ms)  对比  vhd相机(170ms)  本地预览延时存在 130ms 左右的延时差异

下图为优化前enheylig相机数据       

数据准确性介绍 :   来源于人工本地手机秒表 以及本地预览数据   用另一手机录制  通过滑动取帧  逐帧对比   随机抽取几十帧所得均值数据    (300+ms) 

优化前

下图为优化 后enheylig相机数据     

数据准确性介绍 :   来源于人工本地手机秒表 以及本地预览数据   用另一手机录制  通过滑动取帧  逐帧对比   随机抽取几十帧所得均值数据 (170 ms 左右)

优化后

根据内部RTC到上层渲染延时可疑点 如下:

1. TextureView  SurfaceView  渲染差异(经分析影响不大)
2. 内部低帧率补针逻辑耗时导致延时(经分析影响不大)
3. 内部rtc  YUV数据处理导致     经分析  首帧处理时间在50ms左右  后续帧数据在5ms-20ms之间(经分析影响不大)

4. 相机捕获配置  ( 该参数影响 )
 

优化方案一 : 渲染View替换  效果不大

TextureView  SurfaceView    对比效果可忽略 
优化方案二 :         优化效果不明显   

 之前配置: TEMPLATE_RECORD  用于创建一个录像请求。相机会使用标准帧率,并设置录像级别的画质。适用于所有相机设备。

 修改后配置 :

1. TEMPLATE_ZERO_SHUTTER_LAG : 
用于创建一个零延迟拍照的请求。相机会尽可能的保证照片质量的同时不损失预览图像的帧率,3A(自动曝光、自动聚焦、自动白平衡)都为 auto 模式。只适用于支持 PRIVATE_REPROCESSING 和 YUV_REPROCESSING 的相机设备。

2.CONTROL_ENABLE_ZSL    开启零延迟 模式   该模式最低支持版本为   当前版本    >=Android API   26 

优化方案三 :  祛除各类捕获参数    

1.     CONTROL_AE_TARGET_FPS_RANGE   祛除   该设置  效果提升明显

//设置曝光范围

builder.set(CaptureRequest.CONTROL_AE_TARGET_FPS_RANGE,

        new Range(5, 25));

2.     CONTROL_AE_MODE祛除   该设置  效果提升明显
 

//开启自动曝光模式

builder.set( CaptureRequest.CONTROL_AE_MODE, CaptureRequest.CONTROL_AE_MODE_ON); 

3.CONTROL_AE_LOCK 祛除   该设置    无影响
 

//自动曝光(AE)现在是否锁定为其最新计算值 否

builder.set(CaptureRequest.CONTROL_AE_LOCK, false);

上一篇 下一篇

猜你喜欢

热点阅读