元宇宙场景下的实时互动RTI技术能力构建

news2024/10/1 7:46:28

元宇宙可谓是处在风口浪尖,无数的厂商都对元宇宙未来抱有非常美好的憧憬。正因如此,许许多多厂商都在用他们自己的方案,为元宇宙更快、更好的实现,在自己的领域贡献力量。LiveVideoStack 2022北京站邀请到了 ZEGO 即构科技的解决方案专家许明龙,为我们介绍 ZEGO 在元宇宙场景中的底层技术能力构建。

文/许明龙

编辑/LiveVideoStack

617253806c9be9789943e811302473d9.jpeg

ZEGO即构科技 , 解决方案开发专家

各位下午好。我是来自深圳 ZEGO 即构科技的解决方案专家许明龙。今天给大家分享的主题是《元宇宙场景下的实时互动 RTI 技术能力构建》。

561629c7cfb169e0092e921891d09aa3.jpeg

我将从元宇宙与实时互动 RTI、元宇宙场景中的关键技术能力解析以及 ZEGO 元宇宙场景案例深度剖析这三个方面展开介绍。

-01-

元宇宙与实时互动RTI

d11f0975b242f60791efd64ec82c2ac0.jpeg

即构认同元宇宙是未来的互联网发展趋势之一。随着人工智能、RTC、游戏研发、区块链的升级与普适,元宇宙离我们越来越近,我们也相信元宇宙可以带来全新的用户体验和商业闭环,以及更好的互动性和沉浸感,带来接近现实甚至超越现实的全新体验,从功能满足跃迁为情绪满足,实现所见即所得的虚拟世界体验。除此之外,还会带来全新的身份认同和互动体验建设,维护和沉淀数字资产,为企业带来更多的商业空间,同时沉淀有价值的数字资产。

549391c965373e029fca9f90a2caa6ad.jpeg

出于这种认同,我们意识到实时通讯 RTC 已经无法概括所有的线上交流。元宇宙的场景下会更加强调互动。为此我们进行了产品升级,从 RTC 升级到了实时互动 RTI

f741075e044442c1e9a760c6226739f1.jpeg

从实时通讯 RTC 到实时互动 RTI,代表着 ZEGO 的产品能力和服务范围也从以往的 RTC 升级到实时互动 RTI。RTI 代表 了ZEGO 能力的总和,同时也昭示着未来钻研的方向——更好的互动体验,满足精神的需求。

e52dbe8363f7816af5dc0a1050f6e687.jpeg

从 RTC 到 RTI,即构做了以下技术能力提升:

  • 智能逼真画质:移动端实时超分,采用 AI 预测用更低流量成本实现更高分辨率;主体分割加上透明通道传输,用智能 AI 算法让虚实交错,实现直播的多样玩法;自研 Z264 编码器实现同等条件下更好的画面质量,对于运动等复杂画面的限制有了提升;

  • 身临其境音质:场景化 AI 降噪,通过智能识别不同场景的不同噪声,进行噪声消除,可以根据场景智能切换降噪模式;空间音频可以让用户听到来自不同方位的声音,让互动更有方位感;

  • 无限的场景与玩法:多人状态实时同步、虚拟人以及万人音视频互动,增加了大规模互动的可玩性。

-02-

元宇宙场景中的关键技术能力解析

介绍完 ZEGO RTI 的升级思路与相关概念后,我们再来具体看一下概念背后,与元宇宙相关的部分热门技术能力。

2.1 万人连麦

传统的 RTC 认为,超过一定人数开麦讲话,声音就会听不清了。这样的想法往往不是产品经理提的,更多的是技术实现上的考虑,因为每一个开麦者都需要把音视频从客户端推流到服务端,人数很多会导致服务端承受非常大的压力,所以传统的 RTC 做法是在业务侧限制或者在 SDK 内部限制了同个房间的同时开麦人数。

a55956d654c360ad1f8049395f45b11d.jpeg

ZEGO RTI 与传统不同,我们不再限制同时开麦人数。那么我们实现的这个万人连麦有用吗?答案是肯定的,比如线上万人会场、线上万人音乐会,我们不仅需要听唱歌人的声音,还需要听到很多很多观众的声音,而不是几个人的声音,这样的万人连麦就非常有用,可以营造出真实的氛围感和沉浸感。

