论文阅读[2022sigcomm]GSO-Simulcast Global Stream Orchestration in Simulcast Video

GSO-Simulcast Global Stream Orchestration in Simulcast Video

作者:
在这里插入图片描述

1 背景

1视频会议成为全球数十亿人远程协作、学习和个人互动的核心,这些不断增长的虚拟连接需求推动视频会议服务的蓬勃发展
2当前用户越来越希望在低延迟下看到更高质量的视频,对大型会议的需求越来越多,同时希望服务要容易获得
3视频停顿、声音停顿和视频模糊成为当前视频会议服务的前三大问题

2 挑战

1在大规模多方视频会议中提供高质量的实时媒体流
2会议的流畅性受到网络条件最差(慢链接)的参与者的严重影响
3现有方法例如转码会给服务器带来很大的负担,SVC存在编解码器兼容性问题,当前Simulcast存在视频和网络不匹配、易受上行链路拥塞的影响、在大规模会议中可管理性差的问题

3 贡献

1提出了第一个在全球范围内广泛部署的视频会议系统GSO-Simulcast,在大规模部署中显著改善了所有关键的QoE指标
2提出Knapsack-Merge-Reduction算法,大大减小计算消耗

4 关系工作与问题介绍

4.1 用户报告的问题

报告的前三大问题是视频停顿video stalls (29%)、声音停顿video stalls (23%)和视频模糊blurred videos (18%)
所有这些问题都是由慢链接问题引起的。

在这里插入图片描述

4.2 慢链接问题

多方视频会议面临的最大挑战之一是不同参与者所面临的异构网络条件
客户端以不同的比特率对视频源进行多次编码,并将这些流并行发送到SFU(selective-forwarding unit)服务器。SFU服务器根据接收方的网络约束为每个接收方选择一个流来转发。
在这里插入图片描述
具体而言:
A.当发送者推送一个没有人订阅的流时,宝贵的网络资源就被浪费了
B.发送方不知道接收方的网络约束时,容易出现视频和网络不匹配
C.当接收方的下行带宽有限时,来自不同发送方的流被迫相互竞争
在这里插入图片描述

5 系统建模

5.1 服务架构

在这里插入图片描述

在这里插入图片描述

5.2控制算法

算法在 (Knapsack-Merge-Reduction背包-合并-缩减)操作的迭代循环中执行,每一步处理一组特定的约束
目标:控制算法的目标是以最大的QoE效用满足每个订阅者的需求,同时遵守三组约束:网络带宽约束、编解码器能力约束和订阅约束。
网络带宽约束:对客户端i,订阅的流比特率之和不得超过 在这里插入图片描述
,而发布的流比特率之和不得超过在这里插入图片描述

编解码器能力约束:对于每种分辨率,publisher可以以不同的细粒度比特率发送流,但一次只能发送一个流
订阅约束:一个订阅者(subscriber) 只允许从每个发布者(publisher) 中订阅至多一个流

A. Knapsack

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

B. Merge

Step1的结果也等价地确定了包含要求每个发布者端i提供服务的订阅者和流对的集合
在这里插入图片描述

C. Reduction

在这里插入图片描述

5.3 获取全局状况

订阅信息:参与者通过信令通道将其订阅意图传递给会议节点。
编解码器能力信息
编解码能力信息是通过SDP协商过程收集的;
会议节点收集视频编解码器类型和支持的流数量、流分辨率和每种分辨率下的最大比特率
在协商中我们为每个流解析分配一个不同的同步源(SSRC),以促进反馈控制。
带宽信息
在GSO中依赖于发送端带宽估计,它比接收端估计提供更好的精度
下行网络带宽直接从接入节点上报给会议节点
上行带宽在客户端测量的,每个客户端在RTCP数据包中报告带宽信息
带宽根据[27](RTCP message for Receiver Estimated Maximum Bitrate)

5.4 反馈控制

GSO-Simulcast的控制器找到了一个新的解决方案,就会发送控制反馈来为每个发送参与者配置流
控制反馈采用临时最大媒体流比特率请求(TMMBR)消息格式
如果为了不同的目的重用TMMBR,就会产生潜在的歧义。为了消除这种歧义,我们在应用程序定义的类型为204的RTCP数据包中发送TMMBR以进行流编排
因为我们将不同的SSRC分配给不同分辨率的流,所以TMMBR消息中的SSRC字段允许我们指定要配置哪个流
在接收到TMMBR后,发送方会发出相应的临时最大媒体流比特率通知(TMMBN)消息。如果接入节点没有收到相应的TMMBN消息,则重新发送TMMBR消息,从而触发另一个TMMBN的传输

5.5 管理流

A.流优先级

通过为来自不同参与者的流分配不同的QoE效用权重来轻松合并流优先级。例如,我们可以给主持人或演讲者的流更高的QoE权重。

B.对一个发布者的多流订阅

