草庐IT

【虚幻引擎】UE4像素流推送PixelStreaming

飞起的猪 2023-10-25 原文

一、前言

        虚幻引擎像素流送(Pixel Streaming)允许你从任何有屏幕的联网设备(例如计算机,手机,平板电脑等)播放虚幻项目。在这个教程里,我们将学习如何激活虚幻引擎的像素流送并从任何Web浏览器控制PC游戏。

二、局域网单例部署

      2.1  局域网单实例构架图 信令服务器帮助用户浏览器与UE4 Pixel Streaming插件之间建立直接的像素流通讯服务,在同一个局域网内,UE4程序和用户浏览器可以直连通讯,只需运行UE4程序和SignallingWebServer信令服务器两个程序,整个推流部署就完成了。

首先找到UE4自带的信令服务器所在的位置:我这里是D盘,找到你们自己所在UE对应的位置

 注意:为了防止破坏源代码,大家可以复制挣个文件夹到其他位置进行操作

然后运行setup.ps1,以管理员身份打开PowerShell并运行,这会安装所有需要的依赖环境

 然后运行SignallingWebServer\platform_scripts\cmd\Start_SignallingServer.ps1开启信令服务器。首次运行服务器时其将下载需要的所有依赖性。服务器启动,能够接收连接后,控制台窗口中将出现以下命令行:

安装成功后会出现以下提示:

       "PublicIp": "localhost",
        "HttpPort": 80,
        "HttpsPort": 443,
        "StreamerPort": 8888,
        "peerConnectionOptions": "{ \"iceServers\": [{\"urls\": [\"stun:stun.l.google.com:19302\"]}] }",
        "publicIp": "127.0.0.1"

最后以管理员运行run_local.bat

 运行成功之后会出现:

 2.2 UE的部署

  新建一个第三人称模板

在项目偏好设置里面,找到“播放”,添加命令-AudioMixer -PixelStreamingIP=localhost -PixelStreamingPort=8888,注意这里的端口号是上面运行成功显示的端口 "StreamerPort": 8888,

 然后打包,打包成功后,找到打包文件,按住Alt拖动复制一个exe文件

 

 右击属性,在exe后面先按一个空格键然后再加上-AudioMixer - PixelStreamingIP=localhost -PixelStreamingPort=8888 -RenderOfScreen

运行复制的exe文件

 打开浏览器输入127.0.0.1即可

 链接成功后,信令服务器会显示一条命令,表明加入成功

 

 三、局域网多实例部署

每个像素推流信令服务器对应一个UE4程序,多个客户端浏览器同时连接同一个像素流,如果仅仅观看没有问题,但多用户同时操作时就会互相影响了
要设置多用户对应多像素流程序,就需要启动多组UE4像素流程序和对应的信令服务器,设置不同的端口号,比如

A组

启动信令服务器参数
–httpPort 80 --streamerPort 8888
启动UE4程序参数
-PixelStreamingIP=127.0.0.1 -PixelStreamingPort=8888

B组

启动信令服务器参数
–httpPort 81 --streamerPort 8889
启动UE4程序参数
-PixelStreamingIP=127.0.0.1 -PixelStreamingPort=8889

C组

启动信令服务器参数
–httpPort 82 --streamerPort 8890
启动UE4程序参数
-PixelStreamingIP=127.0.0.1 -PixelStreamingPort=8890

浏览器通过访问不同端口的URL,就可以同时分别操作A组、B组和C组像素推流,互相之间不会干扰

http://127.0.0.1:80
http://127.0.0.1:81
http://127.0.0.1:82

修改位置config.json 文件配置

 

但这种访问不同端口URL的方式,在实际使用时会对多用户造成混乱,不知道那个端口空闲,哪个端口正在使用,这时候就需要引入新的路由分配服务器

Matchmaker分配服务器
UE4自带的Matchmaker分配服务器位于版本安装路径

Matchmaker分配服务器 UE4自带的Matchmaker分配服务器位于版本安装路径 D:\UE\UE4.27\Engine\Source\Programs\PixelStreaming\WebServers\Matchmaker

Matchmaker分配服务器设置

a.编辑matchmaker.js文件配置端口

var httpPort = 90; // 分配服务器统一对外服务端口

var matchmakerPort = 9999; // 分配服务器监听端口(供信令服务器连接)

