webrtc tcc详解

之前写过<<webrtc gcc详解>>,有网友反馈过当前用webrtc tcc的拥塞算法比较多,这里详解一下webrtc tcc算法,本文主要内容:

  • tcc架构

  • 趋势滤波算法

  • webrtc tcc与gcc的比较

1.前言

webrtc的tcc算法,具体做法是,接收端监控两个数据,并反馈给发送端。

  • 丢包率: 接收端计算出丢包率,定期发送rtcp rr报文(内有丢包率)给发送端,发送端通过丢包率的大小来决定是否降低编码的bitrate;

  • Transport-wide RTCP Feedback Message,接收端记录每个rtp报文的wideSeqNumber,到达timestamp,整理后打包成rtcp tcc报文发送给rtp发送端,接收端整理rtcp tcc报文中的到达timestamp与发送端的时间等数据,通过趋势滤波算法,判断拥塞程度,是否降低码率,增加码率,或保持码率。

基于丢包率来调整动态编码,是比较简单,很多厂家经常在sfu服务端进行调整,如:如果不是长肥型网络,在丢包率<30%的情况下,rtcp rr中的丢包率和丢包总数欺骗性的填写0,这样发送端(尤其是web端)就不会轻易的降低bitrate,到达测试的良好效果

但是基于tcc架构的带宽预测,相对比较复杂(但是比卡曼滤波简单很多),本文主要讲解这部分的原理和实现

2. Webrtc Tcc架构

2.1 sdp的关键信息

  • rtp extension header

需要使能这个rtp扩展项:

a=extmap:4 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01

如上例子,extensionId=4,表示有rtp报文将携带扩展项transport-wide sequence。在rtp的扩展头中会有16bit的transport-wide sequence,注意这个wide seq不是针对某个视频或音频,而是针对某个PeerConnection(其中可能传输多个音视频),rtp报文的扩展项如下格式:

0                   1                   2                   3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+|       0xBE    |    0xDE       |           length=1            |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+|  ID   | L=1   |transport-wide sequence number | zero padding  |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  • 使能Rtcp Fb transport-cc

a=rtcp-fb:96 transport-cc

如上,在rtcp

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值