有时接收参与者需要订阅来自发送参与者的多个流。
将一个虚拟发布者X '添加到发布者集合中,通过将X和X '视为不同的发布者,使用相同的问题公式来解决下行链路约束。在Step2的开始将X '与X合并,以便我们再次将它们视为相同的发布者。

6实验结果

6.1控制算法

对比暴力算法
指标:计算时间和QoE optimality
QoE最优性是用GSO控制算法与暴力破解算法在Eq.(1)中QoE总和的比值来衡量的。
在这里插入图片描述

6.2实时瞬态响应

实验方法:20s之后我们将下行带宽限制分别设置为750Kbps、625Kbps、500Kbps和375Kbps,57s后带宽恢复。
GSO-Simulcast能够快速适应带宽的突然变化。
GSO-Simulcast支持的细粒度比特率的好处,在所有情况下,它都完美地符合带宽限制下的视频比特率,从而实现高带宽利用率。
在这里插入图片描述

6.3慢连接实验

高丢包、有限的带宽和抖动
在这里插入图片描述
在这里插入图片描述

6.4客户端的CPU使用率

钉钉App在华为P30上测量的三种不同应用场景(视频会议、音频会议、屏幕共享)下(GSO版本与非GSO版本)的平均CPU利用率
在这里插入图片描述

6.5部署

统计数据每天抽取100万个会议样本,总数据集超过1亿个会议样本
Video stall, voice stall, and video framerate
随着GSO-Simulcast的部署,这三个指标都得到了改善。随着部署规模的扩大,改进变得更加显著
在这里插入图片描述
用户满意度得分(用户积极反馈的百分比)随着部署显著提高(7.2%)
编排频率:GSO-Simulcast控制算法呼叫间隔的CDF,呼叫间隔是两个连续控制事件之间的时间间隔。平均每1.8秒编排一次流。
在这里插入图片描述
在这里插入图片描述

7部署的经验和教训

避免视频质量波动

慢速链路的带宽波动可能导致GSO-Simulcast频繁地来回调整视频比特率,从而导致视频质量振荡,只有对带宽测量有足够的信心时才升级比特率。

寻址带宽高估

类似GCC拥塞控制往往高估了一个小流的链路带宽;通过发送探测数据包,以探测带宽的上限。

减少消息报告频率

实现了一个时间触发器和一个事件触发器。时间触发器定期更新测量值,而事件触发器仅在带宽发生重大变化时才触发更新带宽。

保护音频

需要为音频信号留下足够的带宽空间。当获得带宽测量时,从中减去一个保护带宽,以进一步避免视频流占用音频流的带宽。

8评价

8.1优点

该系统成功在全球范围内广泛部署,扩展性优秀、服务易得
原理较简单,计算开销并不大

8.2缺点

缺乏对会议延迟指标的实验结果
缺乏针对特定场景的深入实验分析,例如用户处于移动状态的情况
对目标QoE建模没有介绍

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

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

相关文章

Milvus 再上新!支持 Upsert、Kafka Connector、集成 Airbyte,助力高效数据流处理

Milvus 已支持 Upsert、 Kafka Connector、Airbyte! 在上周的文章中《登陆 Azure、发布新版本……Zilliz 昨夜今晨发生了什么?》,我们已经透露过 Milvus(Zilliz Cloud)为提高数据流处理效率, 先后支持了 Up…

C语言碎片知识

sizeof 1.sizeof是C语言中的一个操作符,同时也是关键字!!!! 2.sizeof的操作数可以是类型,变量或表达式 如图,第一个为什么是6?,因为先计算了3的大小,占4个字…

GAN:SNGAN-谱归一化GANs

论文:https://arxiv.org/pdf/1802.05957.pdf 代码:GitHub - pfnet-research/sngan_projection: GANs with spectral normalization and projection discriminator 发表:2018 ICLR 摘要 GANs的主要挑战是:训练的稳定性。本文作…

java 之 继承与多态的详细介绍

文章目录 类的继承1. 基本语法2. 继承的特点3. 方法的重写(方法的覆盖)super 关键字1. 调用父类的构造器2. 访问父类的成员变量3. 调用父类的方法4. 在构造器中调用父类方法封装性以及访问修饰符抽象方法1. 声明抽象类2. 抽象方法3. 继承抽象类4. 抽象类…

智能指针及强相关知识经验总结 --- 移动语义、引用计数、循环引用、move()、自定义删除器等

目录 前言 一、shared_ptr 1. 基本用法和构造方法 2. 引用计数机制 3. weak_ptr 解决循环引用 二、unique_ptr 1. 基本用法和构造方法 2. 独占性 3. 所有权转移 1)unique_ptr :: release() 2)移动语义 和 move() 三、 对比 shared_ptr 和 un…

Linux中项目部署步骤

