慧聪师太 发表于 2022-9-21 08:10:30

UE4.27 UE5 像素流送新人向教程,手把手带你避坑

近期因为要处理像素流送相关工作,所以整理了一下UE4.27像素流送的流程,本教程虽然使用UE4.27版本,按理说UE5应该暂时也没有什么使用方式上的变化。
再就是因为公司网络限制,所以我只记录了3个应用场景:

[*]单实例本地像素流送
[*]单实例局域网像素流送
[*]多实例局域网自动分配像素流送
如果了解这几个场景的工作原理,配置公网多实例场景应该很轻松,无非就是开通特定端口与配置公网IP,有其他大佬教程,可以参考食用,因为我没有实践,所以此文不做过多赘述,这篇文章主要是想手把手教你理解像素流送如何配置与应用,更全面更理论性的像素流送可以参考大佬文章。
当然也不要忘记还有官方文档可以参考
准备工作:
打开UE4引擎,找到插件菜单。


搜索Pixel Streaming像素流送,启用插件,然后重启引擎


打开项目设定


找到Input -> Always Show Touch Interface(一直显示触控界面),如果你打算使用手机来流送画面,建议开启。


找到编辑器偏好


找到Play -> Play in Standalone Game -> Additional Launch Parameters
在里面加入下面后缀
-AudioMixer -PixelStreamingIP=localhost -PixelStreamingPort=7777


*稍微解释一下这里:
当我们点击Play选项中的Standalone Game的时候,其实就是在编辑器之外的独立版本启动游戏,所以点击后你能看见类似打包游戏一样的界面,执行完毕后他才会开始运行独立的游戏。


而我们在这里填写的后缀其实就是和在Windows资源管理器下给快捷方式加后缀一样的操作,只是因为他没有快捷方式让我们看见,所以要在这里添加后缀。


当然如果你不用这个Play Standalone Game选项,每次调试都选择直接打包也ok,那这里不填也无所谓,了解原理即可。
**解释一下这几个后缀命令:
-AudioMixer 像素流送默认是没有声音的,所以想要有声音,这个必须记得添加
-PixelStreamingIP=localhost 像素流送的IP地址,现在是本地端口,这个后面可以根据需要修改
-PixelStreamingPort=7777 像素流送端口,同理也是可以修改的
Windows下给快捷方式添加后缀
前置工作结束

[*]单实例本地像素流送(本地网页控制UE程序)
1.打包文件:
首先随便摆个场景


然后直接打包


然后我们找到刚刚打包好的文件,给执行文件创建一个快捷方式


然后右键属性,给其添加后缀命令
-AudioMixer -PixelStreamingIP=localhost -PixelStreamingPort=7777


之后确认关闭窗口
2.配置信令服务器
找到信令服务器的位置,如果你在前置配置中正确启用了像素流送插件,打包时他会出现这个文件夹。
位置:
打包目录下
\Samples\PixelStreaming\WebServers\SignallingWebServer\platform_scripts\cmd\
打开run_local.bat这个文件


如果是初次执行他会进行必要的环境安装


安装好就会开始运行,直到出现下面的绿字,就算是信令服务器启动成功了。


当然到这里还算结束,还要对信令服务器进行配置,所以先关闭这个窗口。
回到打包目录下
Samples\PixelStreaming\WebServers\SignallingWebServer\
找到cirrus.js,右键 -> 编辑,找到下图这里,看见密密麻麻的字符先别慌,圈起来的是比较重要的,我一个一个解释


UseMatchmake
true/false是否使用Matchmaker(多实例自动分配player用的)
MatchmakerAddress
Matchmaker地址 这个地址是我们要访问的地址配合matchmaker.js中的Matchmaker端口使用
MatchmakerPort
这个要和matchmaker.js中的Matchmaker中设定的端口一致
PublicIp
公网IP,局域网测试时候可以写localhost或者127.0.0.1
HttpPort
此像素流送程序使用的端口
StreamPort
此像素流送程序要流送的地址要和像素流送程序快捷方式的后缀命令-PixelStreamingIP一致
*因为UE4.27好像和之前的版本不同,这个版本的config.json文件内已经将需要用到的可修改项整合在一起了,这里我推荐直接修改cirrus.js文件,因为这里面的const优先级高,后面不会因为修改两个文件而起冲突(可能我的解释有误,也希望有大神给我讲一下区别)




回归正题。


局域网环境单实例串流我们只需要确认Public IP和StreamerPort修改即可,而这两个位置的参数要和程序的快捷方式一致,不然无法串流


全部搞定后,我们运行刚配置好的信令服务器的run_local.bat,建议直接创建快捷方式到外面,不然每次找太麻烦了,直接运行这两个文件


如果配置的都正确,绿字会提示Streamer Connected: ::1,这表示像素流送的程序与信令服务器已经链接上了


之后我们在本机浏览器(我用的是edge)输入我们自己配置好的IP与端口


点击Start即可开始像素流送了




右上角的加号可以修改像素流送配置,官方文档可查阅如何配置,这里不做赘述。
单实例本地像素流送场景算搞定了。
接下来讲
二.单实例局域网像素流送(局域网内任意设备控制UE程序)
其原理就是在刚刚配置好的本地流送基础上修改PublicIP地址,然后局域网内设备访问这个地址即可控制。
首先我们查一下局域网内电脑的IP
直接打开cmd命令提示符,ipconfig回车,就能找到自己IPv4的地址,记住这个地址,
回到cirrus.js,把PublicIP修改为你的地址,同时


