实时云渲染与直播应用场景结合技术探索

2023-09-20 08:31:17

  //  

随着互联网以及终端设备的全面发展,直播在日常的生活中已经越来越常见。越来越多的人开始在直播中与主播互动,作为一种娱乐消遣的方式。但是有些直播平台频发的卡顿以及打赏特效的单一会让用户的直播体验大打折扣。LiveVideoStack邀请到腾讯云的江敏为我们介绍腾讯云如何将云渲染应用在直播场景中,为直播带来更好的体验。

文/江敏

编辑/LiveVideoStack

大家好,我是来自腾讯云的江敏,今天给大家分享的主题是实时云渲染与直播应用场景结合的技术探索。我在2020年加入腾讯云云渲染团队,腾讯云云渲染平台从最初云游戏平台开始,逐步发展,目前支持3D云应用、虚拟直播、云电脑等相关功能。今天将从云渲染简介以及结合云渲染的直播场景两大方面展开介绍。

-01-

云渲染简介

1.1| 什么是云渲染

f9f678aeca26fd31619ad1645b00b3c7.png

云渲染是将软件或游戏部署在云端,面画在云端渲染,支持用户实时操作,支持全端SDK(Web、安卓、iOS)接入,并为用户提供接近本地延迟及高画质的操作体验。上图展示了云渲染主要的流程,用户在web、小程序或者相关APP的操作,其信令会发送给云渲染实例,云渲染实例上运行的可以是3D软件,也可以是游戏等各类应用。应用或者游戏接受相关指令,给出真实的响应,产生相应的画面,这些画面经过采集编码发送到云渲染终端。

1.2| 云渲染基础架构

ec18dbcb0e852ba34b78eac174b4a97e.png

介绍一下云渲染的基础架构。从功能上,云渲染架构可以划分三层,分别是:用户接入层、云渲染逻辑处理层、云渲染算力层。

最上层客户接入层,主要是云渲染客户负责接入云渲染终端SDK及云渲染实例管理和资源管理等相关API。

中间一层是云渲染逻辑处理层,功能主要包括:安装以及运行客户应用、资源管理、并发调度及云渲染RTC传输等。

最底层是云渲染算力层,比如GPU资源、CPU资源、网络资源、边缘节点资源等。

-02-

结合云渲染的直播场景探索

下面结合具体的场景介绍云渲染在直播场景中一些方向和技术上探索。

2.1| 弹幕游戏直播

d782f832436621812ba4f3dc296f87b1.png

首先介绍一下最近比较火热的弹幕游戏直播。弹幕游戏直播的主要玩法是主播在直播间直播弹幕小游戏,观众在直播间通过评论或者礼物产生屏内互动。弹幕游戏不仅可以有效提高直播间的人气,还可以提高直播场次收入。弹幕游戏直播相较于传统直播,最大特点在于其互动性更强、观众参与感更强,例如:观众通过评论或者礼物可以左右一局游戏胜败。调研发现国内主流的直播厂商都已经支持了弹幕游戏直播。

3dca9bce222dc341610efc79d8288e2e.png

看一下传统开播流程,首先主播在PC主机上安装游戏和开播工具,开播工具可能是直播厂商提供的,也可能是一些开源软件如:OBS;然后运行游戏和开播工具,调整开播工具相关设置并将游戏画面推送到直播后台;最后主播和玩家进入直播间,玩家在主播直播间发送弹幕或者购买礼物参与游戏。

整个流程总结三个问题需要解决:

(1)Windows PC需求,绝大部分弹幕游戏都是基于windows系统开发,无法在手机或者MAC系统电脑上运行;另外在一些极端场景手机性能是无法满足弹幕游戏的。

(2)弹幕游戏直播观众通过发送弹幕和购买礼物实时参与互动,互动内容需要实时计算和渲染,且需要提供流畅的、高质量的游戏和观看体验,所以手机端或者普通电脑性能无法满足当前需求,如上图右侧展示某弹幕游戏开放商推荐的开播设备清单:①处理器要求,推荐CPU为最新的13代英特尔CPU ;②显卡要求,推荐性能不低于RTX2060;③内存要求,不低于32G;④显示器要求,推荐两块4K屏幕。因此通过将弹幕游戏的计算和渲染任务转移到云端,依靠云端服务器更强大的计算能力和图形处理能力,从而无需担心本地终端性能的限制。现状来看,大部分弹幕游戏已经切到云端进行处理和渲染。

(3)开播分辨率不够,画面模糊。观众主要通过手机进入直播间,所以弹幕游戏也是依照竖屏来开发的,另外手机的分辨率是能到2K的,所以为了保证观众有良好的观看体验,就要求主播开播的显示器分辨率最好能达到4K。

