将渲染计算搬到云端,开启低成本、强交互、沉浸式体验

news2025/2/28 15:35:27

云渲染可以解放本地计算需求,这意味着生产力的大幅提升。

云渲染的基本原理是将3D渲染应用部署到云端,接收本地的控制指令发送到云端,云端启动游戏引擎并进行画面渲染,编码成视频流传输到本地。

不难看出,云渲染技术的核心在于将计算搬到云端,对渲染出的画面进行流化的传输。而过程中渲染画面的抓取、编码、传输、显示等流程被称为串流。

串流是云渲染业务用户体验的核心,串流延时、画质、卡顿等都会直接影响到用户体验。

云渲染串流技术框架主要分为两部分:云端串流引擎串流客户端

云端串流引擎:在云端GPU上,响应客户端发送过来的控制指令,启动渲染应用并进行串流视频的处理与发送。引擎往下适配各种OS和硬件,往上对接调度和业务系统。

串流客户端:串流客户端类似一个播放器,进行串流视频的接收和编码,同时发送控制指令来操作云端渲染引擎。云端串流引擎和串流客户端通常是一对一的。

基于云渲染串流技术能够大幅度弱化本地GPU渲染应用压力,将复杂资源处理过程迁移至云端进行,本地计算需求退化为一个播放器。

01 云渲染串流的三大技术挑战

云渲染的核心技术指标与挑战主要有以下三方面:延时画质与流畅度成本(包括GPU计算成本和传输带宽成本)。

首先,延时是云渲染串流技术体验的基础,超低延时的需求则带来了巨大的技术挑战。云渲染串流过程中的延时主要分为两方面:

端到端的延时:音视频通话250ms以下延时已经难度很大,对于云渲染串流技术而言,想要将端到端延时控制在100ms内更是难上加难。

Motion to Photo的延时:比如在VR云游戏场景下,使用头盔进行头部转动动作时,画面上的延时称作Motion to Photo的延时,为保障用户体验需要将该延时控制在20ms以内。

对于画质和流畅度来说,云渲染需要输出视频流,画质与流畅度作为用户直观的体验,其技术带来的挑战主要在以下三方面:

1.面临复杂网络环境与不稳定的带宽,能否保障画面清晰度与流畅度;

2.画质、码率、计算成本三角关系的平衡;

3.技术先进性和兼容性的平衡,如:更先进的编码技术H265虽然能够提升画质,但其解码性能和兼容性如何保障?

在成本方面,目前来看,云游戏、云渲染正在蓬勃发展,但离实现商业化盈利仍然路途遥远。首先,云渲染GPU资源存在一对一独占资源的特点,单用户消耗的计算资源较高。其次,云游戏存在明显的业务高峰,通常集中在晚间,其他闲时资源如何利用成为了一大问题。最后,如前文提到,云渲染对画质和帧率有较高要求,如何在保障用户体验的同时降低每个渲染进程的资源消耗。

02 多维度优化云渲染策略

延时优化

下图对全链路延时进行拆解,其中如指令传输、音视频流控&QoS等环节的延时波动较小,优化工作主要针对传输、编解码的延时进行。

传输延时优化

由于云渲染服务与理距离来减少延时,基于高覆盖的ENS边缘节点集群进行就近处理与传输,通过调度将任务下发至离用户最近的GPU节点进行处理与串流工作。

其次可以通过传输协议上的优化来减少延时。取代传统的RTMP、HLS协议,转向采用RTC协议进行传输,同时针对云渲染的场景特点来制定QoS策略,如带宽估计、拥塞控制等来实现优化效果。

编/解码延时优化

影响编码延时的主要因素是帧级的线程缓存、lookahead缓存、B帧。优化编解码延时的核心思路是“进一帧,编一帧,出一帧”,不进行任何缓存,用slice thread 代替 frame threads,关闭lookahead与关闭B帧(在HEVC标准下,可采用GPB编码方式,将普通B帧用低延时B帧进行替代,既能提升画质又能降低延时)。

画质与流畅度优化

画质与流畅度呈现的关系如同跷跷板,为了保障用户体验往往需要在两者之间进行平衡。

