excel2010设置列宽为像素_UE4像素流应用在公有云上的快速部署指南

929f8f263175536da73d0c5181b5936f.png

作者:周澄清 | Epic Games 技术客户经理

原文官网链接:UE4像素流应用在公有云上的快速部署指南 (保持最新修订)

UE4的像素流自4.21推出Beta版后,以其跨平台,零安装、高画质、低延迟等特性备受瞩目,很多用户已经根据官方文档在局域网环境中体验到了像素流的强大,更有国外用户利用像素流技术取得了商业上的巨大成功。
如今,高带宽、低延迟的5G时代触手可及,很多用户都不再仅仅满足于局域网,而想要将像素流的应用部署在更为广阔的云端以惠及大众。遗憾的是官方文档中关于公有云上部署像素流应用的资料并不详尽, 故而本文在这里给大家介绍如何将像素流应用快速部署在公有云之上。

本文假设读者对像素流技术已经具备基础知识,已经可以根据官方文档部署局域网环境内的像素流应用。如果读者还不十分了解,可以先通过官方文档进行了解。

这里我们以亚马逊中国EC2虚拟云服务器(北京一区)为例,当然笔者也测试了国内其他的云平台,主要步骤大同小异,所以就不再一一说明。

好了,那么让我们进入正题。

创建实例(Instance)

镜像的选择

每个云平台都提供许多预设的镜像选择,由于像素流技术目前只支持Windows操作系统,所以我们需要选择Windows Server的镜像,2012/2016/2019皆可。我们这里选择了Windows Server 2016 R2 简体中文版的镜像,之所以选择这个版本主要原因AWS 中国直接提供了这个版本下显卡的GRID驱动,省去了去Nvidia网站申请试用的麻烦。另外Community AMI 里有Windows Server with Tesla Driver的镜像,但这里的驱动不是GRID驱动,所以还是需要按照下文安装GRID驱动。

db098158dbff16ed80a935c79b31e326.png

(备选)在 AWS 中国 北京一区 使用预建的公有镜像 进行快速测试

笔者将自己在AWS 中国一区搭建的测试服务器做成了一个公有镜像,该镜像主要预装了.NetFramework3.5, GRID 驱动, Epic 启动器,Unreal Engine4 和两个像素流示例程序。读者如果也有同地区的账号,可以通过控制台=> AMIs => 选择Public Images => 搜索”UE4” => 选择“UE4PSDemoInstance” => Launch(启动)=>然后根据下文将其余部分设置完成。

账号: Administrator

初始密码:WeiShiXuYun,HuanYouShiShang

69d8e82f5964df7f7afe3a1c924274c3.png

实例类型的配置

要运行UE4的应用当然需要选择有GPU的实例,用户要确保其配置能够流畅运行目标UE4应用。我们这里为了测试方便选择了g3.4xlarge实例(16vCPU+128G内存+Nvidia Tesla M60*), 这个配置和我们的开发机相比瓶颈显然在GPU上,Tesla M60的3D性能相当于GTX 970左右,所幸这里的示例程序场景并不复杂。

c1e149bfaf201c0a5cb808b15d4ec038.png

注*: 虚幻引擎从4.24 版本开始,像素流可以支持高级媒体框架(AMF )的AMD的显卡

然后在”Add Storage”页面加一个128G(根据实际需求即可)的SSD硬盘,其他都可以暂时按照默认设置即可。

网络相关设置

像素流应用需要实例有一个公网IP, 所以确保创建时动态分配一个公网IP。AWS上直接使用默认设置即可。

网络带宽的话如果一个实例只服务一路连接的话,1080p/60fps下大概默认需要8~10Mbps的带宽,但是考虑到测试时有可能有多路连接以及远程桌面同时使用,带宽可以设置为50~100Mbps。AWS上直接使用默认设置即可。

安全组设置,像素流应用需要打开一些特定的网络端口,如果只是简单测试的话可以修改当前实例所在的安全组将Inbound和Outbound下所有的网络端口都打开。当然在正式发布时,你应该按照官方文档的说明,只打开用到的端口。

693c42a71ce0077ed48c08da18bfcb95.png

操作系统内的环境设置

显卡驱动的安装

由于NVidia的显卡在虚拟环境上运行DirectX/OpenGL/Vulkan需要专门的GRID License及驱动, 所以我们应该优先选择预装了GRID 驱动的镜像。如果没有的话,则需要根据各大云平台官方文档自行安装。上节中选择的镜像并没有预装GRID驱动,所以我们需要自行安装。AWS 中国提供了Windows的GRID驱动,可以通过下面这段PowerShell脚本下载到实例本地, 然后选择安装与操作系统对应的GRID驱动。

c0121cb45c1bd8c20373fac4b1a0ddc2.png

注:将脚本中”<>”的部分替换为相应的内容。

如果云平台并没有直接提供GRID 驱动,或者版本太旧,那么我们可以去Nvidia的网站去申请90天的试用,申请成功后再根据各大云平台提供的文档·来安装Nvidia GRID驱动及相关组件。如何申请可以参考NVidia官方的<<115_NVIDIA vGPU试用License全新申请流程介绍>>一文。

防火墙设置

Windows Server 2016 默认防火墙设置会禁止像素流所用到的端口的通信。所以和安全组设置类似,在快速测试时,你可以在控制面板 >> 防火墙设置中先关闭防火墙。正式使用时,则应该在高级防火墙设置中, 创建相应的规则,将需要使用的协议或者端口打开,也可以将像素流应用及其他相关应用都加入到白名单中去。

启动声音服务

Windows Server 2016的实例默认是没有启动音频服务的,这会导致像素流应用的声音无法正确播放。解决办法: 命令行下键入services.msc,将Windows Audio以及Windows Audio Endpoint Builder服务启动。