安装jdk,tomcat 安装步骤 1,将压缩包,拷贝到虚拟机中。 通过工具,将文件直接拖到虚拟机的/home下 2,回到虚拟机中,查看/home下,有两个压缩文件 3,给压缩文件做解压缩操作 tar -z…

Hive数据倾斜之:数据类型不一致导致的笛卡尔积

Hive数据倾斜之:数据类型不一致导致的笛卡尔积 目录 Hive数据倾斜之:数据类型不一致导致的笛卡尔积一、问题描述二、原因分析三、精度损失四、问题解决 一、问题描述 如果两张表的jion,关联键分布较均匀,没有明显的热点问题&…

计算机基础知识64

ForeignKey属性 to:设置要关联的表 related_name: 反向操作时,使用的字段名,用于代替原反向查询时的’表名_set’ related_query_name:反向查询操作时,使用的连接前缀,用于替换表名 to_field:设置要关联的表…

最长连续序列(leetcode 128)

文章目录 1.问题描述2.难度等级3.热门指数4.解题思路方法一:排序方法二:哈希表 5.实现示例参考文献 1.问题描述 给定一个未排序的整数数组 nums ,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。 请你…

【华为OD题库-049】评论转换输出-java

题目 在一个博客网站上,每篇博客都有评论。每一条评论都是一个非空英文字母字符串。评论具有树状结构,除了根评论外,每个评论都有一个父评论。 当评论保存时,使用以下格式: 首先是评论的内容; 然后是回复当前评论的数量。 最后是当…

如何保持操纵机构丝杆的精度?

滚珠丝杆是操纵机构中的重要组成部分,可以传递较高的扭矩,并且具有低摩擦、高效率和快速响应的特性,这使得操纵机构能够实现高速、高精度的运动控制,这对于整个系统的性能和精度具有决定性的影响,保持操纵机构丝杆的精…

互联网Java工程师面试题·Spring Boot篇·第二弹

目录 8、什么是 YAML? 9、如何实现 Spring Boot 应用程序的安全性? 10、如何集成 Spring Boot 和 ActiveMQ? 11、如何使用 Spring Boot 实现分页和排序? 12、什么是 Swagger?你用 Spring Boot 实现了它吗? …

YoloV5改进策略:Swift Parameter-free Attention,无参注意力机制,超分模型的完美迁移

摘要 https://arxiv.org/pdf/2311.12770.pdf https://github.com/hongyuanyu/SPAN SPAN是一种超分网络模型。SPAN模型通过使用参数自由的注意力机制来提高SISR的性能。这种注意力机制能够增强重要信息并减少冗余,从而在图像超分辨率过程中提高图像质量。 具体来说,SPAN模…

【wvp】测试记录

ffmpeg 这是个莫名其妙的报错,通过排查,应该是zlm哪个进程引起的 会议室的性能 网络IO也就20M

全志T527设置gpio口输出高电平实际输出低电平

前言 在调试T527的时候,主板另外添加了gpio口去控制usb口的电源开关,软件上面需要在内核运行的时候将gpio口设置输出高电平,usb口才可以正常使用。改好系统固件后,升级发现,机器开机动画过程中可以控制gpio口去打开us…

ArkUI组件--Button组件

1.声明Button组件 Button(label?:ResourceStr) #label是按钮上显示的文本 ①label是文字类型 所写文字会在按钮上显示 ②不输入label内容,需要额外定义一些描述。例如插入图片(需要定义图片属性) Button(){Image($r(app.media.xxx)).wi…

【题目】栈和队列专题

文章目录 专题一:栈系列1. 中缀表达式转后缀表达式(逆波兰式)2. 有效的括号3. 用栈实现队列4. 最小栈 专题一:栈系列 1. 中缀表达式转后缀表达式(逆波兰式) 算法原理 2. 有效的括号 题目链接 算法原理 代…

SpringBoot-监听Nacos动态修改日志级别

目录 一、pom文件 二、项目配置文件 三、日志配置文件 四、日志监听类 五、日志动态修改服务类 线上系统的日志级别一般都是 INFO 级别,有时候需要查看 WARN 级别的日志,所以需要动态修改日志级别。微服务项目中使用 Nacos 作为注册中心&#xff0c…

C++面试宝典第2题:逆序输出整数

题目 写一个方法,将一个整数逆序打印输出到控制台。注意:当输入的数字含有结尾的0时,输出不应带有前导的0。比如:123的逆序输出为321,8600的逆序输出为68,-609的逆序输出为-906。 解析 这道题本身并没有什么…

Java架构师技术架构路线

目录 1 概论2 如何规划短中长期的技术架构路线图3 如何规划面向未来的架构4 如何修订路线图执行过程中的偏差5 如何落地路线图-阿里系糙快猛之下的敏捷模式想学习架构师构建流程请跳转:Java架构师系统架构设计 1 概论 首先,规划一个短中长期的技术路线图是非常重要的。短中…