运行D:\UE\UE4.27\Engine\Source\Programs\PixelStreaming\WebServers\Matchmaker\run.bat启动Matchmaker分配服务器

b.配置A-B-C组信令服务器,增加连接“匹配服务器”的参数设置 “D:\UE\UE4.27\Engine\Source\Programs\PixelStreaming\WebServers\Matchmaker\run.bat” --UseMatchmaker true --matchmakerAddress 127.0.0.1 --matchmakerPort 9999 --publicIp 127.0.0.1 --httpPort 80 --streamerPort 8888 其中: –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分配服务器后的局域网多用户部署构架如下图

实例操作:

第一步配置分配服务器

注意这个端口不要跟信令服务器的端口一样

配置好之后运行run.bat,开启分配服务器

第二步配置信令服务器 

第一个信令服务器

 第二个信令服务器

配置好之后分别运行run_local.bat

 

 运行成功之后会出现连接成功的命令提示

 运行程序1

 -AudioMixer - PixelStreamingIP=localhost -PixelStreamingPort=7777 -RenderOfScreen

运行程序2

-AudioMixer - PixelStreamingIP=localhost -PixelStreamingPort=6666 -RenderOfScreen

打开浏览器

输入127.0.0.1:60和127.0.0.1:70

 运行结果

3、广域网部署 广域网部署与局域网部署步骤一样,只是把局域网的设置全部搬到广域网服务器上即可。由于需要在广域网服务器上运行UE4程序,需要服务器配置高性能显卡(通常称为GPU云服务器)