在云渲染场景下,编码需要与网络进行联动,通过实现网络自适应传输与编码来优化流畅度:

带宽估计:根据网络情况动态调整编码器码率等参数;

拥塞控制:采用BBR或是GCC进行拥塞控制,如主动丢帧。BBR策略收敛更快,通常更适合云游戏场景;

丢包重传:如前文所述云渲染采取就近传输方式,可以根据这个特点实现快速重传策略;

抗I帧风暴:由于I帧占用带宽较大,在I帧过多的情况下对于清晰度与流畅度造成较大影响;

控制I帧数量和大小

视频帧的类型分为I帧、P帧、B帧,其中I帧大小远大于P帧与B帧,I帧密集容易引起卡顿,Intra refresh策略能够有效解决此类问题。

通过将I帧拆分为多个I slice并按顺序平铺到连续的帧中,有效控制I帧的梳理。出现丢帧后可依次排序组合恢复出完整的一帧。

VBR+VBV码率控制策略

CBR码控策略可以使得码率平稳,保障流畅度。但考虑到云游戏场景画面运动剧烈,因此固定码率会造成部分帧画质较差的问题。需要在画质与流畅度间取得平衡,推荐采用VBR算法+VBV参数的方式控制码率波动,使得码率能够在一定范围内实现“平稳”地波动。

云端协同的CodeC选择

在当前环境下,手机终端大多已经支持H265解码,云端GPU也大多支持H265编码。如果云和端都支持H265解码,通过云与端的协商,在云端优先进行H265编码,能够在同等清晰度下使码率降低20%~40%。

CPU+GPU混合的窄带高清编码

单独使用CPU编码成本高、延迟大;单独使用GPU编码灵活性差、画质差。可融合CPU与GPU编码能力,采用GPU为主、CPU为辅的混合编码策略

阿里云窄带高清编码技术,通过视频增强处理和编码的联合优化,能够在码率相同时显著提升画质。或者使码率在降低30%~60%的情况下,视频画质仍然持平甚至有所提升。

但云渲染场景与普通的视频特点差别较大,且通常需要采用硬件编码。需要思考如何在低延时、场景快速切换、运动剧烈的情况下优化GPU编码的画质与流畅度。后文将结合三星堆云渲染场景,介绍阿里云在云游戏场景的窄带高清效果。

成本优化

解决基础体验问题后,成本问题成为云渲染、云游戏商业化面临的最为突出的挑战。

云渲染成本主要可以分为三条线:单任务实际GPU资源消耗, 单机资源利用率, 总资源池利用率。成本优化策略需要围绕如图所示的三条线展开。而在实际场景中云渲染成本优化还存在以下四方面的问题:

1.单进程资源消耗大

2.CPU<-> GPU 内存拷贝效率低

3.单机资源利用率低

4.业务并发时间集中

从以上四个角度出发,接下来将详细介绍如何实现云渲染成本优化

单任务资源消耗优化

GPU硬编码:GPU渲染单元与编解码单元独立,在渲染的同时可以应用GPU进行编码工作,有效降低CPU消耗;

CPU<-> GPU memory zero copy:由于CPU与GPU的排列方式,处理图像帧的格式、内存的layout存在差异,因此需要构建全GPU处理的pipeline,减少CPU在过程中的参与度,可显著提升性能,降低延时;

CUDA加速:图像缩放/颜色空间转换等可用CUDA加速;

单机资源利用率-虚拟化与多开

当降低了单进程资源消耗后,通过采用虚拟化与多开技术能够有效提高单机资源利用率,一张卡上同时运行多个渲染进程。实际上,GPU的虚拟化技术为云游戏、云渲染的大规模商业化落地奠定了基础。

集群资源利用率-业务混跑

实际情况下,仅通过上诉两种方法依然难以解决成本问题。实现业务混跑,提高集群资源利用率,是云游戏、云渲染技术真正实现普惠的关键。其核心在于利用不同的视频处理高峰时期,对GPU集群进行分时复用。如在白天时段利用GPU集群完成离线AI处理工作,晚上6~8时进行直播转码处理工作,在9~11时进行云渲染、云游戏应用处理工作。基于业务的多样性,充分利用总GPU资源池,有效降低云渲染成本。所以视频云业务的多样性也是降低成本的重要优势。

