一文读懂云渲染“串流”全链路时延及优化策略

news2024/11/16 13:30:31

这是一个让云游戏完美起步的时代。

云游戏作为产业内近年来炙手可热的话题,具有“云端运行、超高清、零延时、即点即玩”等众多特性。

随着 5G 时代的到来,以及中心云能力下沉至边缘云,高带宽、低延迟、高性能这些特性与云游戏紧密结合,突破实时云渲染的带宽和延迟问题,也赋予了云游戏更大的想象力。

就在今年6月,央视推出了首个大型沉浸式数字交互空间《三星堆奇幻之旅》,让观众摆脱本地硬件限制,仅通过一个H5页面带观众破屏穿越,“身临其境”探索考古现场。

沉浸式体验背后, “云渲染”和“串流”是绕不开的核心技术。

01 实现云游戏的关键技术:「串流」

“云渲染” 将大型沉浸式体验需要的3D渲染应用部署在云端,使得观众看到和交互的画面,都是云端实时渲染计算出来的。

“串流” 是实现云游戏的关键方式,通过数据中心将游戏渲染场景转换成视频流,再通过传输网络推送到用户终端显示。

同时,用户在实时显示的图像上,通过键盘鼠标、触控等方式传输指令到云端,实时控制3D渲染应用做出相应的响应。

整个过程延迟通常小于100ms。

云渲染「串流」技术通常应用在云上考古、云旅游、虚拟数字人直播、智慧城市数字孪生应用和云游戏的场景

用户不必部署昂贵的高配PC或手机,通过网页访问或者扫描二维码的方式,即刻便可享受细腻、清晰、流畅的高清视频体验和实时的操控效果。

云渲染串流主要采用启动成功率、错误率、资源利用率、首帧时间、时延、码率、分辨率、画质、卡顿率、音画同步差等指标来衡量业务的好坏。

本文对重点对「串流」全链路时延进行分析,并介绍主要的优化策略。

02「串流」的全链路时延

作为云渲染串流技术体验的基础,超低延时的要求带来了巨大的挑战。

云渲染串流的全链路时延主要可拆解为以下各个环节:传输时延、指令时延、编码时延、封包时延、收包时延、解码时延、帧间隔时延。

传输时延: 媒体流与指令流传输的时延。用户通过阿里云广泛部署的边缘节点就近接入,一般状态下rtt(往返时延)可稳定控制在10ms以内,即单向网络延迟5ms;在资源繁忙时,存在中心调度到较远节点的情况,偶尔出现部分用户rtt在30ms左右的情况,即单向网络延迟15ms。

指令时延: 云上的unity/ue渲染应用的响应客户端的触控事件的时延。指令可以通过进程间通信的方式,打通串流应用层和渲染程序,避免操作系统交互,实现虚拟化操作,指令时延控制在1ms以内。

编码时延: 视频编码的处理时延。采用GPU硬件加速、采集编码Zero Latency的策略,通过对渲染应用的direct API挂钩的方式,实现GPU内部纹理视频数据的采集和编码闭环,避免了GPU和CPU之间原始大数据量的视频拷贝,节约了功耗,控制整体编码时延为2ms以内。

封包时延: 视频编码数据封装RTP到服务器音视频发送的时延。采用更适合云渲染的拥塞控制策略,实时精准调节网络缓冲区,可以降低数据包在服务器的缓存时间为5ms以内。

收包时延: 用户接收端的RTP jitter buffer的时延。该时延保持在20~30ms,即缓存1~2帧的状态,以应对乱序、丢包、抖动等网络环境,在保证流畅度的前提下,最大限度降低网络时延。

解码时延: 视频解码处理时延。不同设备的视频解码策略不同,在中端机型软解高清视频的平均解码时延为7ms左右,这是统计时延结果,在H5端上改进空间较小。

帧间隔时延: 编码算法时延。在60fps帧率的情况下,每两个视频帧之间的时间间隔固定为16ms,也就是说指令响应到视频编码之间一定会存在0-16ms的时间延迟,这是由视频编码本身机制引起的,理论上不能减少。

总之,在1080P 60fps的场景下,云渲染串流全链路时延 = 传输时延rtt(10-30ms)+ 指令时延(1ms)+编码时延(0-2ms)+封包时延(0-5ms)+收包时延(20-30ms)+解码时延(7ms)+帧间隔时延(0-16ms)= 38ms 到 90ms之间,可以实现100ms以内的体验效果。

03 串流时延的精准「优化」策略