458c772cf5356428877093612700f4ed.jpeg

传统的方法是从客户端推流到服务端,通过服务端进行转发,对于万人连麦这样的架构很明显是行不通的。现在我们将客户端的音视频流推流到服务端,再经过服务器层层选路汇聚到边缘节点,最后再拉流到客户端。听到的声音基本囊括了所有开麦者的信息,最大程度的保证其真实感和氛围感不会丢失。

fedbe207880b496d8c3b23cfa84e1ee9.jpeg

整体包括的服务框架和职责有:SDK、网络接入层、调度层、服务层和储存层。

万人连麦一定有对应的客户端 SDK,接入时就通过 SDK 进行。接入时有信令层的接入网关和媒体网关。调度层分为信令统一调度、媒体调度以及流汇聚服务调度。服务层分为房间服务、万人房间服务、推流节点、服务拉流节点服务和音频汇聚服务。

995929e8d8fd0dfb09cc5e00423dc562.jpeg

接下来重点介绍万人连麦的整体服务架构。

这张图是简化版的架构示意图。这里有两个连麦者,连麦者 1 和连麦者 n,一大部分是房间的服务,另一大部分是媒体服务,想要连麦就必须有一个共同的房间号,无论这个房间有多少人,用户都需要先去登录。登录是指用户去获取房间服务,房间服务会维护用户的登录信息。连麦时,流媒体会从客户端推流到服务,当房间内人数较少时,流媒体调度是直接从源站进行拉流,不需要之前提到的汇聚服务。当房间人数非常多时,之前设置的大房间以及分层汇聚服务就开始发挥作用。大房间会进行大房间流信息的缓存与分发,汇聚服务会根据每一层的选路情况来汇聚。

ZEGO 目前设计了三层的汇聚服务,所有的数据最后都会汇聚到推流节点,最后经过调度层出口,经过拉流调度之后,再通过拉流节点拉到汇聚的流,最终实现万人连麦服务。

05789226c62efd40dd835ec705d8f3e1.jpeg

虽然配套的客户端看起来接口和能力比较简单,实际上很多都是在服务端完成的,其实客户端也存在推拉流调度上、选路上、异常情况的音频去重、音画同步、用户信息获取等能力。

b8398ec7e9e7977fd67a7c594dfdf0cb.jpeg

万人连麦也存在一定的挑战。

首先万人连麦需要面对高并发的情况,传统的房间不一定可以支持万人连麦所带来的高并发要求。ZEGO 通过改进,现在可以支持单房间 100 万人同时在线。

第二个挑战也是最大的挑战,汇聚网络流量过大,计算量过大。ZEGO 将音频和视频分离,只汇聚音频。一些过大的数据,客户端会进行一定量的预计算,以保证服务端不需要再一次进行计算,可以直接选路。

最后一个挑战是保证音频流畅不掉字。万人连麦是一个动态变化的过程,如果不进行相关优化,会出现掉字的情况。ZEGO 通过优化,每个选路环节优先保证音频数据的完整性不被选路策略打断。

2.2 多人状态实时同步

ca5151b21d953ab21f5fcb871d7d21ca.jpeg

多人实时状态同步,更多的应用在元宇宙场景中。在非元宇宙场景中,用户的状态会少一点,一般会有麦克风状态、摄像头状态等。但是在元宇宙场景中,还会包括移动状态、虚拟人的动作状态、表情状态,物品状态等非常多非常复杂的状态数据。这些状态数据的同步要求也都非常实时,否则没有办法进行良好互动,产品体验也无法满足。现在 ZEGO 可以做到实时信令 60ms 左右的延迟。ZEGO 的状态同步信令之所以能做到 60ms 的信令,是因为 ZEGO 对信令进行全球统一实时监控调度,实时计算边缘节点是否就近接入。 

在服务端侧,引入了用户视野的概念。服务端可以动态划分视野范围,客户端会有相关的视野事件通知,同时和 RTC 进行深度结合,将方位感、空间感落地到语音中。

d316c0a3468a742454848194dbd5b1d9.jpeg

