UE4 Pixel Streaming像素推流云端部署方案
[适用于4.24之后版本]
本文介绍适用于普通WEB云端部署,非GPU云
按照循序渐进方式,分为五个部分
- 局域网单实例
- 局域网多实例
- 广域网部署
- WEB云部署
- 后续
1、局域网单实例
局域网单实例构架图
信令服务器帮助用户浏览器与UE4 Pixel Streaming插件之间建立直接的像素流通讯服务,在同一个局域网内,UE4程序和用户浏览器可以直连通讯,只需运行UE4程序和SignallingWebServer信令服务器两个程序,整个推流部署就完成了
信令服务器配置:
UE4自带的信令服务器位于版本安装路径下:
E:\Program Files\Epic Games\UE_4.26\Engine\Source\Programs\PixelStreaming\WebServers\SignallingWebServer
带参数执行run.bat
“E:\Program Files\Epic Games\UE_4.26\Engine\Source\Programs\PixelStreaming\WebServers\SignallingWebServer\run.bat” --publicIp 127.0.0.1 --httpPort 70 --streamerPort 7770
–publicIp 127.0.0.1 信令服务器Web服务IP(使用局域网网卡可以设置为127.0.0.1)
–httpPort 70 信令服务器Web服务端口
–streamerPort 7770 像素推流监听端口
执行后
其中执行后显示:
05:22:51.123 No --PixelStreamingMonitorPort specified (or is 0). Running unmonitored.
05:22:51.289 WebSocket listening to Streamer connections on :7770
05:22:51.290 WebSocket listening to Players connections on :70
05:22:51.292 Http listening on *: 70
对应的是我们设置的服务端口
像素推流程序配置:
输出激活Pixel Streaming像素推流插件的UE4程序,创建启动快捷方式,通过命令行参数指定推流参数
E:\bin\云推流\WindowsNoEditor\PixelStream.exe -AudioMixer -PixelStreamingIP=192.168.1.19 -PixelStreamingPort=7770
-PixelStreamingIP=192.168.1.19 信令服务器IP地址
-PixelStreamingPort=7770 信令服务器设置的像素流监听端口
运行UE4客户端程序后,信令服务器成功与UE4 Pixel Streaming建立连接
05:48:03.945 Streamer connected: ::ffff:127.0.0.1
信令服务器返回数据增了一行,表示像素流客户端程序已经连接上信令服务器
浏览器设置:
客户端浏览器打开信令服务器对应的IP和端口URL,即可正常显示像素流视频内容了
http://192.168.1.19:70
2、局域网多实例
每个像素推流信令服务器对应一个UE4程序,多个客户端浏览器同时连接同一个像素流,如果仅仅观看没有问题,但多用户同时操作时就会互相影响了
要设置多用户对应多像素流程序,就需要启动多组UE4像素流程序和对应的信令服务器,设置不同的端口号,比如
A组
启动信令服务器参数
–httpPort 70 --streamerPort 7770
启动UE4程序参数
-PixelStreamingIP=192.168.1.19 -PixelStreamingPort=7770B组
启动信令服务器参数
–httpPort 71 --streamerPort 7771
启动UE4程序参数
-PixelStreamingIP=192.168.1.19 -PixelStreamingPort=7771C组
启动信令服务器参数
–httpPort 72 --streamerPort 7772
启动UE4程序参数
-PixelStreamingIP=192.168.1.19 -PixelStreamingPort=7772
浏览器通过访问不同端口的URL,就可以同时分别操作A组、B组和C组像素推流,互相之间不会干扰
http://192.168.1.19:70
http://192.168.1.19:71
http://192.168.1.19:72
但这种访问不同端口URL的方式,在实际使用时会对多用户造成混乱,不知道那个端口空闲,哪个端口正在使用,这时候就需要引入新的路由分配服务器
Matchmaker分配服务器
UE4自带的Matchmaker分配服务器位于版本安装路径
E:\Program Files\Epic Games\UE_4.26\Engine\Source\Programs\PixelStreaming\WebServers\Matchmaker
Matchmaker分配服务器设置
a.编辑matchmaker.js文件配置端口
var httpPort = 90; // 分配服务器统一对外服务端口
var matchmakerPort = 9999; // 分配服务器监听端口(供信令服务器连接)
运行E:\Program Files\Epic Games\UE_4.26\Engine\Source\Programs\PixelStreaming\WebServers\Matchmaker\Matchmaker\run.bat启动Matchmaker分配服务器
b.配置A-B-C组信令服务器,增加连接“匹配服务器”的参数设置
“E:\Program Files\Epic Games\UE_4.26\Engine\Source\Programs\PixelStreaming\WebServers\SignallingWebServer\run.bat” --UseMatchmaker true --matchmakerAddress 127.0.0.1 --matchmakerPort 9999 --publicIp 127.0.0.1 --httpPort 70 --streamerPort 7770
其中:
–UseMatchmaker true // 使用匹配服务器
–matchmakerAddress 127.0.0.1 // 匹配服务器IP
–matchmakerPort 9999 // 匹配服务器设置的服务端口
启动Matchmaker分配服务器
启动A-B-C组SignallingWebServer信令服务器
信令服务器返回数据增了一行,表示信令服务器已经在Matchmaker匹配服务器注册成功
05:42:48.163 Cirrus connected to Matchmaker 127.0.0.1:9999
多用户浏览器访问
多用户浏览器统一访问Matchmaker分配服务器提供的IP和端口,由Matchmaker分配服务器自动匹配找到一组空闲的信令服务器和对应的像素流,推送给用户。
增加Matchmaker分配服务器后的局域网多用户部署构架如下图
3、广域网部署
广域网部署与局域网部署步骤一样,只是把局域网的设置全部搬到广域网服务器上即可。由于需要在广域网服务器上运行UE4程序,需要服务器配置高性能显卡(通常称为GPU云服务器)
4、WEB云部署
GPU云服务器租赁费用高昂,且需要用到专门的虚拟化显卡( 如Nvidia Tesla专业显卡),专用显卡还需要向NVidia申请GRID驱动(默认驱动只能做深度学习,不能做显示用途)
本文介绍一种普通Web云服务器+本地电脑的部署方案,该方案价格低廉
WEB云部署方法:
将第二节“局域网多实例”方案的各部分分别部署于WEB服务器和本地电脑,由WEB服务器提供固定公网IP服务、本地计算机游戏显卡提供GPU渲染和编码服务,以最低的预算构建WEB云部署方案
WEB服务器部署
Matchmaker分配服务器
SignallingWebServer信令服务器(多个实例)
本地电脑部署
UE4输出带Pixel Streaming程序(多个实例)
按照以上分配方案分别部署完成后,发现如果访问浏览器与运行UE4程序的本地计算机处于同一网段,则可以正常连接并显示像素流,如处于不同网段,则一直显示正在连接像素流
究其原因是由于NAT造成的。在整个像素推流构架体系中,信令服务器虽然运行于WEB服务器,但他仅仅作为握手用途,握手后浏览器与像素流插件之间是直连通讯的,由于UE4程序运行在本地电脑,没有公网IP,当浏览器与本地电脑处于不同网段时,无法完成直连。
故,我们看到浏览器可以返回信令服务器的WEB网页内容,但无法获取像素流数据
为了穿透NAT完成P2P直连,需要引入TURN代理服务器
UE4安装程序提供了一个TURN代理服务器,位于安装版本路径
E:\Program Files\Epic Games\UE_4.26\Engine\Source\ThirdParty\WebRTC\rev.23789\programs\Win64\VS2017\release
该路径提供了TURN服务器(启动文件:Start_AWS_TURNServer.bat)和STUN服务器(启动文件:Start_STUNServer.bat)
本文介绍中我们仅需要运行TURN服务器(因为TURN服务器已经包含了STUN服务器功能)
配置TURN服务器
a.编辑Start_AWS_TURNServer.ps1文件
将$LocalIp直接指定为127.0.0.1
(默认是通过一个服务网页动态获取的,但这个网页我们访问不了,也没必要每次动态获取)
b.运行Start_AWS_TURNServer.bat启动TURN代理服务器
(TURN服务器默认在19303端口监听)
c.调整信令服务器,将信令服务器连接到TURN服务器
使用runAWS_WithTURN.bat代替run.bat启动带TRUN服务的信令服务器
由于runAWS_WithTURN.bat不支持命令行参数,需要修改cirrus.js文件和config.json文件进行参数配置
复制多个信令服务器实例
a.修改cirrus.js文件
var httpPort = 70; // 设置信令服务器Web服务端口
var streamerPort = 7770; // 设置像素推流监听端口
var matchmakerAddress = '127.0.0.1'; // 匹配服务器IP地址
var matchmakerPort = 9999; // 匹配服务器设置的监听端口
var matchmakerRetryInterval = 5; // 匹配服务器重试间隔
修改每个实例的配置文件分别使用不同的端口
var httpPort = 70;
var streamerPort = 7770;
var httpPort = 71;
var streamerPort = 7771;
var httpPort = 72;
var streamerPort = 7772;
var httpPort = 73;
var streamerPort = 7773;
b.修改config.json文件,将UseMatchmaker修改为true,表示使用匹配服务器
增加TURN服务器后完整的WEB服务器部署结构如下:
其中:
云服务器部署
- TURNServer代理服务器
- Matchmaker分配服务器
- SignallingWebServer信令服务器(多个实例)
注意信令服务器输出信息:
*04:17:11.919 peerConnectionOptions = {“iceServers”:[{“urls”:[“stun:116.62.163.32:19302”,“turn:116.62.163.32:19303”],“username”:“PixelStreamingUser”,“credential”:“Another TURN in the road”}]}
04:17:11.956 WebSocket listening to Streamer connections on :7773
04:17:11.957 WebSocket listening to Players connections on :73
04:17:11.961 Http listening on : 73
04:17:11.963 Cirrus connected to Matchmaker 127.0.0.1:9999
第一行表示已经加入turn和stun服务器
第二行表示正在7773端口监听像素流
第三行表示正在73端口监听用户加入
第四行表示HTTP服务器增在73端口监听
第五行表示已经加入Matchmaker分配服务器
本地电脑部署
- UE4输出程序(多个实例)
部署完成以后,通过WEB服务器配置的Matchmaker端口和公网IP即可正常访问像素流服务了,如果Matchmaker设置为80服务端口,则使用公网IP或者域名即可直接访问
5、后续
能同时开多少个客户端?
比较遗憾,由于Pixel Stream需要借助显卡的硬件H264编码,家用游戏显卡同时能编码H264的路数是有限的,在我们测试电脑的GTX 1080显卡上实测只能同时开三个UE4客户端
开第四个客户端时NvVideoEncoder报错了
目前看来,如果有大量用户的应用场景,Pixel Streaming像素流插件还不是很适合,不管是带宽,还是电脑集群数量都需要很庞大的数量。
后续开发思路
后续可能的开发思路:
- 可以开发多用户共享视角游戏,多用户共享同一个第三人称视角画面,开发每个用户独立的输入通道,修改游戏中对应的角色行为,共同建构同一个游戏世界;
- 修改Pixel Streaming插件,使用软件算法进行H264编码,不过这种方法可能会造成客户端延迟过大,只能用在一些输入不敏感的场合;
- 借鉴Pixel Streaming插件,自己写插件输出每个角色的Render To Texture视频流,在一个游戏场景中提供多角色视频流输出,提供给不同的视频推流服务器,最终推送给不同用户,实现单一游戏场景多人应用的场合,也是一种更简单的多人游戏实现思路(不需要考虑多客户端之间做同步,所有用户都在同一个游戏场景里)。
UE4 Pixel Streaming像素推流云端部署方案相关推荐
- UE4 4.24像素流送实践 pixel streaming
UE4 4.24像素流送实践 pixel streaming 4.24电脑运行成功了 在实践像素流送的过程中,我参考了 ①官方视频https://www.bilibili.com/video/BV1U ...
- UE4像素流送教程【Pixel Streaming】
虚幻引擎像素流送(Pixel Streaming)允许你从任何有屏幕的联网设备(例如计算机,手机,平板电脑等)播放虚幻项目.在这个教程里,我们将学习如何激活虚幻引擎的像素流送并从任何Web浏览器控制P ...
- [虚幻引擎][UE][UE5]像素流送(Pixel Streaming),像素流去掉黑边和按钮[UE5.1.0],鼠标控制
[虚幻引擎][UE][UE5]像素流送Pixel Streaming,像素流去掉黑边和按钮[UE5.1.0] 1.写在前面 01.作者碎碎念 02.结果 演示截图 视频教程 2.需要准备的软件 3.U ...
- unreal ue4 PixelStreaming 局域网及公有云部署全流程记录
PixelStreaming 局域网及公有云部署全流程记录 发表于 2020-04-10 | 更新于: 2020-04-20 | 分类于 Unreal Engine | 717 写在前面 本篇是 ...
- 【UE4】UE4.24关于像素流送的使用
[UE4]UE4.24关于像素流送的使用 摘要 一.本地设备的浏览器 1.准备工作 i.使用工具 ii.打开Pixel Streaming插件 iii.偏好设置启动的参数 iv. 打包项目 2.启动服 ...
- ue4云渲染——像素流送实践
一.安装 Epic Games Launcher 官方中文文档 https://docs.unrealengine.com/4.27/zh-CN/,点击下载 如需要登录账号,使用注册一个账号后再登录就 ...
- 【Cloudaily】2017年政务云市场厮杀开局,腾讯云打造终端+云端一体化方案
Cloudaily网罗新鲜要闻,每日为你呈现大数据和云计算领域热点新闻.本次内容播报如下: 蘑菇租房完成C轮融资,要用服务租房中介的SaaS工具撬动更大资源 近日,房屋租赁平台蘑菇租房完成C轮融资.蘑 ...
- AI 框架部署方案之模型部署概述
0 概述 模型训练重点关注的是如何通过训练策略来得到一个性能更好的模型,其过程似乎包含着各种"玄学",被戏称为"炼丹".整个流程包含从训练样本的获取(包括数据采 ...
- LiveVideoStack线上交流分享 (十六) —— 爱奇艺剧场直播云端混流方案
如今网络直播如火如荼,剧场直播是其一个应用分支,主播在观看点播视频时的同时做出评述,观众端同步观看点播和主播评述的混合视频流.今晚 7:30 ,LiveVideoStack线上交流分享第十六期,我们邀 ...
最新文章
- java appendchild_详解javascript appendChild()的完整功能
- C#操作SQLite 报错 (Attempt to write a read-only database)
- Netty和RPC框架线程模型分析
- linux g++ gcc编译c++哪个好,linux g++编译c++
- Ethereum Bootstrap 以太坊本地私有链开发环境搭建
- 索尼笔记本bios如何设置VT-x/AMD-V兼容
- 桌面程序explorer_备份Internet Explorer 7搜索提供程序列表
- 学习Spring Boot:(二十)使用 MongoDB
- C# MD5,hmacSHA1
- 微课系列(三):Python列表中存储的是元素的引用
- 计算机网络-自顶向下方法 7th 5.4 BGP协议总结
- jQuery常用语法笔记
- 软件项目管理 --SVN目录结构
- 电脑重装系统后当前安全设置不允许下载该文件
- 中国十大垃圾软件网站
- imap服务器收缓存pst文件夹,Outlook 转移OST数据文件 IMAP账户
- 视频通话除了QQ还有什么软件可以实现?
- 微信小程序 Array对象操作
- win10系统要求配置_Win10 1909 系统的优点与缺点和配置要求与优化技巧
- 玩转-------商业大亨