对于「串流」技术的全链路时延,优化策略主要包括:编码优化、前处理优化、采集优化、指令优化、传输优化。

❖ 编码优化

在视频编码策略方面,影响编码延时的主要优化有:

1.用 slicethread 代替 framethreads,提高编码效率,降低计算处理时延。2.关闭lookahead线程,避免线程预测的帧缓存。3.关闭B帧 (HEVC可以支持GPB,替代普通的B帧),以降低后向参考的算法时延。❖ 前处理优化

前处理优化主要指的是「窄带高清」处理,通过CPU+GPU联合计算,进行视频原始域的计算优化,在满足码率降低35%,VMAF提高10%效果的同时,最小化计算处理时延,效果如下图。

在云渲染场景下的窄带高清处理,可以实现Zero-latency编码与画质的平衡,使主客观画质都有显著提升。同时窄高高清处理,可以降低视频编码码率,降低网络传输的带宽压力。

❖ 采集优化

在视频采集方面,通过对用户渲染进程远程注入视频采集hooker,对preset函数设置函数钩子,在函数钩子中将back buffer拷贝到共享纹理中,供硬件编码器使用的方式,避免了GPU和CPU之间的yuv原始视频数据的拷贝。在GPU内部完成视频采集、视频处理与视频编码,全过程纹理数据处理, 采用CUDA硬件视频编码,并行加速编码过程,降低编码时延。

蓝色部分为用户渲染引擎进程,完成GPU的纹理渲染;橙色部分为阿里云云渲染引擎进程,完成钩子注入、网络收发和业务逻辑;黄色部分为GPU运算,用户进程和阿里云进程两者通过共享纹理进行数据通信,并实现硬件编码加速。

❖ 指令优化

在指令操作方面,我们根据不同用户需求,提供「非侵入式」和「侵入式」两种方案。

非侵入式方案通过hook到用户渲染进程的方式,通过挂载GetKeyState、GetCursorPos等一系列win api键鼠状态函数,用来传递用户控制指令流,避免内核态与用户态的数据交互。

非侵入式方案的优点在于应用适配性好,用户不需要二次开发;缺点是需要依赖不同系统版本的api。

侵入式方案是指用户渲染引擎可以选择集成阿里云注入.dll的方式,通过同主机进程间的socket通信方式,实现自定义用户集成消息解析,降低指令解析时延。

侵入式方案应用能实现云原生化,但其具有一定的技术门槛,需要开发集成阿里云的方案。

❖ 传输优化

在传输优化策略中,主要包括指令流QoS保障、带宽估计、拥塞控制、视频缓存精准估计、FEC纠错算法改进、特殊包冗余保护。

指令流QoS保障: 针对移动事件需保证执行顺序,在网络乱序场景下,允许丢包,但通过序列号确保执行最新事件;针对按键、点击事件,会启用重传策略,保证本地操控与最终显示的最终一致性;对于组合事件消息进行消息合并,减少发包量,同时通过冗余策略能保证丢包时候的到达率。

带宽估计: 采用BBR算法,在带宽上探时,不会造成rtt的较大变化,避免传输延迟的增加。同时,优化BBR算法的带宽下探策略,在探测最小rtt时,不停发数据,保障媒体数据稳定传输。在带宽探测过程中,采用快速收敛策略,优化最大带宽计算方法并缩短带宽估计的反馈时间为100ms,快速探测带宽。

拥塞控制: 调整pacer sender的周期判定条件,在网络状态良好时,提高单次数据发送量,减少单帧发送时间。

视频缓存精准估计: 在视频解码端,采用卡尔曼滤波器动态估算帧间隔时间,精准设置jitter buffer大小,减少不必要的时延。

FEC纠错算法改进: 使用cm256 RSFEC算法,比传统RSFEC算法cpu利用率降低95%,最大化提高分组数量。在云渲染大码率的场景下,减少前向纠错的计算时间。

特殊包冗余保护: 针对特殊包,例如NACK包及重传包、I帧及重传I帧、用户自定义指令和操作指令等,分级传输,通过专用冗余通道传输,以局部带宽提升为代价,以保障最小时延的整体传输到达率。

针对云渲染串流场景,阿里云开发了专门的延迟评测工具,通过云渲染串流的通用指令API,可以完成上述全链路时延测量。该工具由服务端测试渲染应用、测试应用客户端和统计处理工具组成。

服务端测试渲染应用: 实时获取客户端上传的毫秒时间,并通过云渲染串流显示上传的计时时间。