元宇宙场景缺少不了 3D 引擎,通常会使用 Unity 或者 UE 构建。ZEGO SDK 底层以 C 语言进行开发,对外输出接口则为 C++/Unity C#,整体模块支持混合编程构建。3D 虚拟场景开发者或者业务应用 APP 开发者都可以使用各自熟悉的语言进行编程构建,没有额外的学习成本。除了客户端便于集成外,服务端引入状态同步服务器,通过状态同步服务器,业务侧服务器可以订阅所有用户的所有状态信息,以便做业务的其它控制行为。

b3dcea9460385912cd970368139418b4.jpeg

虽然听起来很复杂,但是使用起来非常方便,创建之后登录,背后会进行状态划分通知,业务侧只需要关注业务侧需要关注的点即可。 

2.3 ZEGO 虚拟人

a58490fa1a13ee8c0448b60f283ecbef.jpeg

目前由于 AI 的发展,特别是 ChatGPT 应用的快速普及,AI 虚拟人十分常见,那么AI 生成的虚拟人和 ZEGO 的虚拟人有什么区别呢?右边是 ZEGO 虚拟人的生成过程,ZEGO 的虚拟人不是通过 AI 生成的,ZEGO 的虚拟人生成过程比较复杂,需要经过原画阶段的建模、设计、动画、渲染等。原画需要通过原画师自己画,建模我们也有一套自己的建模标准,动画阶段也是。每个环节都有 ZEGO 的设计规范,设计出来的虚拟人是完完整整的人,不是缺胳膊少腿的,同时有配套的衣服、挂件、配件等等,是齐全完备甚至是丰富的。结合ZEGO的设计规范再配套上 ZEGO 的 AI 能力,ZEGO 虚拟人它就像是一个真人一样。总的来说,ZEGO 虚拟人最大的特点是可以通过简单编程实现对虚拟人的精细化控制。

29d6f25cd5c7fb386d8d771c4979f291.jpeg

ZEGO 提供 AI 捏脸和手动捏脸两种方式。AI 捏脸是通过强大稳定的脸部识别,对人脸进行海量分析和训练,从而实现虚拟形象对真人人脸的脸型、五官特征精准还原。手动捏脸通过骨骼实现对人脸各部位特征的参数调节,融合合成人脸,并配套妆容配饰等美术素材,可以在虚拟形象上自然替换绑定。

表情随动、肢体随动下文会细说。

声音驱动指通过语音的声波信息来实时驱动当前虚拟现实人物的脸部和嘴部表情,使得虚拟形象自动生成和真人一样自然的表情表达;文本驱动指输入文字即可驱动虚拟形象自然地朗读出声,也可搭载业务层 ASR 及 NLP 能力使虚拟形象对文字或语音内容进行对答。

694ca656f1a6725f82abf0d253f42539.jpeg

这是一部分虚拟人的形象展示。

在虚拟人风格形态上,ZEGO 的设计团队也设计了多种不同风格的虚拟人,有拟人风格、Q版风格、二次元风格等。

1e47ed2be15df83a9579533057b6b31d.jpeg

上图可以看到捏脸可以调整的参数有很多种,调整的范围也很大,可以随心调整以达到想要的效果。这样的调整可以通过APP自己手动调整,也可以交由程序接口由业务侧去调整进行,还可以通过AI来调整,当拍照或者上传图像后,AI 会从图像中提取人脸五官及脸型、发型等特征,生成与真人高还原度的虚拟形象。

bb8e11f2d091f7fa13043fd4609bec81.jpeg

表情驱动

文本驱动

驱动能力分为两部分,包括表情驱动和肢体驱动。表情驱动的驱动源可以有两类,可以通过摄像头来实时驱动,也可以通过动态文字来驱动。摄像头驱动基于领先的人脸关键点精准识别,实时还原面部表情形态。文本驱动输入文字即可驱动虚拟形象自然地朗读出声,也可搭载业务层 ASR 及 NLP 能力使虚拟形象对文字或语音内容进行对答。

71a6ad4e4a967097e88f8cfb93dd7b73.jpeg

肢体驱动 

