网易云信 RTC 音频 QoS 综述

news2024/12/26 20:48:49

RTC、QoS、WebRTC 的定义

RTC 实时通信,泛指各种数据的实时传输技术,包括音频,视频,文本,图片等媒体和非媒体数据的实时传输。

QoS 服务质量,指一个网络能够利用各种基础技术,为指定的网络通信提供更好的服务能力,是网络的一种安全机制, 是用来解决网络延迟和阻塞等问题的一种技术。

RTC 技术的出现满足了用户通过互联网进行实时音视频通话的需求,在 QoS 技术的加持下,RTC 技术在复杂的网络条件下能达到更高的弱网抗性、更低的延迟,极大地提升用户的实时通话体验。

WebRTC 是一个由 Google 发起的实时通讯解决方案,其中包含视频音频采集、编解码、传输、QoS、音视频渲染等功能。其名为 WebRTC,但是实际上它不光支持 Web 之间的音视频通讯,还支持 Android 以及 IOS 端。由于该项目是开源的,各即时通讯厂商都基于 WebRTC 进行研究、开发,研制自身的全平台的 RTC 解决方案。

WebRTC 中有很多优秀的算法、设计值得研究,音频 QoS 技术就是其中之一。

音频 QoS 技术

音频 QoS 技术主要包括了:带宽估计及编码码控、DTX、FEC、RED、RTX/NACK、加速/减速/PLC 等。

音频数据虽然没有视频数据那么大的量,但在 QoS 方面同样要面对:带宽、延迟、质量之间的三维平衡。把音频 QoS 技术的各项能力归纳到这三维平衡问题中时,我们可以知道:

  • 带宽估计及编码码控:在既定的网络带宽情况下,估计的带宽越高、编码码率越高,音频质量越好;

  • DTX(输入编码器的音量低时编码器编出静音指示数据,后续不出编码数据或出静音指示数据,直到输入音量不再低):有效节省静音情况下的编码码率;

  • FEC(通过前向纠错编解码算法,实现丢包恢复):冗余度越高,恢复率越高,但带宽消耗越大;分组越大,恢复率越高,恢复延迟越大;在低丢包率、非连续丢包情况下,具有码率优势;

  • RED(原始音频包同时携带冗余的音频包):冗余层数越多,带宽消耗越大;在低丢包率、非连续丢包、高延迟情况下,具有恢复延迟优势;对于冗余包拓展头的支持程度因实现而异;

  • RTX/NACK(丢包重传/丢包请求):丢包重传属于按需重传,丢包越高,重传需求越高,带宽消耗越大,需要避免重传风暴;在高丢包、连续丢包情况下,具有恢复率优势,但有较大的恢复延迟劣势;

  • 加速:接收端缓冲过多时,通过加速降低缓冲量,降低延迟,会带来一定的加速感;

  • 减速:接收端缓冲不足时,通过减速提升缓冲量,增加延迟,会带来一定的减速感;

  • PLC(丢包补偿):接收端缓存缺失时,通过收到的前序包模拟丢失包,会带来一定的音质损伤。

QoS 分段策略

从整体角度看,RTC 实时音视频系统至少会涉及 3 个端:发送端、服务端、接收端。云信 RTC 以 SFU 架构实现客户端媒体流的接入和转发。以此为基础形成了发送端到服务、服务到接收端(服务级联由网易云信 WE-CAN 大网提供)的分段 QoS 策略。

 

分段 QoS 的优势在于,上下行独立进行 QoS 策略有利于隔离上行段、下行段不同网络情况,对每条链路适用更佳的应对方法。但其劣势在于,策略的设计、开发、调优会更加复杂,问题排查难度增加,服务端性能可能成为瓶颈。

带宽估计

带宽估计主要用来对发送端(或服务器的下行转发端)进行码率控制。

上行端侧通过 GCC(Google Congestion Contrl)算法基于接收端的数据反馈对其发送带宽进行估计。估计出的带宽会分配到编码码率、RED 码率、FEC 码率、RTX 码率、PADDING(填充)码率。虽然带宽估计算法在各公司是大同小异,但是带宽分配策略却是五花八门。因为如何分派编码码率和抗性码率(包括 RED、FEC、RTX)决定了一款 RTC 产品在媒体质量、会话延迟、带宽耗费上的竞争力高低。

 

