1.UE5像素流程序打包
(1)新建一个ue5的项目(名字不能是test否则打包会出错)。
(2)在“编辑-插件”中找到Pixel Streaming插件,点击勾选后自动提示重启ue以安装插件。
(3)在编辑器偏好设置里修改相关参数
(4)执行打包操作(注意打包路径不能有中文!!!)
2、像素流部署操作
(1)找到打包的项目
(2)创建YunW.exe的快捷方式,并在属性中添加相关的运行参数。
如:-PixelStreamingIP=127.0.0.1 -PixelStreamingPort=8888
(3)进入信令服务器文件夹
1) 双击运行信令服务器文件夹的\Samples\PixelStreaming\WebServers\SignallingWebServer\platform_scripts\cmd
目录下的setup.bat
文件
2)等待自动下载安装好所需的文件,下载完后就会出现coturn
和node
两个文件夹
检查两个文件夹里的文件,确认下载完全,否则后续会报错
coturn:
node:
3)对信令文件进行配置
打开config.json文件,修改为自己服务器的IP(由于我们这里是本地局域网部署,这一步骤可以省略或者可以改为127.0.0.1)
(4)启动信令服务器,这里有两种启动方式(尝试过的都可以的方法)
a. 运行 \Samples\PixelStreaming\WebServers\SignallingWebServer\platform_scripts\cmd下的run_local.bat脚本,可以开启信令服务器
出现以下界面说明启动成功
b. 运行 \Samples\PixelStreaming\WebServers\SignallingWebServer\platform_scripts\cmd 下的Start_WithTURN_SignallingServer.ps1也可以开启信令服务器。(右键单击选择PowerShell运行)
出现以下界面说明启动成功
(5)启动项目。(提供三种方式)
a. 双击刚刚创建的YunW.exe的快捷方式直接启动。
b. 在项目所在位置用命令行启动,在cmd中输入以下命令:
项目名.exe -AudioMixer -PixelStreamingIP=服务器IP -PixelStreamingPort=8888
c. 创建启动脚本start.bat,双击启动。脚本代码:
@echo off
start E:\Yun\Windows\YunW.exe -AudioMixer -PixelStreamingIP=服务器IP -PixelStreamingPort=8888 -log -RenderOffScreen
前面的路径以自己项目的为准。
如果成功启动了UE的像素流,在信令服务器命令行出现如下命令提示行,代表连接成功:
(6)访问像素流:在浏览器地址栏中输入地址 http://服务器IP
:信令端口(HttpPort端口,默认是80,如果需要修改在
config.json文件中修改)
至此,本地局域网部署像素流成功!
ps:1、windows云服务器(有GPU)公网部署单实例与此方法相同,ip换为公网服务器ip即可。
2、windows云服务器(无GPU)项目只能在本机渲染,只需把信令文件夹放到服务器即可,其他步骤是一样的,项目在本机启动。
3、遇到的一些问题:
一开始运行这几个脚本时候都无法成功,一直报错
(1)Node.js环境中的证书问题
报错内容大概如下:
npm ERR! code CERT_HAS_EXPIRED
npm ERR! errno CERT_HAS_EXPIRED
npm ERR! request to https://registry.npm.taobao.org/run-script-os failed, reason: certificate has expired
npm ERR! A complete log of this run can be found in:
npm ERR! C:\Users\86180\AppData\Local\npm-cache\_logs\2024-05-15T03_31_12_660Z-debug.log
node:internal/modules/cjs/loader:930
throw err;
^
Error: Cannot find module 'express'
Require stack:
- E:\Yun\Windows\Samples\PixelStreaming\WebServers\SignallingWebServer\cirrus.js
[90m at Function.Module._resolveFilename (node:internal/modules/cjs/loader:927:15)[39m
[90m at Function.Module._load (node:internal/modules/cjs/loader:772:27)[39m
[90m at Module.require (node:internal/modules/cjs/loader:999:19)[39m
[90m at require (node:internal/modules/cjs/helpers:93:18)[39m
at Object.<anonymous> (E:\Yun\Windows\Samples\PixelStreaming\WebServers\SignallingWebServer\cirrus.js:5:15)
[90m at Module._compile (node:internal/modules/cjs/loader:1095:14)[39m
[90m at Object.Module._extensions..js (node:internal/modules/cjs/loader:1124:10)[39m
[90m at Module.load (node:internal/modules/cjs/loader:975:32)[39m
[90m at Function.Module._load (node:internal/modules/cjs/loader:816:12)[39m
[90m at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:79:12)[39m {
code: [32m'MODULE_NOT_FOUND'[39m,
requireStack: [
[32m'E:\\Yun\\Windows\\Samples\\PixelStreaming\\WebServers\\SignallingWebServer\\cirrus.js'[39m
]
}
查阅之后发现是本地计算机上的根证书已过期。这个错误可能是由于操作系统或Node.js环境中的证书问题导致的。
解决方法:清除npm缓存(一般都能解决)
npm cache clean --force
一定不要随便升级npm版本!!!会与node.js版本不匹配导致npm没法用,会出现如下报错
(2)coturn文件夹为空。可能是80等相关端口被占用,打开即可。
(3)其他情况一般都是node文件夹的问题。
网络不好没下载完或者是其他原因导致run_local.bat运行时候报错,可以选择从官网下载node对应版本的压缩包,解压到自己项目的\package\Windows\Samples\PixelStreaming\WebServers\SignallingWebServer\platform_scripts\cmd
目录下。
官网:Node.js — Node v16.4.2 (Current) (nodejs.org)
解压到cmd文件夹中并重命名为node,删除zip包。
(4)不确定是不是导致报错的问题,但是自己本机的node.js版本最好在18以上(ue5.0.3)
这篇文章是因为自己需要实现这个需求,参考网上其他大佬的文章尝试以后可以成功实现的流程,记录下来方便以后查看,有些地方可能术语描述不准确但是操作是对的。之后如果有遇到其他的问题会再做补充!