肢体的驱动可以通过摄像头实时识别动作,提取肢体位置信息,不依赖动作捕捉设备即可实时驱动。通过摄像头驱动对环境和动作还是有所要求的,一旦摄像头拍摄不到将难以驱动,但在不少场景下还是可以用到的。

cfd33517cc0cef54bd5d4ed9abb94835.jpeg

ZEGO 也提出了虚拟人和 RTC 融合的方案,实现多个虚拟人在同一个空间内进行互动。一个虚拟人可以在同一个空间中看到另外的虚拟人的移动、表情、嘴型变化、动作、音视频互动等情况,得益于这样的方案融合,可以让用户在虚拟世界中也可以像现实世界一样感受到对方的情感变化。

该方案为 Avatar + RTC。Avatar SDK 是 ZEGO 的虚拟人 SDK, Express SDK 是 ZEGO 的RTC SDK。摄像头将采集到的画面传输到 Avatar SDK,Avatar 在得到数据以后,通过 AI 提取面部表情数据,再通过实时渲染的方式将表情渲染出来。画面渲染出来以后,将画面交给Express SDK,经过网络层的传输,Express SDK 采集的音视频信息也会随数据传输,最后Avatar SDK 将数据汇总,输出表情渲染。

752551fd3f107f203e2172224c254da0.jpeg

在面对虚拟人直播、虚拟人带货直播、虚拟人客服等场景时,上方图片的方案会更加适合。长时间的实时渲染客户端会吃不消,在客服 H5、小程序、浏览器、Webview等场景普遍纯在这样的诉求。摄像头还是交由 Avatar SDK 采集,采集之后虚拟形象的渲染是在 Avatar SDK 中进行,之后交由 RTC SDK,这样就获得了虚拟人的视频形象帧。同时,RTC SDK 也会采集音频信息推流。推流之后拉流端就不需要进行本地实时渲染虚拟形象了。因为推流出来的流是视频流,在哪里播放对客户端是没有要求的。

-03-

ZEGO 元宇宙场景案例剖析

讲完 ZEGO 虚拟人,来看一个完整的案例。

2a2c2c01080c75c05b11f2e641c24a2d.jpeg

该案例中,虚拟人可以换装捏脸,整个场景是一个 KTV 房间。这里有虚拟人和虚拟物的交互,例如坐在椅子上、拿着话筒唱歌送礼物、舞蹈动作等,也有虚拟和现实的交互,虚拟人和真人一起唱歌聊天,在真人不想显示真实面部的情况下可以很好的捕捉真人的面部,及时渲染表情以及音频的驱动。

5bb074786533251904d34112ee0fe3bd.jpeg

整体框架包括两大部分,一部分是程序,另外一部分是 3D 美术资源的设计。ZEGO 设计有资源编排工具,针对资源进行编排和打包,之后上传到美术素材中心。APP 提供 MetaWorld SDK 形式,可以动态加载美术资源进行实时渲染以达到预想的场景效果。

f0abb1924e80dd3a98b3970443267e1e.jpeg

ZEGO 与多个专业 3D 美术团队有深度合作,可以提供多个场景白模。上方右图展现的是通过白模的编排与设计,贴上不同的皮肤和元素动态更新。更新完之后,使用 ZEGO 的编排工具进行编排。

172b2198c45ada80f1a43e379718f2eb.jpeg

客户也可以自己设计原画以及建模,然后将由 ZEGEO SDK 进行交互编排,最后实现动态加载进行落地。

07b510cb6e16c26e902ddad1587dc419.jpeg

软件系统方案较为复杂,分为多进程、双进程和单进程。尤其是 Unity,当进程杀掉以后,整个APP 都会被杀掉,为此我们提供了两套解决方案,这里展现的是双进程的解决方案,整个方案分为三部分,宿主 APP 运行 RTC 主业务,整个元宇宙环境运行在一个独立进程。Unity 展示虚拟环境 UI,调用 ZEGO 驱动能力,与通信能力进行进程间的通讯,实现虚拟人位置信令和状态同步信令之间的互通,最后通过 ZEGO 的服务器实现多端通信。

7a10f29310ebb8850af227136c0831e7.jpeg

