【音视频】remb twcc原理

目录

twcc简介

WebRTC REMB

参考文档


twcc简介

TWCC全称是Transport wide Congestion Control,是webrtc的最新的拥塞控制算法。其原理是在接收端保存数据包状态,然后构造RTCP包反馈给发送端,反馈信息包括包到达时间、丢包状态等;在发送端进行带宽估计,进行拥塞控制。

发送方带宽估计有什么好处?谷歌解释的理论是,通过这种方式,所有的决策逻辑都在一个地方(发送方),因此可以轻松测试新算法,因为你不依赖两个端点。老实说,考虑到浏览器自动更新,我不认为这一点有什么大的优势,但它肯定更干净,即使它在带宽使用方面更昂贵。另一个优点是,发送者知道他正在发送的流量类型,并且可以在发送普通视频时使用不同的算法,例如在进行屏幕广播时。我们受到影响了吗?如果您正在构建的媒体服务器需要对任何内容进行带宽估计(例如,在使用simulcast时决定转发的质量),您将需要在某个时候升级您的实现。好消息是Chrome必须支持旧机制(REMB)一段时间,至少在Firefox支持之前是这样。但是REMB可能不会得到更多的改进,而且它现在更有可能出现bug,所以推迟更改可能不是一个好主意。Chrome 55的默认设置是发送端带宽估计,但这项工作仍在进行中,我们预计会有很多变化。官方标准化正在RMCAT集团的IETF中进行,但Chrome中可用的大部分实现都是谷歌自己版本的算法和反馈协议的进行中规范。(古斯塔沃·加西亚)

WebRTC REMB

WebRTC REMB(Receiver Estimated Maximum Bitrate)是一种带宽估计算法,用于在WebRTC中动态地调整视频发送端的码率,以适应网络带宽的变化。

在实时通信中,网络带宽的变化经常会影响视频的质量和流畅度。为了解决这个问题,WebRTC提供了一种带宽估计算法,即REMB。该算法基于接收端对视频数据的缓存情况和网络状况等信息,动态地估计可用的带宽,并向发送端发送估计值。发送端可以根据该估计值适当地调整视频的码率和分辨率,以达到最佳的视听体验。

具体来说,REMB算法的基本原理如下:

接收端监测缓存:接收端会定期监测自己的视频缓存情况,包括缓存的大小、缓存时间等指标。

发送端发送带宽估计值:当缓存情况较好时,接收端会向发送端发送一个带宽估计值,告诉发送端当前的可用带宽。

发送端根据估计值调整码率和分辨率:发送端会根据接收端发来的带宽估计值,适当地调整视频的码率和分辨率,以适应当前的网络带宽。

重复上述过程:整个过程会不断地重复执行,以实现动态的带宽估计和调整。

WebRTC REMB是一种常用的带宽估计算法,可以帮助实时通信系统在不同网络条件下保持最佳的视听体验。它基于接收端对视频缓存情况和网络状况的监测,动态地估计可用的带宽,并向发送端发送估计值,使得发送端可以根据估计值适当地调整视频的码率和分辨率
 

参考文档

WebRTC带宽估计_webrtc 带宽估计-CSDN博客

webrtc twcc接收端处理在Nginx RTC SFU 服务端的实现_webrtc_龙--技术总结分享-即构开发者社区 (csdn.net)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/240286.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

室内导航技术在智慧医疗的革新应用

随着科技的飞速发展,智慧医疗已经成为现代医疗服务的重要组成部分。在这个背景下,室内导航技术逐渐崭露头角,为智慧医疗建设带来了革命性的改变。本文将深入探讨室内导航技术在智慧医疗中的应用,并分析其为医疗服务带来的诸多便利…

vue:ref的作用和实例

定义:用来获取元素或子组件注册或者引用信息,父组件通过$ref获取到相应的DOM对象和子组件 1、vue中ref的作用 获取页面的DOM元素获取子组件的对象(也是一种通信方式) 2、实例 1、获取DOM,首先创建一个父页面index然…

如何自定义右键弹框并实现位置自适应?

一、问题 右键显示弹框,但是靠近浏览器边缘的部分会被隐藏,需要实现弹框位置自适应 二、 问题分析 如果想要最终弹框的宽高不超过屏幕视口,就等于屏幕视口的总宽/高减去弹框打开时的起点坐标,剩下的部分大于等于弹框的宽/高&…

商家如何进行商业模式开发,助力产品更好的销售模式?

商家如何进行商业模式开发,助力产品更好的销售模式? 随着各类电商平台的疯狂崛起,越来越多的商家对其中带来的高额回报率产生心动,毕竟对于线上的场景来说,即省去了房租、水电、仓储以及其他各种费用,用电商…

vue3 + TypeScript使用国际化

vue3 TypeScript使用国际化 本文使用了 Vite 构建工具创建的vue3项目Vite 支持使用特殊的 import.meta.glob 函数从文件系统导入多个模块Vite 官方中文文档当然如果你的vue3项目未使用vite,你也可以为你的旧项目提提速,安装vite ,安装方法在上一个博客…

【华为数据之道学习笔记】6-5数据地图的核心价值

