UE像素流送
版本:UE4.27
1 单服务器
(1)启用像素流插件;
(2)工程打包;
(3)配置快捷方式启动参数;
音频混合
像素流IP、端口
-AudioMixer -PixelStreamingIP=localhost -PixelStreamingPort=8888
(4)管理员身份打开PowerShell并运行
cd
SignallingWebServer\platform_scripts\cmd\setup.ps1
(5)开启信令服务器
运行SignallingWebServer\platform_scripts\cmd\Start_SignallingServer.ps1
(6)快捷方式启动虚幻引擎应用程序
提示:
说明虚幻引擎应用程序已经启用了像素流送插件,前端信令和Web服务器也已准备好将客户端连接到虚幻引擎应用程序。
2 多服务器
参考: https://docs.unrealengine.com/4.27/zh-CN/SharingAndReleasing/PixelStreaming/Hosting/
配置:配对服务器、信令服务器、UE应用、浏览器
(1)配对服务器
定位
工程打包路径/WindowsNoEditor\Samples\PixelStreaming\WebServers\Matchmaker
命令
run.bat --HttpPort 90 --MatchmakerPort 9999
注意:参数大小写
(2)信令服务器
工程打包路径\WindowsNoEditor\Samples\PixelStreaming\WebServers\SignallingWebServer\config.json
公网配置:
公网IP
Stun服务器IP
Trun服务器IP
工程打包路径\WindowsNoEditor\Samples\PixelStreaming\WebServers\SignallingWebServer2\platform_scripts\cmd\Start_Common.ps1
连接项
不使用默认值
Stun服务器端口
Turn服务器端口
用户名/密码配置:
启动服务器:
打开PowerShell:
定位:
工程打包路径\WindowsNoEditor\Samples\PixelStreaming\WebServers\SignallingWebServer\platform_scripts\cmd
直接拖Start_WithTURN_SignallingServer.ps1文件入命令窗口,回车
(3)UE应用
新建UE应用程序快捷方式,设置属性:
-AudioMixer -PixelStreamingIP=localhost -PixelStreamingPort=8886
启动
(4)浏览器
输入网址:
10.0.12.33:90
(5)信令服务器2
拷贝SignallingWebServer文件夹,粘贴重命名SignallingWebServer2
工程打包路径\WindowsNoEditor\Samples\PixelStreaming\WebServers\SignallingWebServer2\config.json
公网配置:
工程打包路径\WindowsNoEditor\Samples\PixelStreaming\WebServers\SignallingWebServer2\platform_scripts\cmd\Start_Common.ps1
连接项用户名/密码配置:
启动服务器:
打开PowerShell:
定位:
工程打包路径\WindowsNoEditor\Samples\PixelStreaming\WebServers\SignallingWebServer2\platform_scripts\cmd
直接拖Start_WithTURN_SignallingServer.ps1文件入命令窗口,回车
(6)UE应用2
新建UE应用程序快捷方式,设置属性:
-AudioMixer -PixelStreamingIP=localhost -PixelStreamingPort=8887
启动
(7)浏览器2
输入网址:
10.0.12.33:90
外网端口未开放可测试10.0.12.33:19305
(8)外网
开放端口:90、19304、19305
3 交互通信
参考:https://docs.unrealengine.com/4.27/zh-CN/SharingAndReleasing/PixelStreaming/CustomPlayer/
参考:https://blog.csdn.net/o0pk2008/article/details/102589585
(1)JS --> UE
emitCommand (测试未成功)
emitUIInteraction (测试成功)
(2)UE --> JS
UE
像素流送组件::Send Pixel Streaming Response(FString)
JS
app.js
注册监听器函数
addResponseEventListener("handle_responses", myHandleResponseFunction);
移除事件监听器
removeResponseEventListener("handle_responses");
4 传参
参考:https://www.jianshu.com/p/90f1f67fc7a8
(1)Matchmaker获取URL地址中的“自定义”参数
Samples\PixelStreaming\WebServers\Matchmaker\matchmaker.js
修改
(2)自定义HTML文件获取自定义参数
标签中增加截取url中自定义参数的代码 //获取URL地址中的自定义参数
function GetQueryString(name) {
var reg = new RegExp("(^|&)" + name +"=([^&]*)(&|$)","i");
var r = window.location.search.substr(1).match(reg);
var context = "";
if (r != null)
context = decodeURIComponent(r[2]);
reg = null;
r = null;
return context == null || context == "" || context == "undefined" ? "" : context;
}
5 问题
(1)直接外网地址访问
易出现:Client断开不及时
(2)内网访问
易出现:Cirrus服务不足
6 无窗口启动
(1)新建bat文件 Start_ps1_NoWindow.bat
REM 启动 SignallingWebServer2
start powershell -windowstyle hidden -File ./Samples/PixelStreaming/WebServers/SignallingWebServer2/platform_scripts/cmd/Start_SignallingServer.ps1
REM 启动 SignallingWebServer
start powershell -windowstyle hidden -File ./Samples/PixelStreaming/WebServers/SignallingWebServer/platform_scripts/cmd/Start_SignallingServer.ps1
(2)新建bat文件 Start_ExeAndRun.bat
Start 工程名.exe -AudioMixer -PixelStreamingIP=localhost -PixelStreamingPort=8888 -AllowPixelStreamingCommands -RenderOffscreen
Start 工程名.exe -AudioMixer -PixelStreamingIP=localhost -PixelStreamingPort=8889 -AllowPixelStreamingCommands -RenderOffscreen
“.\Samples\PixelStreaming\WebServers\Matchmaker\run.bat”
exit
(3)新建bat文件 Start_All_NoWindow.bat
REM 启动前先清理
taskkill /f /im 工程名-Win64-Shipping.exe
Start Start_ps1_NoWindow.bat
Start Start_ExeAndRun.bat
6.1 专用服务器启动
(1)要求:
避免重复启动
避免带窗口启动
指定需要的参数
(2)新建bat文件 Start_Server_WithoutWindow.bat
@echo off
REM 防止重复启动
tasklist | findstr “工程名Server” >nul 2>&1
if errorlevel 1 (
start /b powershell -WindowStyle Hidden -Command “Start-Process ‘%~dp0\GS_QinZhou_VR\Binaries\Win64\工程名Server-Win64-Shipping.exe’ -ArgumentList ‘-server -log -port=23001’ -WindowStyle Hidden -Verb RunAs -PassThru”
) else (
echo Running
)
exit
REM " -WindowStyle Hidden" 无窗口模式启动
REM " %~dp0" 批处理文件所在的目录;
REM " -ArgumentList ‘-server -log -port=23001’ “传递参数;
REM " -Verb RunAs -PassThru” 管理员方式启动;
(3)注意事项
bat启动无反应:可能是杀毒软件拦截;
处理:关闭杀毒软件的免打扰模式(拦截弹窗),再次启动bat,加入信任列表;
或者直接关闭杀毒软件。