MetaWorld SDK 不仅提供简单的基础能力,还提供更为高级的能力,比如交互组件化能力,超级屏幕、编排主体分割形象等可以实现一些看起比较有意思的玩法。除了静态编排外,其实我们还提供了动态编排的能力,可以完全通过 APP 内的接口能力实现动态的编排资源,包括资源的样式、资源的位置、人物和物品的交互方式编排等。ZEGO 官网上线了一个虚拟小窝的解决方案,正是用了这套动态编排资源的方案,开局只提供一个空房间,全靠玩家装修实现属于自己的小窝。

以上就是 ZEGO 即构科技在元宇宙底层关键技术的全部分享内容,谢谢大家!


93fbb732814afe1a4997b7f4b128065d.jpeg

LiveVideoStackCon 2023上海讲师招募中

LiveVideoStackCon是每个人的舞台,如果你在团队、公司中独当一面,在某一领域或技术拥有多年实践,并热衷于技术交流,欢迎申请成为LiveVideoStackCon的讲师。请提交演讲内容至邮箱:speaker@livevideostack.com。

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

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

相关文章

MobPush Android SDK厂商通道申请指南

华为厂商申请 创建应用 登录华为开发者联盟,注册您的应用,在应用信息中获取APP ID和Client Secret 配置SHA256证书指纹 在华为开发者联盟配置SHA256证书指纹。获取及配置请参见华为官方文档配置AppGallery Connect 设置消息回执 集成华为厂商通道SDK…

数据结构—双向链表

目录 1. 链表的种类 2. 最实用的两种链表类型 3. 实现双向带头循环链表 3.1 创建头节点 3.2 实现双向循环功能—返回头指针 3.3 尾插 3.4 头插 3.5 尾删 3.6 头删 4. 实现两个重要接口函数 4.1 随机插入 4.2 随机删除 5. 顺序表和链表总结 1. 链表的种类 由上面…

【Nginx网站服务】

安装Nginx服务 1.先去官网下载软件包 2.关闭防火墙,将安装nginx所需软件包传到/opt目录下 systemctl stop firewalld systemctl disable firewalld setenforce 0nginx-1.18.0.tar.gz nginx-1.22.0.tar.gz3.安装依赖包 #nginx的配置及运行需要pcre、zlib等软件…

javaEE汽车用油加油站销售管理系统servlet

经过我的实地考察,我发现现在的销售管理有以下弊端: (1)、大多数都是人工记录,人工开票,这样既费时费力,还费财; (2)、由于品种种类的增多,记录货品的资料变得麻烦; (3)、对一些顾客…

COMSOL锂离子电池仿真技术与应用

背景: 随着各国燃油车禁售时间表的推出,新能源汽车的地位愈发稳固。而锂离子电池作为电动车的核心动力源,也越来越受到市场的追捧。锂离子电池在制作过程中涉及正极、电解液、负极、隔膜等材料的选取与匹配,极片设计参数的选择等…

原型设计工具即时设计、Axure、Figma、Sketch,哪个更好用?

在线网页原型图设计软件的使用与桌面端相比具备优势,因为在线网页原型图设计软件的使用全程不需要安装,而且在线网页原型图设计软件也没有任何地点上的限制,更主要的是在线网页原型图设计软件在操作系统上也没有限制,不论是现在使…

分享10个前端开发者需要掌握的DOM技巧

Web开发不断发展,掌握最新的趋势和最佳实践对每位开发者来说都至关重要。Web开发的最重要方面之一就是使用文档对象模型(DOM)。在本文中,我们将探讨10个必须掌握的DOM技巧和技巧,配有代码示例,这将帮助您成…

camunda工作流user task节点用途

Camunda中的User Task用于在流程中定义人工任务,需要一个人来执行该任务并提供相关信息。通常,User Task在业务流程中用于需要人类干预的步骤,例如审核、审批、调查等。 User Task具有以下特性: 1、指派任务给具体的用户或用户组…

leetcode547. 省份数量

有 n 个城市,其中一些彼此相连,另一些没有相连。如果城市 a 与城市 b 直接相连,且城市 b 与城市 c 直接相连,那么城市 a 与城市 c 间接相连。 省份 是一组直接或间接相连的城市,组内不含其他没有相连的城市。 给你一…