有关【虚幻引擎】UE4像素流推送PixelStreaming的更多相关文章

  1. ruby - 在没有 sass 引擎的情况下使用 sass 颜色函数 - 2

    我想在一个没有Sass引擎的类中使用Sass颜色函数。我已经在项目中使用了sassgem,所以我认为搭载会像以下一样简单:classRectangleincludeSass::Script::FunctionsdefcolorSass::Script::Color.new([0x82,0x39,0x06])enddefrender#hamlengineexecutedwithcontextofself#sothatwithintemlateicouldcall#%stop{offset:'0%',stop:{color:lighten(color)}}endend更新:参见上面的#re

  2. ruby-on-rails - 如何在 Rails Controller Action 上触发 Facebook 像素 - 2

    我有一个ruby​​onrails应用程序。我按照facebook的说明添加了一个像素。但是,要跟踪转化,Facebook要求您将页面置于达到预期结果时出现的转化中。即,如果我想显示客户已注册,我会将您注册后转到的页面作为成功对象进行跟踪。我的问题是,当客户注册时,在我的应用程序中没有登陆页面。该应用程序将用户带回主页。它在主页上显示了一条消息,所以我想看看是否有一种方法可以跟踪来自Controller操作而不是实际页面的转化。我需要计数的Action没有页面,它们是ControllerAction。是否有任何人都知道的关于如何执行此操作的gem、文档或最佳实践?这是进入布局文件的像素

  3. ruby-on-rails - Rails 中的推荐引擎 - 2

    我想为我的Rails网络应用程序提供推荐功能。特别是,我想向新注册的用户推荐他可能想要关注的其他用户。Rails中是否有用于此目的的引擎/gem?如果没有,我应该从哪里开始构建它?谢谢。 最佳答案 有Coletivogemhttps://github.com/diogenes/coletivo我试了一下。在MySQL上运行。Neo4jhttp://neo4j.org真的很容易实现一个“跟随谁”。事实上,大多数展示其能力的样本都涉及“跟随谁”。快速提示-只有在JRuby上运行时,Neo4j.rb才会很酷。如果不是-使用Neograph

  4. 世界前沿3D开发引擎HOOPS全面讲解——集3D数据读取、3D图形渲染、3D数据发布于一体的全新3D应用开发工具 - 2

    无论您是想搭建桌面端、WEB端或者移动端APP应用,HOOPSPlatform组件都可以为您提供弹性的3D集成架构,同时,由工业领域3D技术专家组成的HOOPS技术团队也能为您提供技术支持服务。如果您的客户期望有一种在多个平台(桌面/WEB/APP,而且某些客户端是“瘦”客户端)快速、方便地将数据接入到3D应用系统的解决方案,并且当访问数据时,在各个平台上的性能和用户体验保持一致,HOOPSPlatform将帮助您完成。利用HOOPSPlatform,您可以开发在任何环境下的3D基础应用架构。HOOPSPlatform可以帮您打造3D创新型产品,HOOPSSDK包含的技术有:快速且准确的CAD

  5. 叮咚买菜基于 Apache Doris 统一 OLAP 引擎的应用实践 - 2

    导读:随着叮咚买菜业务的发展,不同的业务场景对数据分析提出了不同的需求,他们希望引入一款实时OLAP数据库,构建一个灵活的多维实时查询和分析的平台,统一数据的接入和查询方案,解决各业务线对数据高效实时查询和精细化运营的需求。经过调研选型,最终引入ApacheDoris作为最终的OLAP分析引擎,Doris作为核心的OLAP引擎支持复杂地分析操作、提供多维的数据视图,在叮咚买菜数十个业务场景中广泛应用。作者|叮咚买菜资深数据工程师韩青叮咚买菜创立于2017年5月,是一家专注美好食物的创业公司。叮咚买菜专注吃的事业,为满足更多人“想吃什么”而努力,通过美好食材的供应、美好滋味的开发以及美食品牌的孵

  6. UE4 源码阅读:从引擎启动到Receive Begin Play - 2

    一、引擎主循环UE版本:4.27一、引擎主循环的位置:Launch.cpp:GuardedMain函数二、、GuardedMain函数执行逻辑:1、EnginePreInit:加载大多数模块int32ErrorLevel=EnginePreInit(CmdLine);PreInit模块加载顺序:模块加载过程:(1)注册模块中定义的UObject,同时为每个类构造一个类默认对象(CDO,记录类的默认状态,作为模板用于子类实例创建)(2)调用模块的StartUpModule方法2、FEngineLoop::Init()1、检查Engine的配置文件找出使用了哪一个GameEngine类(UGame

  7. arrays - Ruby 数组 += vs 推送 - 2

    我有一个数组数组,想将元素附加到子数组。+=做我想做的,但我想了解为什么push不做。我期望的行为(并与+=一起工作):b=Array.new(3,[])b[0]+=["apple"]b[1]+=["orange"]b[2]+=["frog"]b=>[["苹果"],["橙子"],["Frog"]]通过推送,我将推送的元素附加到每个子数组(为什么?):a=Array.new(3,[])a[0].push("apple")a[1].push("orange")a[2].push("frog")a=>[[“苹果”、“橙子”、“Frog”]、[“苹果”、“橙子”、“Frog”]、[“苹果”、“

  8. ruby-on-rails - lovdbyless VS 社区引擎……哪个最好? - 2

    随着ruby​​被引入为新的编程救世主,我想知道是否有人基于易用性、运行所需的资源、可用性和易定制性而有偏好。两者有更好的吗? 最佳答案 好吧,任何基于Rails的社交网络应用程序的比较都应该包括insoshi(http://portal.insoshi.com/)。话虽这么说,这三个都非常相似,区别在于实现细节。Lovd和Insoshi都是完整的Rails应用程序;它旨在供您将它们用作入门工具包,并使用您自己的自定义功能对其进行扩展。另一方面,CommunityEngine是一个Rails插件。这意味着您可以更轻松地向现有Rail

  9. ruby - 如何通过Middleman安装和使用Slim模板引擎 - 2

    一般来说,我是Middleman和ruby​​的新手。我已经安装了Ruby我已经安装了Middleman和gem以使其运行。我需要使用slim而不是默认的模板系统。所以我安装了Slimgem。Slim的网站只说我需要'slim'才能让它工作。中间人网站说我只需要在config.rb文件中添加模板引擎,但是没有给出例子...对于没有ruby​​背景的人来说,这没有帮助。我在git上找了几个config.rb,它们都有:require'slim'和#Setslim-langoutputstyleSlim::Engine.set_default_options:pretty=>true#Se

  10. python - Ruby 或 Python 的 3d 游戏引擎? - 2

    关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。要求我们推荐或查找工具、库或最喜欢的场外资源的问题对于StackOverflow来说是偏离主题的,因为它们往往会吸引自以为是的答案和垃圾邮件。相反,describetheproblem以及迄今为止为解决该问题所做的工作。关闭9年前。Improvethisquestion是否有适用于这些的3d游戏引擎?

随机推荐