测试应用客户端: 实时显示毫秒计时,并通过云渲染串流的API,例如鼠标坐标设置API,实时上传毫秒时间到服务端。

统计处理工具: 包括定时截图程序、时间戳自动识别程序和延迟卡顿数据处理程序完成自动化测试和数据收集和统计,可以评测第三方云渲染系统,并获取延迟和卡顿的结果。

右侧为工具运行效果,图上示例中的时间延迟为706290(客户端) - 706231(服务端) = 59 ms。通过OCR识别和长时间大数据量的测试,可获取云渲染串流时延的统计结果。

虽然目前云渲染串流时延100ms可以满足用户的体验需求,但是100ms仅仅是及格线而已。

在降低时延方面,大有空间可为。

比如:

在内容生产端,通过开发云原生渲染应用,实现“内容生产+编码传输”的闭环应用,会进一步提升指令反馈和图像显示的实时效果。

在云端,同一张网实现多业务混跑,降低用户接入节点的成本,减少就近接入的距离,可以实现网络延迟的最小化。

在用户端,云渲染应用以h5接入为主,而在h5端,可以通过webcodec、webtransport、webrtc等技术的有机结合,实现灵活的串流策略,达到用户的极致体验。

唯有实现串流技术的“延时自由”,才能让身临其境的云游戏,完美起步。

最后

最近找到一个VUE的文档,它将VUE的各个知识点进行了总结,整理成了《Vue 开发必须知道的36个技巧》。内容比较详实,对各个知识点的讲解也十分到位。



有需要的小伙伴,可以点击下方卡片领取,无偿分享

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

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

相关文章

FastDDS-2.库概览

2. 库概览 Fast DDS(前身为Fast RTPS)是DDS规范的高效高性能实现,DDS规范是一种用于分布式应用软件的以数据为中心的通信中间件(DCPS)。本节回顾Fast DDS的体系结构、操作和关键特性。 2.1 架构 Fast DDS的架构如下图…

07_MySQL的单行函数

1. 函数的理解1.1 什么是函数函数在计算机语言的使用中贯穿始终,函数的作用是什么呢?它可以把我们经常使用的代码封装起来,需要的时候直接调用即可。这样既提高了代码效率 ,又提高了可维护性 。在 SQL 中我们也可以使用函数对检索…

python之wheel 包命名规则、abi 兼容和安装

