【音视频第8天】mediasoup拥塞控制【未完待续】

news/2024/11/26 6:04:38/

WebRTC的拥塞控制方式主要有以下几个:Transport-cc、BBR-congestion、remb(BBR已被google从webrtc移除了)。mediasoup支持Transport-cc和remb。

一、前言

实时通信的延时指标

在这里插入图片描述

视频服务质量指标

在这里插入图片描述
音视频服务质量与带宽之间的矛盾、实时性与服务质量之间存在矛盾

提高服务质量的因素

在这里插入图片描述

影响网络质量的因素

影响网络质量的因素
丢包率(重点)
延时拥塞有关)
抖动(JitterBuffer、NetEQ)
乱序(JitterBuffer、NetEQ )

链路质量差、带宽满、主动丢包、光纤被挖
解决丢包的方法:NACK、FEC。如果RTT很长就不要用NACK,就用FEC。带宽充足的情况下可以用FEC,但是丢包因为网络拥塞不能用FEC,会加重拥塞。
NACK
在这里插入图片描述
丢包了不会立刻去请求而是会等一段时间,10ms-20ms通过RTCP的Nack,告诉发送端,然后发送端从发送历史记录中根据号找,然后再找到发过来。

一、webRTC拥塞控制算法

减少数据量、适当增加时延和更准确的带宽评估被统称为拥塞控制
WebRTC中包含多种拥塞控制算法:

  • GCC:(Google Congestion Contro,Google拥塞控制)GCC根据其实现⼜可细分为基于发送端的拥塞控制算法Transport-CC(Transport-wide Congestion Control,传输带宽拥塞控制)和基于接收端的拥塞控制算法Goog-REMB(Google Receiver Estimated Maximum Bitrate Google接收端评估的最⼤码流)
  • BBR:(Bottleneck Bandwidth and Round-trip propagation time),瓶颈带宽和往返传播时间
  • PCC:(Performance-oriented Congestion Control),基于性能的拥塞控制。
    重点关注一下GCC

二、GCC

2.1 Goog-REMB

⼀种是接收端的延时拥塞控制算法
Receiver Estimated Max Bitrate (REMB) 是一种RTCP 反馈消息,作为接收方,告诉发送方它可以接收的带宽是多少。发送者不知道接收方的带宽情况,它需要有一个机制由接收方告诉它有多少带宽可供传输, 这样发送方可以根据这个估计的带宽来调整分辨率(90p, 180p, 360p, 720p等)和帧率(每秒24, 30, 40, 60帧等)

在这里插入图片描述
RemoteBirate Estimator模块:它是接收端延时拥塞控制算法的管理模块,即“总负责⼈”。
Inter Arrival模块:将数据包按帧进⾏分组,然后对相邻的两组数据包进⾏单向梯度计算
OverUse Estimator模块:它利⽤Inter Arrival模块的计算结果,通过卡尔曼滤波器估算出下⼀时刻发送队列的增⻓趋势
OverUse Detector模块:⽤于检测当前网络的拥塞状态
AIMD Rate Controller:该模块⽤于计算发送码流大小。它通过OverUse Detec tor模块检测出的当前⽹络状态来变更⾃⼰的状态,并计算出发送码流的大小。

2.2 Transport CC

⼀种是发送端的延时拥塞控制算法【未完待续】
参考:流媒体学习之路(mediasoup)——拥塞控制分析
WebRTC 拥塞控制之 REMB - 接收方带宽估计


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

相关文章

接口的使用

目录 接口的基本介绍 接口的注意事项和使用细节 接口vs继承 接口体现多态 接口体现多态数组 接口体现多态传递现象 接口的习题 第一题 第二题 接口的基本介绍 接口就是给出一些没有实现的方法,封装到一起,到某个类要使用的时候,在根…

Office365初始化配置部署方案

目录 一、前言 二、Office 365 配置和部署的基本概念 三、Office 365 配置和部署的步骤 1、准备工作

企业云盘如何实现文件共享?

企业文件共享的方式有很多,最常见的就是使用第三方企业云盘工具进行文件实时共享,这种方法不仅方便安全,而且兼容性高。 企业云盘主要是通过建立企业内部共享文件夹进行文件分享,支持通过权限管控来保障文件的安全,管理…

一文吃透低代码平台源代码交付的重要性(避坑指南)

一、前言 作为这两年IT界的风口,低代码在众人眼里已经不是什么陌生的概念。 对标于传统的纯代码开发,低代码是一种快速开发软件(应用程序)的方法,平台通过对大量功能与场景做提前封装,使得用户可以在可视…

HarmonyOS/OpenHarmony公司级技术开发团队硬件基本配置清单

有朋友公司咨询进入HarmonyOS/OpenHarmony领域,组建技术团队,硬件设备的基本配置应该是怎么样的比较合适?这个是进入鸿蒙开发领域相关配置的第一步,我们以一个基本的团队配置为例说明,供想进入的团队参考。 HarmonyOS/…

chatGPT中文版入口-chatGPT不可以用的地区

ChatGPT老出现不可用 如果您在使用ChatGPT时发现它经常不可用,可能是由于以下原因: OpenAI API的服务不稳定。由于技术问题、网络问题或维护(如软件更新)等原因导致OpenAI API服务不稳定,会导致ChatGPT无法使用。 接…

在Spring Boot微服务使用ValueOperations操作Redis String字符串

记录:401 场景:在Spring Boot微服务使用RedisTemplate的ValueOperations操作Redis String字符串。 版本:JDK 1.8,Spring Boot 2.6.3,redis-6.2.5 1.微服务中Redis配置信息 1.1在application.yml中Redis配置信息 spring:redis:host: 192.…

Spring Cloud第二季--OpenFeign和Feign

文章目录一、Feign二、Feign和OpenFeign的区别三、案例测试1、eureka注册中心集群7001/70022、两个微服务3、OpenFeign一、Feign Spring Cloud Feign的介绍在Spring Cloud学习–声明式调用(Feign)中详细介绍。 简单回顾下,Feign是一个声明式…