数据供应者与消费者之间往往存在一种矛盾:供应者做了大量的数据治理工作、提供了大量的数据,但数据消费者却仍然不满意,他们始终认为在使用数据之前存在两个重大困难。 1)找数难 企业的数据分散存储在上千个数据库、上百万张物理表…

汽车行业一些知识

一、汽车术语集合 1、 轴距(mm):汽车前轴中心至后轴中心的距离。 2、转弯半径(mm):汽车转向时,汽车外侧转向轮的中心平面在车辆支撑平面上的轨迹圆半径。转向盘转到极限位置时的转弯半径为最小转弯半径。 3、最大总质量(kg):汽…

动态数组的实现

定义 1. 在计算机科学中,数组是由一组元素(值或变量)组成的数据结构,每个元素有至少一个索引或键来标识。 2. 因为数组内的元素是连续存储的,所以数组中元素的地址,可以通过其索引计算出来。 3. 知道了数…

计算机网络-网络层

计算机网络-网络层 以下笔记整理为哔哩哔哩湖科大教书匠的《计算机网络微课堂》的教学视频。 链接:计算机网络微课堂 1. 网络层概述 1.1 网络层的主要任务是实现网络互联,进而实现数据包在各网络之间的传输。 1.2 要实现网络层任务,需要解决…

【飞凌 OK113i-C 全志T113-i开发板】一些有用的常用的命令测试

一些有用的常用的命令测试 一、系统信息查询 可以查询板子的内核信息、CPU处理器信息、环境变量等 二、CPU频率 从上面的系统信息查询到,这是一颗具有两个ARMv7结构A7内核的处理器,主频最高1.2GHz 可以通过命令查看当前支持的频率以及目前所使用主频 …

Spring IoCDI

文章目录 前言什么是Spring1. 什么是 IoC 容器1.1 什么是容器1.2 什么是 IoC 2. 什么是DI IoC & DI 的使用IoC详解Bean的存储Controller注解如何获取Bean1. 根据Bean的名称获取Bean2. 根据Bean类型获取Bean3. 根据Bean名和Bean类型获取Bean Service注解Repository注解Compo…

使用Docker一键部署Uptime Kuma,并将监控服务映射至公网访问

文章目录 **主要功能**一、前期准备本教程环境为:Centos7,可以跑Docker的系统都可以使用本教程安装。本教程使用Docker部署服务,如何安装Docker详见: 二、Docker部署Uptime Kuma三、实现公网查看网站监控四、使用固定公网地址访问…

go语言初体验1--使用go install

当安装后go语言后。 尝试编写go程序。 当使用 go install 命令,报错。 go: go install requires a version when current directory is not in a moduleTry go install jvmgo\ch01latest to install the latest version通过查找资料。 用命令: go env …

混合精度训练(MAP)

一、介绍 使用精度低于32位浮点数的数字格式有很多好处。首先,它们需要更少的内存,可以训练和部署更大的神经网络。其次,它们需要更少的内存带宽,这加快了数据传输操作。第三,数学运算在降低精度的情况下运行得更快&a…

YOLOv5算法改进(23)— 更换主干网络GhostNet + 添加CA注意力机制 + 引入GhostConv

前言:Hello大家好,我是小哥谈。本节课就让我们结合论文来对YOLOv5进行组合改进(更换主干网络GhostNet + 添加CA注意力机制 + 引入GhostConv),希望同学们学完本节课可以有所启迪,并且后期可以自行进行YOLOv5算法的改进!🌈 前期回顾: YOLOv5算法改进(1)— 如何去…

C++类与对象(中)第一篇

目录 前言: 类的六个默认成员函数 构造函数 析构函数 拷贝构造函数 拷贝场景一:函数参数类型为类类型对象 拷贝场景二:利用已存在的对象创建新对象 拷贝场景三:函数返回值类型为类类型对象 前言: 编译器编译类…

推箱子地图库1-49关

推箱子地图库1-49关 49关 local WALL1--{"墙","墙 "}4 10287 local DEST2--{"目的地",""}1 4001100 10157 local BOX3--{"箱子","¥"} 2 2000801 local PLAYER4--{"玩家","&&a…

influxdb-cluster集群部署

一.部署环境 * InfluxDB集群节点数:mate服务至少3个节点,节点数越多,集群性能越高。 * 操作系统:支持的操作系统包括Linux、Windows和MacOS。 * CPU:至少2核4线程,主频越高越好。 * 内存:至少8…

【已解决】Redis序列化反序列化不一致 - String类型值多了双引号问题

在项目中使用spring 的RedisTemplate从redis中获取数据的时候,发现字符串的value多了双引号。如下图所示: 产生的原因可以分一下几个方面: 一、采用的序列化对象不同 多服务之间调用时候,序列化服务A(向redis中写数据的)和反序…

【翼韵】数据上传沟通、决策、试错

韵达德邦来说说,翼达、翼韵、翼德、翼邦的小记录 翼达同学:沟通成本好大! 翼韵同学:决策成本很大! 翼德同学:试错成本更大! 翼邦同学:你们加起最大! QY成本沟通成本33%决…