一、windows安装python包,遇见的问题 1、python3以后的版本,安装python包,可以直接使用pip安装,但是安装时偶尔报错 2、安装python源码包,如何确定自己该安装哪个版本,一看就晕倒~~~(没人扶&…

PMP新考纲考试难不难,通过率怎样?

PMP考试难不难,还是因人而异的,对小白而言,肯定是难的,对项目管理老人而言,难度肯定是没那么高。 据考过的朋友讲,新考纲是有点难度的,尤其是最开始6月25日的考试,2023年就简单些了…

职场性别报告,男女薪酬仍有差距,男性平均薪酬比女性高29.7%

性别是否影响职业?女性求职比男性更加困难?男性薪酬比女性更有优势?人们一说到警察、建筑师通常会想到高大魁梧的男性形象,一说到幼师、护士往往想到的都是温柔的女性形象,职业好似与性别挂钩;女性求职通常…

OnlyOffice验证(二)在Centos7上部署OnlyOffice编译结果

在Centos7上部署OnlyOffice编译结果 此处将尝试将OnlyOffice验证(一)DocumentServer编译验证的结果部署到Centos7上。并且使用其它服务器现有的RabbitMq和Mysql。 安装Nginx 先安装Nginx需要的依赖环境: yum install openssl* -y yum insta…

java本地搭建宝塔部署实战likeadmin后台管理系统源码 - server端(一)

大家好啊,我是测评君,欢迎来到web测评。 上次分享了那几期likeadmin的搭建视频教程,由于是php开发的,这对有些习惯用java开发的同学不太友好,好在这套系统也有java版本的,也有朋友让我录制java版的搭建教程…

1. 驱动开发--基础知识

文章目录1 驱动的概念2 linux体系架构3 模块化设计3.1 微内核和宏内核4 linux设备驱动分类4.1 驱动分类4.2 三类驱动程序详细对比分析4.3 为什么字符设备驱动最重要5 驱动程序的安全性要求5.1 驱动是内核的一部分5.2 驱动对内核的影响5.3 常见驱动安全性问题6 驱动应该这么学6.…

「TCG 规范解读」词汇表

可信计算组织(Ttrusted Computing Group,TCG)是一个非盈利的工业标准组织,它的宗旨是加强在相异计算机平台上的计算环境的安全性。TCG于2003年春成立,并采纳了由可信计算平台联盟(the Trusted Computing Platform Alli…

66岁“硅仙人与23岁“硅神童”创业晶圆厂,年薪17万美元

美国小伙打造出家庭芯片工厂! 溅射、氧化、光刻、蚀刻、绑定、封装全包括! 主人公Sam Zeloof,当时是一名大四学生。Sam Zeloof 是 YouTube和 Twitter 上的网络红人。多年来,他一直在记录自己在车库中制造硅芯片的令人印象深刻的…

BI的作用,体现在企业的哪些方面

对市场异常敏感的商业世界自然不会放过获取数字经济的机会,以国企和央企为首的众多企业开始进行数字化转型,通过信息化建设,部署商业智能BI来完成转型工作。 为什么会出现BI 有一点可能出乎很多人意料,虽然 BI 是因为信息化、数…

【项目实战】从0开始入门JDK源码 - ArrayList源码

一、源码位置 一般来说IDEA配置好JDK以后 ,JDK的源码其实也配置好了,本文是基于JDK1.8的源码说明 rt - java - util - ArrayList 二、 继承关系图 ArrayList是实现了 List接口的 public class ArrayList<E> extends AbstractList<E> implements

消息中间件的概念

中间件(middleware)是基础软件的一大类&#xff0c;属于可复用的软件范畴。中间件在操作系统软件&#xff0c;网络和数据库之上&#xff0c;应用软件之下&#xff0c;总的作用是为处于自己上层的应用软件提供运行于开发的环境&#xff0c;帮助用户灵活、高效的开发和集成复杂的…

Word控件Spire.Doc 【书签】教程(1):在C#/VB.NET:在 Word 中插入书签

Spire.Doc for .NET是一款专门对 Word 文档进行操作的 .NET 类库。在于帮助开发人员无需安装 Microsoft Word情况下&#xff0c;轻松快捷高效地创建、编辑、转换和打印 Microsoft Word 文档。拥有近10年专业开发经验Spire系列办公文档开发工具&#xff0c;专注于创建、编辑、转…

用友YoSuite以高效增长的力量,助力春耕按下生产“快进键”

当下&#xff0c;ChatGPT和元宇宙是当前最热门的科技领域话题&#xff0c;这些高科技领域的发展让我们看到了人工智能与现实的无限可能。民以食为天&#xff0c;农业是国之根本&#xff0c;农业也是关系到每个人生活的重要领域。春耕备耕正当时&#xff0c;让我们拉回视野&…

FlinkCEP(1):复杂事件处理引擎介绍

(1)简介及应用场景: 复杂事件处理(CEP)既是把不同的数据看做不同的事件,并且通过分析事件之间的关系建立起一套事件关系序列库。利用过滤,聚合,关联性,依赖,层次等技术,最终实现由简单关系产生高级事件关系。 复杂事件主要应用场景:主要用于信用卡欺诈检测、用户风险…

Spring-Aop核心技术

前言spring一直以来都是我们Java开发中最核心的一个技术&#xff0c;其中又以ioc和aop为主要技术&#xff0c;本篇文章主要讲一下aop的核心技术&#xff0c;也就是ProxyFactory技术的使用&#xff0c;而基本的jdk动态代理和cglib代理技术并不涉及&#xff0c;如有需要&#xff…

2023前端vue面试题汇总

Vuex有哪几种属性&#xff1f; 有五种&#xff0c;分别是 State、 Getter、Mutation 、Action、 Module state > 基本数据(数据源存放地)getters > 从基本数据派生出来的数据mutations > 提交更改数据的方法&#xff0c;同步actions > 像一个装饰器&#xff0c;包…

【Python】3.3实现多线程

程序Program进程Process线程Thread为完成特定任务而用计算机语言编写的一组计算机能识别和执行的指令的集合。程序是指令、数据及其组织形式的描述&#xff0c;一段静态代码&#xff0c;静态对象。计算机中的程序关于某数据集合上的一次执行过程。进程是程序的实体&#xff0c;…

2022年全国职业院校技能大赛(中职组)网络安全竞赛试题A(10)

目录 竞赛内容 模块A 基础设施设置与安全加固 一、项目和任务描述&#xff1a; 二、服务器环境说明 三、具体任务&#xff08;每个任务得分以电子答题卡为准&#xff09; A-1任务一 登录安全加固&#xff08;Windows, Linux&#xff09; 1.密码策略&#xff08;Windows, …