别忘记快捷方式这里也要进行相同修改,不然像素流送会失败


保存之后运行程序与信令服务器。


在网页输入你的PublicIP+端口网页即可链接,在局域网内的手机输入相同地址,手机也可以链接,如下图。


*手机和电脑操控的是同一实例,类似于玩游戏的远程遥控,或者本地串流的意思。
三.多实例局域网自动分配像素流送(局域网内网页/手机控制不同的独立程序)
因为多实例我们要用到多个实例(就是至少两个UE程序),所以我们要复制一份打包好的文件夹随便起个名就好


如果上面的单实例配置已经明白原理,那么多实例无非就是两个程序配置
相同的PublicIP +不同的HTTPPort + 不同的streamerPort
然后用Epic官方的Matchmaker自动分配进入的用户去操控不同的实例。
1.开启Matchmaker功能 + 配置信令服务器
开启Matchmaker,只要去编辑信令服务器的cirrus.js即可


UseMatchmaker把false改成true,Matchmaker就开启了;
MatchmakerAddress 因为是本地局域网多实例,所以填本机的IPv4地址就好,也是稍后要访问的地址
MatchmakerPort 这个端口要和Matchmaker文件中的端口对应,下面步骤会提到
PublicIp 这里可以先写成localhost,不过后续建议和MatchmakerAddress一致吧。
HttpPort 此处不要和另外一个像素流送程序的端口重复,也不要和Matchmaker的端口重复。
StreamerPort 同上,都不要和另外的端口重复,必须是唯一的
这是第一个像素流送要用到的信令服务器配置,第二个其实大同小异我们要注意的是


MatchmakerAddress,MatchmakerPort,PublicIp这三项是否与另一个信令服务器填写一致?
HttpPort,StreamerPort是否是唯一?
2.配置快捷方式
这里比较容易理解,要注意的是每个快捷方式的
-PixelStreamingIP和-PixelStreamingPort后缀命令
这两个地址是否和对应的信令服务器地址相同即可


比如本教程中就是
实例一快捷方式:
-PixelStreamingIP=localhost -PixelStreamingPort=7777
实例二快捷方式:
-PixelStreamingIP=localhost -PixelStreamingPort=9999
3.配置Matchmaker配置文件。
因为多个信令服务器只需要用一个Matchmaker,所以只需要配置一个即可。
路径如下
打包文件夹\Samples\PixelStreaming\WebServers\Matchmaker
找到config.json文件打开


文件里内容很简单,主要修改的就是HttpPort和MatchmakePort。


*这里解释下
HttpPort
这是我们使用Matchmaker后要访问的端口,需要配合cirrus.js中的MatchmakerAddress使用
示例:网页直接输入172.x.x.x:80(即MatchmakerIp:MatchMakerPort)即可访问了
MatchmakerPort
这个端口要和cirrus.js中的MatchmakerPort一致
全部配置好之后,我们运行matchmaker,如果是初次运行会自动安装必要环境,不放心也可以先运行setup.bat再run.bat。


之后下面显示的就是他所监听的端口


然后依次运行两个信令服务器,信令服务器们会显示连接到了Matchmaker。


Matchmaker也会显示连接信令服务器。


此时打开两个像素流送程序即可,Matchmaker也会显示有两个端口已经准备好自动分配


此时访问地址xxx.x.x.x:60即可


*访问60端口是因为我们的matchmaker所在端口是60,当连接后,他会自动为我们分配到正在进行像素流送的70和90端口。
总结一下就是打开matchmaker x1,像素流送程序 x2,配对的信令服务器 x2。


最终效果就是这,很壮观。。。如果你要开3个4个5个更多的像素流送,就要开更多的程序与信令服务器。
*这里说下N卡有个限制,最多我们只能开3个像素流送,但是有办法开更多,方法大佬已经找到了。
至此,局域网内的像素流送就完成了,还是因为公司网络问题,我没有配置公网,各位可以参考其他大佬的文章,本文如果理解了,公网或者云服务器端还是好配置的。
这里说一些注意事项

[*]解释一下像素流送程序快捷方式的后缀命令
-AudioMixer 像素流送默认是没有声音的,所以想要有声音,这个必须记得添加
-PixelStreamingIP=xxxx 像素流送的IP地址,这个可以根据需要修改
-PixelStreamingPort=xxxx 像素流送端口,同理也是可以修改的
-forceres强制运行,后面长接分辨率指令
-ResX=1920 -ResY=1080 设定分辨率 不用多说
-RenderOffScreen 如果不想打开像素流送窗口也想让程序流送,就使用这个命令,关闭时候可以在任务管理器中结束程序
[*]4.27的stun/turn相关协议文件路径
4.27其实是没有stun/turn文件的,需要打包一个已经开启像素流送插件的4.26空项目,然后找到release文件夹,复制这个文件夹过来用,这个方法是可行的。
[*]使用stun/turn的时候记得要开启19302 19303两个端口
开启方法百度一大把。
[*]为了方便开启一大堆程序,可以写一个.bat文件来执行
如果之后再遇到什么坑,我还会来更新,也希望各位大佬多多交流,共同进步!
最后,希望各位开发顺利!多拿Money!

-----------------------------
页: [1]
查看完整版本: UE4.27 UE5 像素流送新人向教程,手把手带你避坑