72ef6dd72fdad2467a84e2a563e2dcfb.png

针对上述问题,腾讯云针对性的给出了三个解决方案:

第一个方案是常规轻量云渲染开播。基于腾讯云云渲染的SaaS方案, 客户不需要接入云渲染任何API或者SDK,通过Web浏览器访问云渲染实例。画面会传输到本地PC,然后使用开播工具,按照普通直播流程进行开播即可。这种方式,弹幕游戏运行在云端,可以解决弹幕直播硬件性能问题,主播只需要提前预估整场游戏及直播中需要多大的算力,然后购买相应算力机器以及并发。但是直播间的游戏画面采集还是在主播PC机器上,所以分辨率问题仍然没有得到有效解决,另外主播可能会直播多个游戏,并且对接多个直播平台,针对不同的游戏和直播的平台需要不同的配置,所以开播环境不标准以及开播流程不够标准化。这些难点,在深度结合云渲染开播方案都能得到完美解决。

898989922ac3b488bf6972935bb4091f.png

方案二是深度结合云渲染开播。具体来说就是直播厂商将云渲染的SDK集成到厂商的开播工具中,这样厂商开播工具能获取云渲染采集编码的原始音视频数据,可以直接或者二次优化将音视频流推送到直播间。此方案即可以解决开播硬件性能问题,也可以解决主播主机分辨率的问题;且主播开播只需要打开相应的开播助手,所以也标准化了主播的开播流程。深度结合云渲染需要直播平台厂商接入云渲染SDK和相关API,有一定的开发成本,当然目前有一部分的厂商正在这么做。 

8c73dd6d8a0e59e309e608d928e7b6dc.png

最后一个方案是云电脑开播。云电脑开播是将整个电脑的画面推给主播,而不仅仅是游戏画面,同时将本地终端的麦克风、摄像头等硬件设备重定向到云电脑。主播开播前在云电脑安装弹幕游戏、开播助手等相关软件,然后在云电脑上开播,所有操作都在云电脑上进行。此方案游戏运行在云端,一定是能解决开播硬件性能问题的;又由于音视频数据是云电脑直接推送到直播平台系统,所以也解决了主播主机分辨率的问题。当然平台也可以根据实际需求制作满足场景的云电脑镜像,主播开播前选择所需的镜像生成开播环境,因此整个开播流程也是相对标准化的。整个方案,平台方接入是很轻量级的,几乎没有额外的开发成本。

2d701f70a092dc4f56f543b9fa6eb651.png

最后看一下三种不同方案和传统开播在硬件要求、分辨率、开播环境、开播流程和平台介入5个方面的对比。

2.2| 虚拟特效

53fb848bf242f68df872b3127e309608.png

接下来我们看下虚拟特效场景。传统礼物打赏基本按照上图所示的流程,用户购买礼物、消息发送给直播APP、礼物特效直接在观众终端本地渲染。由于特效是本地渲染,必须要考虑到不同终端的性能差异,所以特效较为简单,效果单一。云渲染虚拟特效希望达到如下目标:

  1. 提高特效多样性,展示效果更酷炫。

  2. 屏蔽终端性能差异,所有特效可以播放在任意终端。

  3. 特效能做到千人千面。

4591ee881cffbb281f3bcf69c9d2919b.png

如上图,我们将虚拟特效的渲染从观众终端移到云端,屏蔽观众终端性能的差异性,可以渲染出更为复杂的特效。上图右侧展示云渲染虚拟特效基础流程,直播间观众在APP上打赏、打赏消息会发送给各直播平台的服务、直播服务将特效请求转发给云渲染服务、特效会在云渲染实例渲染、云渲染实例对渲染的特效画面进行采集编码、将编码的流数据转发给直播平台、直播平台混流特效和直播视频流、混流后的数据推送到直播间。

5144ece44257765620a93d7aa5d20493.png

在设计虚拟特效之初,我们就在思考如何实现虚拟特效千人千面的效果。上图展示结合AIGC的能力,实现特效的千人千面的能力。具体流程,用户给出提示词、后台经过文本审核、提词优化、文生图、图片审核、结合相应场景生成特效。这里也支持厂商上传自己的模型,和云渲染服务结合,从而实现与自身业务更加相关的特效。

2c59197ef9e446bcf3f3ccbb4742fc1d.png

上图给出以腾讯云直播为例,介绍云渲染虚拟特效和直播系统结合的架构。主播或者粉丝打赏、消息发送给业务后台、业务后台将特效请求传给云渲染系统、云渲染系统将渲染后的特效数据发送到腾讯云直播系统、直播混流、最后将混流后的数据推送到直播间。

2.3| 多人同屏互动直播

