webrtc QOS方法七(摄像头采集帧率调整)

一、发现问题

使用罗技C270摄像头,进行webrtc视频通话QOS测评时发现,在网络0延时,0丢包时,GetStats打印摄像头采集到的帧率一直持续在15-17fps,无法达到摄像头标注的30fps的采集能力。在17fps下视频通话,视频质量有轻微的顿挫感,流畅性不好。

检查CPU占有率、编码解码时间,都没有异常。按理来说性能是可以达到30fps的实时通讯能力的。

二、分析问题

1、首先确认到底是不是摄像头采集出来的帧率就低,还是系统调度慢,导致采集帧率低。

     使用ffmpeg/potplay/amcap多个视频采集软件,打开本地摄像头,查看采集帧率的打印,发现摄像头采集帧率真的就这么低。

     ffmpeg的命令行如下:

     ffmpeg -list_devices true -f dshow -i dummy (显示要采集摄像头设备名称)

     ffmpeg -f dshow -i video="Logitech C270" -r 30 -vcodec libx264 -acodec copy -preset:v ultrafast -tune:v zerolatency out.ts

     

2、确认是摄像头问题后 ,就头脑风暴了一把,怀疑摄像头采集的是场编码,不是帧编码,但是确认摄像头是按帧采集,视频帧率还是升不上来。

3、没办法,只能梳理摄像头成像及采集原理。

从视频采集到视频成像,里面有很多概念+原理。其中有个光圈、快门、自动曝光,这个过程有可能影响视频采集帧率。

摄像头一般会开启AE(自动曝光)功能,当开启这个功能后,这三个参数需要符合下面这个关系式:(APEX(The Additive System of Photographic Exposure),它是由美国国家标准机构ASA,为了方便计算胶片机的曝光参数,提出的一个经验公式,也称为曝光方程)

其中,T表示曝光时间,A表示光圈值(即常说的F-number),B表示环境光平均亮度,S表示是相机感度。K是任意常数,一般由相机厂商决定,它和相机厂商所认为的正确曝光有关,现在一般将K取值为12.5。

可以看出,B平均亮度值会影响A光圈和T曝光时间。而曝光时间,理论上可以影响视频采集帧率。

三、验证问题

1)验证不同光强度下帧率大小

既然怀疑是摄像头开启AE功能,摄像头根据场景平均亮度动态调整光圈和曝光时间导致,使用potplay打开本地摄像头,观察不同强度光下的摄像头视频帧率。验证是不是这么回事。

1、遮挡摄像头,无光下摄像头采集帧率16fps。

2、用手电筒照射摄像头,强光下摄像头采集帧率,30fps。

3、建立视频连接,使用GetStats打印不同光强度下,视频通话的帧率,发现确实强光下,为30fps,无光下为17fps。

delay:0 ms lost:0%,{send kbps:1742, frame:145, cap rate:28, send rate:30
delay:0 ms lost:0%,{send kbps:1724, frame:148, cap rate:30, send rate:30
delay:0 ms lost:0%,{send kbps:1683, frame:147, cap rate:29, send rate:30
delay:0 ms lost:0%,{send kbps:1673, frame:145, cap rate:30, send rate:30
delay:0 ms lost:0%,{send kbps:1688, frame:149, cap rate:30, send rate:30
delay:0 ms lost:0%,{send kbps:1625, frame:132, cap rate:25, send rate:25
delay:0 ms lost:0%,{send kbps:1561, frame:112, cap rate:17, send rate:22
delay:0 ms lost:0%,{send kbps:1607, frame: 81, cap rate:17, send rate:17
delay:0 ms lost:0%,{send kbps:1693, frame: 82, cap rate:16, send rate:17
delay:0 ms lost:0%,{send kbps:1837, frame: 97, cap rate:25, send rate:25
delay:0 ms lost:0%,{send kbps:1418, frame:124, cap rate:25, send rate:25
delay:0 ms lost:0%,{send kbps:1005, frame:123, cap rate:24, send rate:25
delay:0 ms lost:0%,{send kbps:1392, frame:125, cap rate:25, send rate:25
delay:0 ms lost:0%,{send kbps:1557, frame:125, cap rate:25, send rate:25
delay:0 ms lost:0%,{send kbps:1251, frame:125, cap rate:25, send rate:25

2)验证关闭AE功能,不同光强度下帧率大小

既然确认是开启摄像头的AE(自动曝光)功能导致该问题。若想提高视频采集帧率,可以关闭该功能,调整exposure参数,可提升视频采集帧率。

1、关闭AE功能。

2、遮挡摄像头,无光下摄像头采集帧率15fps。

3、用手电筒照射摄像头,强光下摄像头采集帧率,15fps。

四、解决问题

1)方法一

关闭AE功能,调整exposure参数,保证视频帧率恒定在30fps。

exposure取值范围在0到-13之间,越靠近0,帧率越小。实测配置在-5左右 ,可以保证30fps帧率。

但是该方法视频在不同光源下,不能自适应调整光圈和快门,成像质量有风险。

2)方法二

物理方法,尽量增大环境的光强^_^

六、参考

https://blog.csdn.net/shiyimin1/article/details/81409218

https://zhidao.baidu.com/question/1987221778804625147.html

https://blog.csdn.net/u011776903/article/details/78783975

https://blog.csdn.net/bingqingsuimeng/article/details/61193241

https://blog.csdn.net/wang714818/article/details/78088424

 

 

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值