WebRTC带宽评估 -- Transport-wide Congestion Control

news/2025/1/15 7:54:24/

简述:在RTP包中增加transport-wide-cc扩展头,放置传输层面的包序号。视频接收端记录RTP包的接收时间,并通过RTCP Feedback消息反馈到视频发送端,发送端结合缓存的RTP包发送时间,基于丢包和延迟估算当前带宽,从而及时调整流媒体的发送速率,减少网络拥塞,提高整体视频效果。该方法主要的估算和决策在发送方,采用了线性回归和最小二乘法。

协议:draft-holmer-rmcat-transport-wide-cc-extensions-01

具体实现:

1. SDP

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

a=rtcp-fb:102 transport-cc

2. RTP

在RTP中都增加一个Transport-wide Sequence number扩展头(扩展头格式参考RFC5285),放置传输层面的包序号,格式如下

在同一个transport中,每发送一个 RTP 包,Transport-wide Sequence number值加1。

3. RTCP

增加一个RTCP Feedback消息,用于receiver向sender反馈RTP包的接收状态(是否收到、收到时间),具体格式如下:

 base sequence number:该RTPC Feeback描述的首个RTP包的transport-wide sequence number.

packet status count: 该RTPC Feeback描述的RTP包的个数。

reference time:该RTPC Feeback描述的首个RTP包的到达时间(单位:64ms)

fb pkt.count : 该RTPC Feeback的计数。

packet chunk:描述RTP包的到达状态(详见下文描述)

recv delta:与上一个RTP包达到的时间的间隔(单位:250us)

Packet Chunk

描述RTP包的到达状态,用2个比特描述,有4种状态:

00   Packet not received

01   Packet received, small delta,此时recv delta取值[0,255],  也就是[0, 63.75] ms

10   Packet received, large or negative delta,此时recv delta取值-32768, 32767],  也就是[-8192.0, 8191.75] ms

11   [Reserved]

按位来表示包的到达状态,packet chunk有两种格式,分别为:

Run Length Chunk

 T:1 bit,表示chunk type,此时为Run Length Chunk,值为0

 S:2 bit, 表示包的到达状态

Run Length:13 bit,表示连续有多少包都是这种状态

所以在接收端看到包的状态都相同,则使用这种格式更节省。

Status Vector Chunk

 T:1 bit,表示chunk type,此时为Status Vector Chunk,值为1

 S:1 bit, 0表示后面symbol list中用1 bit表示1个RTP包的状态(0没收到,1收到),所以1个chunk最多能描述14个RTP包的到达状态;1表示后面symbol list中用2 bit表示1个RTP包的状态(00没收到,01收到小delta,10收到大delta),所以1个chunk最多能描述7个RTP包的到达状态

因为,如果有大的delta的时候,才用S=1.

对比上述两种chunk,1个Status Vector Chunk最多能表示14个包的状态,所以如果有连续>=14包的状态相同,则优先使用Run Length Chunk。一个Run Length Chunk最多能表示2^13 -1 个包的状态。

一个RTCP Feedback中可以混合使用Run Length Chunk和Status Vector Chunk。

一个WebRTC的抓包示例:(使用janus-gateway测试)


http://www.ppmy.cn/news/973318.html

相关文章

ChatGPT:开启AI新纪元

ChatGPT是一种聊天机器人软件,OpenAI于2022年11月推出的聊天机器人,具备人类语言交互外复杂的语言工作,包括自动文本生成、自动问答、自动摘要等多重功能,应用场景广阔,相较于上个版本更像人类一样聊天交流。ChatGPT&a…

欧姆龙CX系列PLC串口转以太网欧姆龙cp1hplc以太网连接电脑

你是否还在为工厂设备信息采集困难而烦恼?捷米特JM-ETH-CX转以太网通讯处理器为你解决这个问题! 捷米特JM-ETH-CX转以太网通讯处理器专门为满足工厂设备信息化需求而设计,可以用于欧姆龙多个系列PLC的太网数据采集,非常方便构建生…

ubuntu Docker 镜像go使用https出现X509: Certificate Signed by Unknown Authority

1、问题成因: 应用镜像时,如果没有向镜像中添加证书颁发机构(CA, Certificate Authority)发布的证书,您就有可能遭遇这个错误。 2、解决方法 解决方法1:可以添加ca-certificates证书,可以将…

chatgpt提问句式整理

【提问句式整理】 (你不知道,GPT知道) 1、元问题:我想了解xxxx,我应该向你问哪些问题? 2、请给我列出xxx领域/行业相关的,最常用的50个概念,并做简单解释。如果有英文缩写&#xf…

架构实战微服务架构拆解

作业内容 拆分电商系统为微服务。 背景:假设你现在是一个创业公司的 CTO,开发团队大约 30 人左右,包括 5 个前端和 25 个后端,后端开发人员 全部都是 Java,现在你们准备从 0 开始做一个小程序电商业务,请你…

IDEA+SpringBoot +ssm+ Mybatis+easyui+Mysql求职招聘管理系统网站

IDEASpringBoot ssm MybatiseasyuiMysql求职招聘管理系统网站 一、系统介绍1.环境配置 二、系统展示1. 登录2.注册3.首页4.公司5.关于我们6.我的简历7.我投递的简历8.修改密码9. 管理员登录10.我的信息11.用户信息12.职位类别13. 职位列表14. 公司列表15. 日志列表 三、部分代码…

Spring 官方文档及相关资料的网址集合

文章目录 MavenSpringSpring FrameworkSpring BootSpring Cloud AlibabaNacos Maven Maven 仓库依赖包官方查询通道:https://mvnrepository.com/ Maven 插件官方文档:https://maven.apache.org/plugins/ 安卓依赖包官方查询通道*:https://m…

CXL Bias Mode (1) - Bias Mode 背景与分类

🔥点击查看精选 CXL 系列文章🔥 🔥点击进入【芯片设计验证】社区,查看更多精彩内容🔥 📢 声明: 🥭 作者主页:【MangoPapa的CSDN主页】。⚠️ 本文首发于CSDN&#xff0c…