服务器下行转发侧同样也有带宽估计算法。服务端对下行链路的带宽估计结果是基于会话的,但服务端同时接通一个会议中的多个下行会话,因此服务端可以汇总多个下行会话的带宽估计结果,结合场景,利用如 topN 带宽回传上行做码率约束、VIP 用户 QoS 优先保证等策略,提升服务端的带宽利用率。

在带宽估计领域还有许多可以优化的方向,比如:反馈的码率纳入带宽估计、基于机器学习进行带宽估计和分配。

DTX 编码

OPUS 音频编码器的 DTX 特性,能够有效降低发声静音时的码率,它利用静音时发送端每 400ms 编码发送一个 DTX 包通知接收端静音状态仍在持续,接收端在接收到首个 DTX 包后,进入 DTX 状态,每次音频设备获取数据时编码器输出一个静音帧。服务端对 DTX 进行透传。

WebRTC 利用 OPUS 的 DTX 特性引入了一些断流误判、收包反馈的问题。云信对此进行了优化,利用了静音状态码率低的特性,同时保证了数据流的连续性。

FEC

端侧 FEC 分带内和带外两种,WebRTC 中视频是通过带外 FEC(ULPFEC、FLEXFEC)来产生冗余包,音频则可以通过 OPUS 带内 FEC 、带外 FEC 来生成冗余包。服务端 FEC 是用带外 FEC。

带内 FEC 由于会占用一部分编码码率,所以对音频的音质会有所降低。带外 FEC 不会影响音质,但会额外占用网络带宽,各有优缺点。 

FEC 典型的编码方式有 XOR 和 Reed Solomon。WebRTC 的带外 FEC 使用的是 XOR 编码方式,其特点是计算量相对少,但其抗丢包能力有限。 

在 WebRTC 中,带外 FEC,不论是 ULPFEC,还是 FLEXFEC 都是根据 MASK 掩码来确定 FEC 包和被保护的源 RTP 包的映射关系,其中定义了两种类型的掩码:RandMask 和 BurstMask,前者在随机丢包中保护效果要好些;后者则是对突发导致连续丢包效果会好些,但是不论哪种,都有其缺点。

FEC 冗余度和原始包分组长度计算准则是:根据丢包和 rtt 预置分组长度,在该分组长度下,根据贝叶斯定律,在当前丢包率下,确定至少需要多少冗余包能够保证接受到足够的原始包和冗余包来通过 FEC 解码恢复丢包。值得注意的是,分组长度对 FEC 的恢复延迟有决定作用。

RED

RED 是在一个包中额外携带前序若干包的抗性策略。其冗余层数以最大包长度为限制,同时也受到耗费带宽的约束。其优势在于 RED 包携带的冗余数据与原始包序号越接近,RED 恢复时延越低;原始包与冗余包的最大序号差,决定了最大恢复延迟。

端侧 RED 打包常采用连续相邻序号作为冗余数据,跳跃序号的打包方式未证明存在明显恢复优势,但会引入更大的平均恢复延迟。

服务端下行侧 RED 打包受到上行弱网、抗性恢复能力、恢复时间影响。若采用连续相邻序号作为打包方式,则需要等待上行丢包的恢复包;若采用跳跃序号的打包方式,则会引入更大的下行侧 RED 恢复延迟。延迟取决于上行丢包恢复的耗时。因此分段 RED 策略下,若上行存在弱网,那么服务端下行侧 RED 的恢复时间优势就不再明显。此时优化上行链路弱网的恢复时间更为有效。

RTX

RTX 是弱网抗性算法中引入延迟最严重的。一个包的重传请求到该重传包被成功恢复,至少要经历一个 rtt 耗时,在丢包严重、rtt 较大时,重传包也可能丢失进而造成多次重传,这个耗时将变得不可接受。

重传耗时的主要决定因素是:rtt、丢包率、重传请求时机、重传请求响应策略。其中 rtt、丢包率可能由于链路带宽拥塞、弱网测试引起的,重传请求时机取决于请求间隔约束、当前数据缓存量、丢包检测机制等;重传请求响应策略取决于发送端缓存、发送端拦截机制、估计带宽、是否有冗余重传机制等。综合考虑以上因素,可以极大地优化重传效果(包括恢复效果、恢复耗时、重传码率)。