b0ad1d8ceabb9315602b69dca9e9a88b.png


为了能通过远程桌面的时候听到声音,还需确定下列选项被正确设置。

7f6aaf6f88cb96946ad2832df58eb028.png

安装.NET Framework3.5

Windows Server 2016默认没有安装.NET Framework3.5,通过Server manager 添加role and features, 然后一路Next到Features,选择.NET Framework3.5 然后点击安装。

c83c0fca83fcd4b49bdcfc08abccc5b8.png

1622ff5e1d2dd09f0f98e4010bb6fa4a.png

安装NodeJS

Windows Server 默认设置是不允许从浏览器下载内容的,所以要通过浏览器下载NodeJS或者其他任何软件,你需要先在ServerManager里关闭IE Enhanced Security Configuration。当然安全起见,当下载完需要的软件后,还是建议重新启用以增强系统的安全性。

5d0c559d82297b1da4df3fc69694f441.png

然后你就可以通过IE访问NodeJS官方网站下载并安装NodeJS for windows x64。

上传像素流应用

将打包好的像素流应用传到实例上方法有很多,通过网盘,通过FTP都可以。我们这里直接利用windows自带的远程桌面程序的共享本地驱动器的资源的方式使得能在实例上的“我的电脑”中访问本地电脑驱动器的资源。

56b7d756b729c1f80b7736bc26b502b6.png

启动像素流应用及相关服务

先为像素流应用创建一个快捷方式,在快捷方式下添加命令行参数” -AudioMixer”;也可以加上“-RenderOffScreen” 使得应用在最小化时仍旧能供正常工作。

如果你的打包应用是基于4.24 版,由于4.24已经移除了WebRTXProxy,所以需要在命令行最后额外添加 ”-PixelStreamingIP=localhost -PixelStreamingPort=8888“ 两项参数

b77a8cc5a6f2f29f81fb75058706a899.png

对于4.24版之前的包,需要运行EngineSourceProgramsPixelStreamingWebRTCProxybin下的Start_AWS_WebRTCProxy.bat*

注*:文中执行的所有带”AWS”的bat文件不仅仅适用于AWS平台,同样可以用在其他云平台的实例上。

启用STUN服务的情况

公有云上的像素流应用和局域网内的像素流应用最大的区别就在于这一步了。 公有云上的实例都在防火墙后,所以需要通过STUN服务进行防火墙穿透才能得到可以用于建立WebRTC 连接的公网IP, 读者可以运行位于 EngineSourceThirdPartyWebRTCrev.23789programsWin64VS2017release下的Start_STUNServer.bat 来启动默认的STUN server。

然后再运行EngineSourceProgramsPixelStreamingWebServicesSignallingWebServer下的runAWS.bat 启动 Signaling Server。

最后双击之前创建的快捷方式启动像素流应用,这时候就可以通过支持WebRTC的浏览器,新建一个页面输入云实例的公网IP, 开始体验像素流。

9ef631a8fde0fadd8fe3360f67a7fdae.png

启动TURN服务的情况

STUN一般可以应对大部分的情况,但是在少数情况下,比如Symmetry NAT下STUN无法正确获取用于创建WebRTC 连接的公网IP, 这个时候我们就必须借助于TURN提供的中继服务。中继意味着从实例先要将像素流发给TURN服务器,然后再有TURN服务器将像素流转发给用户,实际应用中会带来更多的带宽需求,所以一般会专门开一台高带宽的实例用作TURN服务器。这里为了测试的便利,仍旧将TURN服务器放在同一实例上。

我们通过EngineSourceThirdPartyWebRTCrev.23789programsWin64VS2017release下的Start_AWS_TURNServer.bat 来启动TURN server,这里就不再需要运行上节提到的Start_STUNServer.bat,因为TURN server包含了STUN server的功能,当发现STUN无效时,才会自动采取中继的方式。

在这样的情况下,我们需要启动EngineSourceProgramsPixelStreamingWebServicesSignallingWebServer下的runAWS_withTURN.bat 来替代上节的runAWS.bat

常见的问题

虚幻引擎提供的启动脚本中,是通过Invoke-WebRequest的方式来自动获得公网或者局域网IP地址,有时候并不能正确获得,这时候你可以在脚本中手工指定正确的公网IP或者局域网IP的方式来设置。

35833d8cc8019c1319e6a9b1ce18fdc9.png

UE4.24 对像素流的改进与增强

请参阅Unreal Engine4.24 Release Notes 中”像素流送改良“ 部分https://docs.unrealengine.com/zh-CN/Support/Builds/ReleaseNotes/4_24/index.html

未来的工作

本文主要讲了如何在公有云快速部署像素流应用进行测试,后续离产品化还有大量的工作需要完成,比如:

  • 机型配置的优化(比如是否使用vGPU或者MxGPU)
  • 负载平衡策略 (Load Balance)
  • 用产品级 Signaling/STUN/TURN服务替代引擎默认提供样例服务。
  • 后备选项 (Fallback Option)
  • 弹性伸缩 (Auto Scaling)
  • Linux下的像素流支持
  • 交互设计(兼顾不同平台不同以及不同的输入硬件)
  • 商用发布的UE授权问题

如果你面临上述的相关问题或者任何与虚幻引擎相关的问题,大家都可以随时通过EGC-Business@epicgames.com联系我们以获得官方的支持与帮助。

联系我们

虚幻引擎官方QQ群:1018846968

虚幻引擎官方B站:https://space.bilibili.com/138827797

官方社区邮箱:egc-community@epicgames.com

官方社区经理:大钊(jack.fu@epicgames.com,QQ:2722937652)

投稿联系:知乎上私信或联系小辉辉-社区管理(QQ:258327199)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值