03 云渲染实践案例一键开启三星堆奇幻之旅

CCTV《三星堆奇幻之旅》 采用了阿里云的大规模即时云渲染技术,将大型沉浸式体验需要的图形算力、存储需求放在云端,观众看到和交互的画面都是由云端即时渲染计算出来,从而让观众摆脱本地硬件限制,仅通过一个H5页面,便可低成本地享受高质量的沉浸式体验。作为高热度、高并发的云渲染应用,该实践案例支持5K的并发,预备万路弹性,最终登上微博热搜TOP 3,收获了3300万播放量。

这样热度和规模的活动,要保证每个用户的高体验,对技术上的要求和挑战都是巨大的,阿里云构建了多个维度的技术体系来提升用户体验。

阿里云视频云的GRTN(Global Realtime Transport Network)低延时网实现边缘传输,有效降低传输方面的延时。GRTN是阿里云各个音视频通信业务方合力打造的传输网,支持HTML5 的信令接入。GRTN采用层级网和对等网相结合的混合网络架构,媒体传输链路更短,全链路采用延时更低的基于UDP的RTC协议,并利用深度定制的动态路由、传输控制、边缘计算、双向实时信令网等机制。视频云云考古机制是基于GRTN设计,可接入视频云直播、点播和RTC等业务,便于全球实时传输,实现业务扩展。

RMS云渲染引擎也为三星堆项目体验发挥了非常重要的作用。RMS负责渲染视频的采集、处理、编码和传输。RMS的处理性能和延时、编码画质、QOS的传输体验都直接影响三星堆项目的用户体验。

游戏/渲染引擎输出的图像帧一般都是显存中,如果采用CPU软编或者ASIC异构编码的方式,会存在拷贝延迟。因此RMS采用GPU硬件处理为主、CPU处理为辅的方式,达到视频帧zero-copy的极致延迟体验,在满足画质、流畅度需求的前提下,充分降低性能消耗和计算成本。

同时,RMS在QOS策略上也做了大量的优化。本次云考古面向的是全国各地的观众,为应对复杂多变的网络环境,我们在RTC网络的传输Qos保障的基础上,对Jitter Buffer/NetEQ/带宽估计/可靠传输(丢包重传、乱序重组),以及Qos模块和编码模块的配合上做了专门的调整,包括智能策略组合、智能码控、丢帧逻辑和FIR处理等方面。同时,在QOS的码率分配上,我们也做了大量优化,可以在保障抗弱网能力的同时,将有限的带宽更多地分配到编码器的码率上,提升视频清晰度。

在视频编码算法方面,我们利用云渲染场景深度优化的窄带高清技术来提升清晰度。通过云端GPU与客户端CPU的联动,进行内容自适应的纹理和色彩增强处理,有效提升了视频画质,且算法的性能和成本都大幅降低,对全链路延时和客户端功耗的增加都达到可以忽略的程度。而图像处理算法与编码算法的有机结合优化,可在保证画质的同时,显著降低了视频码率大小和码率波动。

最终的效果呈现如上图所示,左侧仅仅采用GPU进行编码,色彩相对暗淡、文字相对模糊,画面饱和度、对比度相对较差;右侧通过我们的GPU+CPU联合优化的窄带高清处理,在码率降低35%的情况下,VMAF提高10%,主观的画面纹理细节和色彩效果也有提升。

面向未来,云渲染串流技术发展方向已经明晰,一方面通过与AR、VR、XR进行结合,打造沉浸式的云渲染体验。而其中关键的20ms以下的Motion to Photo延时,则是突出的技术挑战,可以考虑采用异步渲染的方式进行延时优化。

另一方面通过与虚拟社交、音视频通话与直播进行结合,向交互式、综合式的应用方向发展。云渲染串流与AI算法、直播技术、RTC音视频通话技术的结合,是未来技术的演进方向。我们的RMS云渲染引擎支持多种AI特效、直播旁路直播与RTC云合流,为未来云渲染的技术综合性要求打下了基础。

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

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

相关文章

3节点Fate集群实战记录(全网最详细)--横向联邦学习