结语

在网络飞速发展的今天,音频 QoS 的优化显得比视频更加容易,因为带宽的顾虑会越来越少。但是从企业运营角度考虑,当 RTC 业务中的音频业务占据主导时,控制音频带宽的成本时非常有价值的。这是音频 QoS 优化中,直接和利润相关的部分。因此上述策略中,有许多都提到了带宽耗用,这意味着我们不能一味追求抗性和实时性,而忽略了带宽成本的增加。

QoS 的终极课题就是在有限的带宽资源下,提升弱网抗性,降低恢复时延。在这条路上,还有非常多的空间等着 QoS 从业人员去探索。

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

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

相关文章

狂买GPU、四处挖人,马斯克:我要做理解宇宙的TruthGPT

来源: 爱范儿 微信号:ifanr 整理 | 凌敏、核子可乐 上个月,马斯克还积极呼吁叫停超强 AI 研发 6 个月,现在就坐不住了? 马斯克声称正在研究 TruthGPT 近日,马斯克在接受福克斯新闻频道的塔克卡尔森采访时宣布&#…

小红书投放预算如何制定,品牌规划

进行产品与品牌推广是一件相对复杂而全面的事。以小红书为例,当我们在制定产品投放传播方案时,确定平台投放预算是首要的。今天将为大家分享,如何制定小红书投放预算最为合理高效。 一、目的决定预算 在说明具体的预算计算方法之前&#xff0…

[数据库]MySQL窗口函数

1.窗口函数是什么 玛雅人造不出轮子,也不需要轮子. 在学完基础以后,通过子查询和聚合函数,理论上可以解决任何复杂的sql查询问题,但是人类发明出来轮子绝对不是用来看着它转圈的. 窗口函数和聚合函数非常相似,区别在于聚合函数是将多个行结合成一个结果,而窗口函数是以某个区…

webrtc janus服务器部署在公网,coturn转发媒体流

janus本身部署在公网时,其内部使用的libnice库已经实现了stun的功能,在配置文件janus.jcfg里面,nat_1_1_mapping配置成公网地址,其位于NAT后面的局域网客户端之间可以实现媒体流之间的分享,发布者将媒体流推到公网&…

【网络】-- https协议

目录 http协议 https协议 安全 概念 什么是"加密"? 为什么要加密? 常见的加密方式 对称加密 非对称加密 数据摘要 && 数据指纹 数字签名 HTTPS 的工作过程探究 方案一:只使用对称加密 方案二:只使…

深眸科技|制造行业升级速度加快,2D视觉与3D视觉该如何选择?

随着人工智能的不断发展,机器视觉已经成为当下最炙手可热的技术之一。在制造业转型升级并且迅猛发展的过程中,对于产品的高精度、零缺陷的需求也在不断提升,而机器视觉的出现为制造业产业升级提供了强有力的驱动力。 随着5G、AI等技术的不断…

174_技巧_Power BI 动态格式(万|亿)

174_技巧_Power BI 动态格式(万|亿) 一、背景 Power BI 2023年4月份更新,新增加了一个预览功能:动态格式(Dynamic format strings for measures),度量值的结果可以动态的显示为不同的格式。 今天我们主要来看一个技巧,如何在 P…

[架构之路-171]-《软考-系统分析师》-5-数据库系统-1- 数 据 库 的 控 制 功 能(并发控制、性能优化)

目录 5 . 4 数 据 库 的 控 制 功 能 5.4.1 并发控制 1 . 事务的基本概念 2 . 数据不一致问题 3 . 封锁协议 4 . 死锁问题 5.4.2 数据库性能优化 1 . 硬件升级 2 . 数据库设计 5.4.3 数据库的完整性 1 . 完整性约束条件 2 . 实体完整性 3 . 参照完整性 4 . 用户定…

华为云-使用脚本初始化Linux数据盘

操作场景 本文以云服务器的操作系统为“CentOS 7.4 64位”为例,采用初始化数据盘脚本的方式为数据盘设置分区。 不同云服务器的操作系统的格式化操作可能不同,本文仅供参考。 须知: 首次使用磁盘时,如果您未参考本章节对磁盘执…