讨论度超20亿,肯德基疯狂星期四是如何出圈的?

每到周四,网上就会出现一股“神秘力量”——今天是星期四,V我50,请我吃肯德基。 肯德基疯狂星期四能有多火? 目前,#肯德基疯狂星期四#话题阅读量超23亿次,参与讨论次数超600万,而带话题原创人数…

不得不说的结构型模式-桥接模式

桥接模式(Bridge Pattern)是一种结构型设计模式,它可以将抽象部分与实现部分分离,使得它们可以独立地变化。桥接模式的核心思想是将一个系统分成两个独立的部分,抽象部分和实现部分,并且让它们可以互相独立…

sublime text的snippet介绍,提高编程效率

自定义Snippet Sublime Text 的 Snippet 是一种快捷方式,它允许您使用自定义模板或代码片段更快地编写代码。以下是创建 Snippet 的步骤: 打开 Sublime Text 编辑器并创建一个新文件。菜单栏选择 “Tools” -> “Developer” -> “New Snippet”…

python里面单双下划线的区别

区别: xx:公有变量,所有对象都可以访问; xxx:双下划线代表着是系统定义的名字。 __xxx:双前置下划线,避免与子类中的属性命名冲突,无法在外部直接访问。代表着类中的私有变量名。 _xxx:单前置…

【Maven 入门】第一章、Maven概述

一、什么是Maven? Maven是一款基于Java平台的强大构建工具,可用于管理和构建项目。它提供了一种易于使用的建立项目的方法,使开发者可以更快速、更高效地构建软件。 Maven的功能包括依赖管理、构建、发布、文档生成、测试在内的整个项目生命…

nodejs项目的轻量级数据持久化方案,node-json-db,直接使用json文件保存,查询数据。

前言 作为一名前端开发,我们做网站时,难免会遇到需要保存数据的场景,比如做一个小官网,没有注册,没有登陆,只有一个给我们提建议,如下面的, 网站上只有一处需要填写数据。 场景 …

RK3399平台开发系列讲解(PCI/PCI-E)PCIE相关配置说明

🚀返回专栏总目录 文章目录 一、DTS 配置二、menuconfig 配置三、cmdline 配置沉淀、分享、成长,让自己和他人都能有所收获!😄 📢 本篇将介绍在使用 RK3399 平台 PCIE 时候的配置。 一、DTS 配置 ep-gpios = <&gpio3 13 GPIO_ACTIVE_HIGH>; 此项是设置 PCIe…

3自由度并联绘图机器人实现写字功能

1. 功能说明 本文示例将实现R305样机3自由度并联绘图机器人写字的功能。 2. 电子硬件 在这个示例中&#xff0c;采用了以下硬件&#xff0c;请大家参考&#xff1a; 主控板 Basra主控板&#xff08;兼容Arduino Uno&#xff09; 扩展板Bigfish2.1扩展板电池7.4V锂电池 3. 功能…

Jenkins集成SonarQube实现代码质量检查

文章目录 一、前提配置1.1 安装及配置SonarQube Scanner插件1.2 配置SonarQube servers 二、非流水线集成SonarQube1.1 配置非流水线任务 三、流水线集成SonarQube 一、前提配置 1.1 安装及配置SonarQube Scanner插件 (1) 点击【系统管理】>【插件管理】>【可选插件】搜…

Netty核心模块、核心组件理解

文章目录 一、入门案例二、Bootstrap、ServerBootstrap三、Future 、ChannelFuture四、Channel五、Selector六、ChannelHandler 及其实现类七、Pipeline 和 ChannelPipeline八、ChannelHandlerContext九、ChannelOption十、EventLoopGroup 和其实现类十一、Unpooled类与ByteBuf…

Vue3技术5之watchEffect函数、Vue3生命周期、自定义hook函数

Vue3技术5 watchEffect函数Demo.vue总结 Vue3生命周期Vue3生命周期测试App.vueDemo.vue 组合式API使用生命周期钩子Demo.vue 总结&#xff1a; 自定义hook函数获取鼠标的x,yDemo.vue 使用hook方式文件目录hooks/usePoint.jsApp.vueDemo.vueTest.vue watchEffect函数 Demo.vue …