//
随着互联网以及终端设备的全面发展,直播在日常的生活中已经越来越常见。越来越多的人开始在直播中与主播互动,作为一种娱乐消遣的方式。但是有些直播平台频发的卡顿以及打赏特效的单一会让用户的直播体验大打折扣。LiveVideoStack邀请到腾讯云的江敏为我们介绍腾讯云如何将云渲染应用在直播场景中,为直播带来更好的体验。
文/江敏
编辑/LiveVideoStack
大家好,我是来自腾讯云的江敏,今天给大家分享的主题是实时云渲染与直播应用场景结合的技术探索。我在2020年加入腾讯云云渲染团队,腾讯云云渲染平台从最初云游戏平台开始,逐步发展,目前支持3D云应用、虚拟直播、云电脑等相关功能。今天将从云渲染简介以及结合云渲染的直播场景两大方面展开介绍。
-01-
云渲染简介
1.1| 什么是云渲染
云渲染是将软件或游戏部署在云端,面画在云端渲染,支持用户实时操作,支持全端SDK(Web、安卓、iOS)接入,并为用户提供接近本地延迟及高画质的操作体验。上图展示了云渲染主要的流程,用户在web、小程序或者相关APP的操作,其信令会发送给云渲染实例,云渲染实例上运行的可以是3D软件,也可以是游戏等各类应用。应用或者游戏接受相关指令,给出真实的响应,产生相应的画面,这些画面经过采集编码发送到云渲染终端。
1.2| 云渲染基础架构
介绍一下云渲染的基础架构。从功能上,云渲染架构可以划分三层,分别是:用户接入层、云渲染逻辑处理层、云渲染算力层。
最上层客户接入层,主要是云渲染客户负责接入云渲染终端SDK及云渲染实例管理和资源管理等相关API。
中间一层是云渲染逻辑处理层,功能主要包括:安装以及运行客户应用、资源管理、并发调度及云渲染RTC传输等。
最底层是云渲染算力层,比如GPU资源、CPU资源、网络资源、边缘节点资源等。
-02-
结合云渲染的直播场景探索
下面结合具体的场景介绍云渲染在直播场景中一些方向和技术上探索。
2.1| 弹幕游戏直播
首先介绍一下最近比较火热的弹幕游戏直播。弹幕游戏直播的主要玩法是主播在直播间直播弹幕小游戏,观众在直播间通过评论或者礼物产生屏内互动。弹幕游戏不仅可以有效提高直播间的人气,还可以提高直播场次收入。弹幕游戏直播相较于传统直播,最大特点在于其互动性更强、观众参与感更强,例如:观众通过评论或者礼物可以左右一局游戏胜败。调研发现国内主流的直播厂商都已经支持了弹幕游戏直播。
看一下传统开播流程,首先主播在PC主机上安装游戏和开播工具,开播工具可能是直播厂商提供的,也可能是一些开源软件如:OBS;然后运行游戏和开播工具,调整开播工具相关设置并将游戏画面推送到直播后台;最后主播和玩家进入直播间,玩家在主播直播间发送弹幕或者购买礼物参与游戏。
整个流程总结三个问题需要解决:
(1)Windows PC需求,绝大部分弹幕游戏都是基于windows系统开发,无法在手机或者MAC系统电脑上运行;另外在一些极端场景手机性能是无法满足弹幕游戏的。
(2)弹幕游戏直播观众通过发送弹幕和购买礼物实时参与互动,互动内容需要实时计算和渲染,且需要提供流畅的、高质量的游戏和观看体验,所以手机端或者普通电脑性能无法满足当前需求,如上图右侧展示某弹幕游戏开放商推荐的开播设备清单:①处理器要求,推荐CPU为最新的13代英特尔CPU ;②显卡要求,推荐性能不低于RTX2060;③内存要求,不低于32G;④显示器要求,推荐两块4K屏幕。因此通过将弹幕游戏的计算和渲染任务转移到云端,依靠云端服务器更强大的计算能力和图形处理能力,从而无需担心本地终端性能的限制。现状来看,大部分弹幕游戏已经切到云端进行处理和渲染。
(3)开播分辨率不够,画面模糊。观众主要通过手机进入直播间,所以弹幕游戏也是依照竖屏来开发的,另外手机的分辨率是能到2K的,所以为了保证观众有良好的观看体验,就要求主播开播的显示器分辨率最好能达到4K。
针对上述问题,腾讯云针对性的给出了三个解决方案:
第一个方案是常规轻量云渲染开播。基于腾讯云云渲染的SaaS方案, 客户不需要接入云渲染任何API或者SDK,通过Web浏览器访问云渲染实例。画面会传输到本地PC,然后使用开播工具,按照普通直播流程进行开播即可。这种方式,弹幕游戏运行在云端,可以解决弹幕直播硬件性能问题,主播只需要提前预估整场游戏及直播中需要多大的算力,然后购买相应算力机器以及并发。但是直播间的游戏画面采集还是在主播PC机器上,所以分辨率问题仍然没有得到有效解决,另外主播可能会直播多个游戏,并且对接多个直播平台,针对不同的游戏和直播的平台需要不同的配置,所以开播环境不标准以及开播流程不够标准化。这些难点,在深度结合云渲染开播方案都能得到完美解决。
方案二是深度结合云渲染开播。具体来说就是直播厂商将云渲染的SDK集成到厂商的开播工具中,这样厂商开播工具能获取云渲染采集编码的原始音视频数据,可以直接或者二次优化将音视频流推送到直播间。此方案即可以解决开播硬件性能问题,也可以解决主播主机分辨率的问题;且主播开播只需要打开相应的开播助手,所以也标准化了主播的开播流程。深度结合云渲染需要直播平台厂商接入云渲染SDK和相关API,有一定的开发成本,当然目前有一部分的厂商正在这么做。
最后一个方案是云电脑开播。云电脑开播是将整个电脑的画面推给主播,而不仅仅是游戏画面,同时将本地终端的麦克风、摄像头等硬件设备重定向到云电脑。主播开播前在云电脑安装弹幕游戏、开播助手等相关软件,然后在云电脑上开播,所有操作都在云电脑上进行。此方案游戏运行在云端,一定是能解决开播硬件性能问题的;又由于音视频数据是云电脑直接推送到直播平台系统,所以也解决了主播主机分辨率的问题。当然平台也可以根据实际需求制作满足场景的云电脑镜像,主播开播前选择所需的镜像生成开播环境,因此整个开播流程也是相对标准化的。整个方案,平台方接入是很轻量级的,几乎没有额外的开发成本。
最后看一下三种不同方案和传统开播在硬件要求、分辨率、开播环境、开播流程和平台介入5个方面的对比。
2.2| 虚拟特效
接下来我们看下虚拟特效场景。传统礼物打赏基本按照上图所示的流程,用户购买礼物、消息发送给直播APP、礼物特效直接在观众终端本地渲染。由于特效是本地渲染,必须要考虑到不同终端的性能差异,所以特效较为简单,效果单一。云渲染虚拟特效希望达到如下目标:
- 提高特效多样性,展示效果更酷炫。
- 屏蔽终端性能差异,所有特效可以播放在任意终端。
- 特效能做到千人千面。
如上图,我们将虚拟特效的渲染从观众终端移到云端,屏蔽观众终端性能的差异性,可以渲染出更为复杂的特效。上图右侧展示云渲染虚拟特效基础流程,直播间观众在APP上打赏、打赏消息会发送给各直播平台的服务、直播服务将特效请求转发给云渲染服务、特效会在云渲染实例渲染、云渲染实例对渲染的特效画面进行采集编码、将编码的流数据转发给直播平台、直播平台混流特效和直播视频流、混流后的数据推送到直播间。
在设计虚拟特效之初,我们就在思考如何实现虚拟特效千人千面的效果。上图展示结合AIGC的能力,实现特效的千人千面的能力。具体流程,用户给出提示词、后台经过文本审核、提词优化、文生图、图片审核、结合相应场景生成特效。这里也支持厂商上传自己的模型,和云渲染服务结合,从而实现与自身业务更加相关的特效。
上图给出以腾讯云直播为例,介绍云渲染虚拟特效和直播系统结合的架构。主播或者粉丝打赏、消息发送给业务后台、业务后台将特效请求传给云渲染系统、云渲染系统将渲染后的特效数据发送到腾讯云直播系统、直播混流、最后将混流后的数据推送到直播间。
2.3| 多人同屏互动直播
然后我们看下多人同屏互动场景。当前直播互动主要以视频连麦为主,互动比较单一。多人同屏互动是在视频直播应用中增加互动效果,在直播的同时主播可以实时和观众进行语音或视频形式的互动。
首先我们看一段视频,直观感受下多人同屏互动直播的效果。视频里展示主播和观众可以相互转移操作权限,可以切换角色等功能。
上图右侧展示多人同屏互动直播基础流程,观众进入直播间、向主播发起互动角色的申请、主播审核通过、观众角色升级成可以参入游戏的互动观众、互动观众可以在本地操作自己游戏角色、云渲染SDK将用户操作指令传递给云渲染实例、运行在云渲染实例的游戏接受互动观众的操作指令、做出真实响应。整个过程,云渲染系统需要支持权限转移、角色切换、准确识别出观众的操作以及对应的游戏角色等。与此同时,如何保证高画质低延时的体验,突破互动人数的限制等也是亟需解决的问题。
首先如何保证多人同屏互动直播中流畅的游戏体验?这里重点是要解决传输的问题。影响传输主要有两个方面,一个是物理距离,一个是网络环境。
物理距离顾名思义就是现实生活中两地之间的距离,距离越长,其传输效果就越难以保证。另外即便两个人都在同一个地点,其网络环境不同传输效果也是有很大差异的。所以,“缩短”物理距离,“消除”网络差异成为解决问题的关键。
“缩短”物理距离,通过增加边缘节点以及就近接入来解决。如果遇到距离近传输延迟也非常高,会作为历史信息,保存下来,做下次调度策略的参考。
“消除”网络差异通过选择合适码流传输来解决。具体来说是,首先新用户连入时,下发最大码率的流,维持 t1 秒;t1 秒后,系统依据算法评估出的用户网络环境可以接受的码率b与系统编码的码率(例如系统编了三路码流,从低到高码率依次为b1、b2、b3)决定是否切流。具体来说,就是比较b和b1/b2/b3的大小,选择最接近b并且比b小的那路流来切换。
码率切换分为:
①当大码率流向小码率流切换时,持续下发新流 t2 秒,之后重新切换回大码率重试,探测用户网络环境是否好转,重试n次,每次重试间隔时间逐渐增大;
②当小码率流向大码率流切换时,持续下发新流 t3秒;在持续下发新流的过程中,如果评估出的码率变化率比较大,超过了设定的阈值T,就会停止持续下发此路流,根据实际的码率计算转发哪路流。
根据以上阐述,多人同屏互动直播场景引入多码率和边缘节点,整个架构跟着升级如上图。观众接入时可能不是直接接入云渲染实例,而是连到数据透传服务上。另外结合连麦还需要加入混音的功能,直播服务也可以根据实际情况提供分档转码的特性等。
2.4| 云原生录制
最后我们看一下云原生录制场景。首先我们看一下常规视频录制和手动手机录制面临的困难。
常规视频录制是指直播系统后台自带录制功能,无法实现所看即所录,例如无法录制弹幕、礼物特效等APP本地渲染的音视频内容。
手动手机录制面临问题,首先是无法实现规模化、自动化的素材积累 ;其次是占用手机带宽,影响观看或者游戏体验;最后需向用户索取视频录制权限,成功率低。
云渲染云原生录制方案是指客户通过API调用云渲染实例、使其以观众角色进入直播间、录制在直播间所有音视频数据。云渲染实例上运行的可能是Android的APP也可能是云电脑。对于云原生录制需要直播厂商提供免登陆或者特殊账号登录直播间,并保证云渲染实例画面能够被采集到,例如windows系统保证不熄屏。有意思的是,我们发现部分客户直接将录制的视频推流到直播后台,作为直播的视频源。
2.5| 资源自助管理
最后,无论是弹幕游戏、虚拟特效还是同屏多人互动直播,这些资源都是运行在云渲染实例上。如果这些资源管理都交给云渲染团队,会有巨大的工作量。为此,我们开发了资源自助管理平台,包括以下功能:版本控制、灰度更新(更新指定的实例或比例)、自动分发、命令行工具(可以结合到用户流水线进行资源自动化管理)。该功能主要使用场景包括软件包自助更新和模型自助更新等。
谢谢大家!