json for modern c++

目录 json for modern c概述编译问题问题描述问题解决 读取JSON文件demo json for modern c GitHub - nlohmann/json: JSON for Modern C 概述 json for modern c是一个德国大牛nlohmann写的,该版本的json有以下特点: 1.直观的语法。 2.整个代码由一个…

QT 创建插件 CTK开发(三)

CTK 为支持生物医学图像计算的公共开发包,其全称为 Common Toolkit。为医学成像提供一组统一的基本功能;促进代码和数据的交互及结合;避免重复开发;在工具包(医学成像)范围内不断扩展到新任务,而不会增加现有任务的负担;整合并适应成功的解决方案。 本专栏文章较为全面…

DP4056国产兼容替代LTC40561A锂离子电池充电芯片

目录 锂电池 VS 锂离子电池DP4056简介DP4056芯片特性 锂电池 VS 锂离子电池 锂电池是以锂金属或锂合金为正极材料,使用非水电解质溶液的电池。锂电池与锂离子电池不一样的是,前者是一次电池,后者是充电电池。锂离子电池工作原理就是依靠锂离…

(大数据开发随笔6)Hadoop 3.3.x分布式环境部署——本地模式

本地模式 材料准备 Linux虚拟机-CentOS7hadoop-3.3.1.tar.gz Index of /hadoop/common (apache.org)jdk-8u321-linux-x64.tar.gz Java Archive | Oracle Centos7虚拟机部署 准备材料: VMware17CentOS-7-x86_64-Minimal-2009.iso centos-7-isos-x86_64安装包下载…

2022国赛34:路由器之间ISIS协议配置

大赛试题内容: 5.RT1以太链路、RT2以太链路之间运行ISIS协议,进程10,分别实现loopback3 之间ipv4互通和ipv6互通。RT1、RT2的NET分别为10.0000.0000.0001.00、10.0000.0000.0002.00,路由器类型是Level-2,接口网络类型为点到点。配置域md5认证和接口md5认证,密码均为Key…

企业如何从0到1落地BI项目

企业需要数据整合、分析展现及应用的完整数据平台方案。为了满足集团化BI建设需求,企业决策层需要基于全局数据进行分析,需要提供数据整合、存储、计算到数据应用的端到端数据平台。 商业智能BI - 派可数据BI可视化分析平台 BI的实践落地需要全生命周期…

[Python基础] 序列(列表/元组)和字典的操作详解

文章目录 序列概念序列列表列表的创建和下标访问创建下标 列表的切片操作列表的遍历列表的插入操作列表的查找和删除列表的拼接 元组元组的相关操作 字典概念字典的创建查找字典中的key,value字典的增删改字典的遍历 序列概念 包含若干个元素, 元素有序排列, 可以通…

APIs -- DOM节点操作

1. 日期对象 日期对象:用来表示时间的对象 作用:可以得到当前系统时间 1.1 实例化 在代码中发现了new关键字时,一般将这个操作称为实例化 创建一个时间对象并获取时间:const date new Date(); // 实例化 new// 1.得到当前时…

React语法(N)

文章目录 React简介概述官网特点生态 react学习的说明新的官网全力投入现代React与Hooks React脚手架create-react-app官网创建和启动项目项目结构sass支持 Vite创建和启动项目项目结构常见配置 虚拟DOM什么是虚拟DOM虚拟DOM优缺点优点:缺点: 虚拟DOM实现…

CTF之命令执行常见绕过

命令执行常见绕过 1.空格代替 当我们执行系统命令时&#xff0c;不免会遇到空格&#xff0c;如cat flag.txt&#xff0c;当空格被程序过滤时&#xff0c;便需要利用以下字符尝试代替绕过&#xff1a; < ${IFS} $IFS$9 %09测试如下&#xff1a; $IFS 在 linux 下表示分隔…

增长黑武器|LTD荣获“2023中国工业数字化赋能奖先锋”

​ 2014年&#xff0c;北京 2015年&#xff0c;南昌 2016年&#xff0c;上海 ...... 2022年&#xff0c;南京 2023年&#xff0c;4月21日 由中国生产力促进中心协会数字经济工作委员会提供指导&#xff0c;由托比网主办的“第六届中国工业数字化高峰论坛”在上海举行。本…