a2f6c8d615af9fdbf36e7f4f0ae71387.png

然后我们看下多人同屏互动场景。当前直播互动主要以视频连麦为主,互动比较单一。多人同屏互动是在视频直播应用中增加互动效果,在直播的同时主播可以实时和观众进行语音或视频形式的互动。

8f9b003c4587d07b03e20131d210fbcb.png

首先我们看一段视频,直观感受下多人同屏互动直播的效果。视频里展示主播和观众可以相互转移操作权限,可以切换角色等功能。

上图右侧展示多人同屏互动直播基础流程,观众进入直播间、向主播发起互动角色的申请、主播审核通过、观众角色升级成可以参入游戏的互动观众、互动观众可以在本地操作自己游戏角色、云渲染SDK将用户操作指令传递给云渲染实例、运行在云渲染实例的游戏接受互动观众的操作指令、做出真实响应。整个过程,云渲染系统需要支持权限转移、角色切换、准确识别出观众的操作以及对应的游戏角色等。与此同时,如何保证高画质低延时的体验,突破互动人数的限制等也是亟需解决的问题。

e08fedcb717514c15bc8f6a4b51aa768.png

首先如何保证多人同屏互动直播中流畅的游戏体验?这里重点是要解决传输的问题。影响传输主要有两个方面,一个是物理距离,一个是网络环境。 

物理距离顾名思义就是现实生活中两地之间的距离,距离越长,其传输效果就越难以保证。另外即便两个人都在同一个地点,其网络环境不同传输效果也是有很大差异的。所以,“缩短”物理距离,“消除”网络差异成为解决问题的关键。

“缩短”物理距离,通过增加边缘节点以及就近接入来解决。如果遇到距离近传输延迟也非常高,会作为历史信息,保存下来,做下次调度策略的参考。

“消除”网络差异通过选择合适码流传输来解决。具体来说是,首先新用户连入时,下发最大码率的流,维持 t1 秒;t1 秒后,系统依据算法评估出的用户网络环境可以接受的码率b与系统编码的码率(例如系统编了三路码流,从低到高码率依次为b1、b2、b3)决定是否切流。具体来说,就是比较b和b1/b2/b3的大小,选择最接近b并且比b小的那路流来切换。

码率切换分为:

①当大码率流向小码率流切换时,持续下发新流 t2 秒,之后重新切换回大码率重试,探测用户网络环境是否好转,重试n次,每次重试间隔时间逐渐增大;

②当小码率流向大码率流切换时,持续下发新流 t3秒;在持续下发新流的过程中,如果评估出的码率变化率比较大,超过了设定的阈值T,就会停止持续下发此路流,根据实际的码率计算转发哪路流。

2fda525a7a016846ebcac49de727a471.png

根据以上阐述,多人同屏互动直播场景引入多码率和边缘节点,整个架构跟着升级如上图。观众接入时可能不是直接接入云渲染实例,而是连到数据透传服务上。另外结合连麦还需要加入混音的功能,直播服务也可以根据实际情况提供分档转码的特性等。

2.4| 云原生录制

3687aef4ac0b76fff123be0d1eb2d4e4.png

最后我们看一下云原生录制场景。首先我们看一下常规视频录制和手动手机录制面临的困难。

常规视频录制是指直播系统后台自带录制功能,无法实现所看即所录,例如无法录制弹幕、礼物特效等APP本地渲染的音视频内容。

手动手机录制面临问题,首先是无法实现规模化、自动化的素材积累 ;其次是占用手机带宽,影响观看或者游戏体验;最后需向用户索取视频录制权限,成功率低。 

caea3723d1027b84258dde854654c96f.png

云渲染云原生录制方案是指客户通过API调用云渲染实例、使其以观众角色进入直播间、录制在直播间所有音视频数据。云渲染实例上运行的可能是Android的APP也可能是云电脑。对于云原生录制需要直播厂商提供免登陆或者特殊账号登录直播间,并保证云渲染实例画面能够被采集到,例如windows系统保证不熄屏。有意思的是,我们发现部分客户直接将录制的视频推流到直播后台,作为直播的视频源。 

2.5| 资源自助管理

51ade4d57b8cd6e9ef14a088dcf457f2.png

最后,无论是弹幕游戏、虚拟特效还是同屏多人互动直播,这些资源都是运行在云渲染实例上。如果这些资源管理都交给云渲染团队,会有巨大的工作量。为此,我们开发了资源自助管理平台,包括以下功能:版本控制、灰度更新(更新指定的实例或比例)、自动分发、命令行工具(可以结合到用户流水线进行资源自动化管理)。该功能主要使用场景包括软件包自助更新和模型自助更新等。

谢谢大家!



