WebRTC 中的Quality Scaler

Quality Scaler 是WebRTC中根据视频质量, 自适应调整分辨率的方案, 其思路大体是: 观察视频编码的丢帧率和qp的变化, 确定Capturer中的video adaptor 是否要调整编码的分辨率. 其代码位于:
$(ROOT)/src/webrtc/modules/video_coding/utility
实现相当简单,
观察5秒内编码的平均qp和丢帧率,
如果farme drop rate > 60%, 认为质量不佳, 下调分辨率. 这个条件一般不满足, 如果是openh264 encoder, 即使enable frame drop, drop rate 也是<=50%的, 如果是iOS video toolbox, 它不会丢帧, android 的mediacodec行为跟iOS类似, 也不丢帧。
如果video 类型是h264, 平均qp 小于等于 24, 就会调用ReportQpLow, 要求Capturer上调分辨率, 平均qp 大于等于 37, 就调用ReportQpHigh, 要求Capturer下调分辨率.
实际使用时, QP的变化跟设置的目标码率, 编码的内容复杂度直接相关, 在目标码率变化不大的时候, 因为编码内容不同,会导致视QP有大的波动。 普通的想法都会把视频分辨率跟目标码率产生对应, 但是在这里, 两者却没有必然关系。 在实际使用中,在目标码率不变的时候, 有摄像头对着运动目标, 分辨率下降, 对着静止目标, 分辨率上升。也有目标码率调整至将近2M, 视频分辨率却只能保持在360p(640x360). WebRTC的很多设计让人钦佩, 但是对于这个设计,虽然不能说无理,却有些诡异。 我觉得应该有更好的方法。
本文讨论的代码版本是branch 58.

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值