集群配置 集群的三台服务器分别部署了fate-10000, fate-9999, fate-9998命名空间&#xff0c;集群的具体部署情况请转&#xff1a;link查看。 文章后面以命名空间名来区分操作所在的节点&#xff08;注意节点的实际名字不等于命名空间名&#xff09;。集群的配置信息如下&…

【嵌入式开源库:cJSON】 一个轻量级C语言JSON数据解析库用法详解

cJSON简介 cJSON是使用C语言编写&#xff0c;用来创建、解析JSON文件的库。cJSON特点就是工程文件简单&#xff0c;只有一个.c和一个.h&#xff0c;但提供函数接口功能齐全&#xff0c;麻雀虽小五脏俱全&#xff0c;使得在嵌入式工程中使用起来得心应手。 cJSON获取 https:/…

小程序本地 存储/获取值以及删除本地的值

场景&#xff1a;小程序本地存储的方法 wx.setStorageSync&#xff1a;直接给定key和value值 wx.setStorage&#xff1a;需指定key及value&#xff0c;然后再指定相应的值 小程序获取本地值的方法 wx.getStorageSync&#xff1a;直接指定key值获取到对应的数据 wx.getStorage&a…

Node.js模块系统的实现机制简析

目录nodejs模块系统简介C版native模块的定义和加载加载过程JavaScript接口层万能的binding机制JavaScript版native模块的定义和加载js2c技术NativeModule的工作原理Node启动时构造NativeModule对象&#xff0c;完成name到source的映射懒加载机制总结nodejs模块系统简介 Node.j…