00e5785efcd5f88db8be8e26ac4acae4.png

扫描图中二维码或点击“阅读原文 

直通LiveVideoStackCon 2023深圳站 9折购票通道

更多推荐

[k8s] kubectl port-forward 和kubectl expose的区别

kubectlport-forward和kubectlexpose是Kubernetes命令行工具kubectl提供的两种不同方式来公开服务。kubectlport-forwardkubectlport-forward命令用于在本地主机和集群内部的Pod之间建立一个临时的端口转发通道。该命令将本地机器上的一个端口绑定到

DVWA靶机,通过XSS盗取cookie登录

文章目录一发现XSS漏洞1.1登录DVWA,找到XSS(DOM)模块,测试XSS是否存在。1.2在选项的传参后面加入一串js代码,也就是可以XSS弹出的代码。payload如下:二、盗取cookie2.1在XSS平台上搭建一个测试项目。这里用的是免费的XSS平台:选择【我的项目】->【创建】,创建一个测试项目:2.2配

Java高级-注解

注解1.介绍2.元注解3.注解的解析4.注解的应用场景1.介绍注解Annotation就是Java代码里的特殊标记,作用是让其他程序根据注解信息来决定什么是执行该程序注解:注解可以在类上、构造器上、方法上、成员变量上、参数上等位置自定义注解/***自定义注解*/public@interfaceMyTest1{Strin

IntelliJ IDEA 2023.2 最新版如何激活?IntelliJ IDEA 2023.2最新版激活方法及验证ja-netfilter配置成功提示

🌷🍁博主猫头虎带您GotoNewWorld.✨🍁🦄博客首页——猫头虎的博客🎐🐳《面试题大全专栏》文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺🌊《IDEA开发秘籍专栏》学会IDEA常用操作,工作效率翻倍~💐🌊《100天精通Golang(基础入门篇)》学会Golang语言,畅玩云原生,走遍大

SpringBoot +MyBatis批量插入数据

💍背景介绍在最近的开发过程中,遇到了往数据库中表中插入大量的数据。有一个全国银行各分行的信息,共计148032条数据文件有8.45MB,因为考虑到数据量比较大,就想着导入到MySQL看一看需要多长时间。💍方案一:用for语句循环插入(不推荐)使用for循环语句将,将数据一条条插入。insertintot_bankv

【LeetCode-面试经典150题-day25】

目录530.二叉搜索树的最小绝对差230.二叉搜索树中第K小的元素98.验证二叉搜索树530.二叉搜索树的最小绝对差题意:给你一个二叉搜索树的根节点root,返回树中任意两不同节点值之间的最小差值。差值是一个正数,其数值等于两值之差的绝对值。树中节点的数目范围是[2,100]0<=Node.val<=105【输入样例】

React+Typescript项目环境中搭建并使用redux环境

前几篇文章我们的项目已经开始功能渐渐完善了那么我们来说最后一个点redux这个并不需要我们多努力其实官方文档给到已经算是很全面了我们可以直接访问地址TypeScript中文手册中文手册和官方是一样的而且对我们非常友好我们会在左侧导航栏中找到一个React点进去进入之后一直往下翻我们就可以看到Redux部分我们直接用他这

9.子数组统计问题

文章目录子数组计数问题[560.和为K的子数组](https://leetcode.cn/problems/subarray-sum-equals-k/)[974.和可被K整除的子数组](https://leetcode.cn/problems/subarray-sums-divisible-by-k/)[523.连续

C#实战:基于腾讯OCR技术实现企业证书识别和数据提取实践

一、OCR技术介绍在当今数字化时代,OCR(OpticalCharacterRecognition)识别技术正发挥着越来越重要的作用。OCR技术通过将图像中的文字转化为可编辑的文本形式,实现了对大量纸质文档的数字化处理和信息提取。常见的有企业资质证书的识别到身份证、护照等各类证件的自动识别等方面,OCR技术正在为各行各

macOS Big Sur:探索新设计,聚焦新体验

自苹果公司推出macOSBigSur以来,这一新版操作系统以其突破性的设计刷新了我们对Mac的认知。本文将详细介绍macOSBigSur的各项新功能及其为用户带来的卓越体验。安装:macOSBigSur(macos11)v11.7.10正式版一、全新设计:导览更轻松,控制更随心macOSBigSur对用户界面进行了全面

ChatGPT:使用fastjson读取JSON数据问题——如何使用com.alibaba.fastjson库读取JSON数据的特定字段

ChatGPT:使用fastjson读取JSON数据问题——如何使用com.alibaba.fastjson库读取JSON数据的特定字段有一段Json字符串:{"code":200,"message":"success","data":{"total":"1","list":[{"question_no":"21520

热文推荐