[附源码]Nodejs计算机毕业设计基于的校园商城Express(程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程。欢迎交流 项目运行 环境配置&#xff1a; Node.js Vscode Mysql5.7 HBuilderXNavicat11VueExpress。 项目技术&#xff1a; Express框架 Node.js Vue 等等组成&#xff0c;B/S模式 Vscode管理前后端分…

Linux系统编程2——进程介绍

文章目录前言一、程序和进程二、并行和并发三、进程控制块PCB进程状态四、创建进程相关函数1、fork函数fork函数总结2、getpid/getppid3、exec函数族3.1、execl函数3.2、execlp函数3.3、exec函数族原理介绍五、进程回收1、为什么要进行进程资源回收2、孤儿进程3、僵尸进程4、进…

传奇GEE引擎版本架设

传奇GEE引擎版本架设 我是艾西今天给大家分享下传奇GEE引擎版本的架设教程 &#xff08;仅做参考&#xff0c;以下内容为显示素材打码部分请读者理解遵守平台GZ&#xff09; 传奇GEE引擎版本我们架设游戏需要用到的工具&#xff1a; 版本&#xff08;游戏类型服务端&#xf…

[附源码]Node.js计算机毕业设计高校学生管理系统Express

项目运行 环境配置&#xff1a; Node.js最新版 Vscode Mysql5.7 HBuilderXNavicat11Vue。 项目技术&#xff1a; Express框架 Node.js Vue 等等组成&#xff0c;B/S模式 Vscode管理前后端分离等等。 环境需要 1.运行环境&#xff1a;最好是Nodejs最新版&#xff0c;我…

[附源码]Node.js计算机毕业设计公司疫情健康信息管理系统appExpress

项目运行 环境配置&#xff1a; Node.js最新版 Vscode Mysql5.7 HBuilderXNavicat11Vue。 项目技术&#xff1a; Express框架 Node.js Vue 等等组成&#xff0c;B/S模式 Vscode管理前后端分离等等。 环境需要 1.运行环境&#xff1a;最好是Nodejs最新版&#xff0c;我…

冰刃(IceSword)的使用方法(基础篇)

冰刃是一款功能强大的杀毒辅助软件&#xff0c;深受很多杀毒高手的青睐&#xff0c;这里我介绍一下冰刃这个软件的简单使用方法&#xff0c;供大家参考。说句实话&#xff0c;我不是高手&#xff0c;不能像高手一样把一些软件运用自如&#xff0c;所以这个方法可能有很多纰漏或…

怎么去视频的水印?两分钟让你学会操作

从事视频剪辑的小伙伴&#xff0c;想必都需要先从网上查找一些视频片段&#xff0c;再将其整合成一个视频&#xff0c;但是保存下来过后&#xff0c;再打开这些视频时&#xff0c;大家应该都会发现这些视频上都带有水印&#xff0c;很影响视频的观感度&#xff0c;从而可能会降…

Redis宝典

文章目录一.概念1.1 什么是redis1.2 redis优点二.redis的存储结构2.1 结构2.2 渐进式rehash三.Redis数据类型及应用场景3.1 字符串&#xff08;string&#xff09;3.2 字符串列表&#xff08;list&#xff09;3.3 字符串集合&#xff08;set&#xff09;3.4 有序字符串集合&…

找旅馆问题

一 问题描述 有 N 家旅馆&#xff0c;每家旅馆都有位置和价格&#xff0c;有 M 个客人希望找到一家价格可接受的最近旅馆。 二 输入和输出 1 输入 每个测试用例的第 1 行都包含两个整数 N&#xff08;N ≤200000&#xff09;和 M&#xff08;M ≤20000&#xff09;&#xf…

Python之Socket编程: 轻松连接你的应用程序

前言 什么是Socket? Python 的 Socket 模块提供了一个标准的接口&#xff0c;可以让你使用网络连接来通信。 Socket 是一种网络通信技术&#xff0c;它提供了一个通用的接口来连接不同类型的网络&#xff0c;例如互联网、局域网和本地环回地址。你可以使用 Python 的 Socke…

为什么RocketMQ不使用Zookeeper作为注册中心呢?

根据CAP理论&#xff0c;同时最多只能满⾜两个点&#xff0c;而zookeeper满足的是CP&#xff0c;也就是说zookeeper并不能保证服务的可用性&#xff0c;zookeeper在进⾏选举的时候&#xff0c;整个选举的时间太⻓&#xff0c;期间整个集群都处于不可用的状态&#xff0c;而这对…

游戏网页设计成品 学校班级网页制作模板 大学生静态HTML网页源码 dreamweaver网页作业 简单网页课程成品

HTML实例网页代码, 本实例适合于初学HTML的同学。该实例里面有设置了css的样式设置&#xff0c;有div的样式格局&#xff0c;这个实例比较全面&#xff0c;有助于同学的学习,本文将介绍如何通过从头开始设计个人网站并将其转换为代码的过程来实践设计。 ⚽精彩专栏推荐&#x1…

makefile编译一个工程碰到的问题(仅做为记录,没有逻辑)

一、编译选项如下 test : all$(CC) $(CXXFLAGS) -I/DecoderFFMPEGLive/ -o Test/$.o -c Test/test.cpp$(CC) $(CXXFLAGS) -o $ Test/$.o -L. -lDecoderFFMPEGLive -lpthread 报错误&#xff1a;/usr/bin/ld: cannot open output file test: Is a directory 是因为我想生成…

论文笔记CATEGORICAL REPARAMETERIZATION WITH GUMBEL-SOFTMAX

目录Gumbel-Softmax分布Gumbel-Softmax EstimatorStraight-Through (ST) Gumbel-Softmax EstimatorStraight-Through Estimator (STE)Straight-Through (ST) Gumbel-Softmax Estimator参考Gumbel-Softmax分布 Gumbel-Softmax分布是一个定义在单纯形(simplex)上的连续分布。 Gu…

项目成功的制胜法宝——有效的领导力

项目经理在开展项目的过程中&#xff0c;为了确保项目的成功且实现价值交付&#xff0c;往往会使出浑身解数、有勇有谋、甚至熟练使用“孙子兵法”。毕竟在很多情况下&#xff0c;需要“带兵打仗”的项目经理权力微弱&#xff0c;不能像“将军”那般拥有权力的加持、一呼百应。…

javaSE - 认识字符串(String class)上半部分

前言 字符串: 在C语言里面 是 没有字符串类型的&#xff01; 但是&#xff0c;在 Java 和 C 里&#xff0c;有字符串类型【String】 什么是字符串&#xff1f;什么是字符&#xff1f; 在java里面有表示字符串的类 String 使用双引号&#xff0c;且双引号中包含任意数量的字符【…