前言
一直想搞一个PeerStream的企业版,前段时间比较忙,最近空了一点,准备开搞。PeerStream企业版的定位就是卖服务,帮助大家更好的使用虚幻引擎的像素流。目前第一个试用版已经上线。欢迎大家试用。github地址
https://github.com/inveta/PeerStreamEnterprise
核心能力
1 完善的日志功能,可以追踪各种异常
2 分布式部署,可以支持windows、linux以及信创环境
3 支持公网访问以及渲染服务部署本地
4 支持管理多个UE实例
5 支持多个机器、多个显卡的负载均衡
6 支持UE实例的全生命周期管理(启动、关闭)
7 支持预加载,更好的用户体验
8 更多功能开发中
安装依赖环境
整个项目采用nodejs开发,所以只需要依赖node环境即可。
windows安装
nodejs下载然后直接安装即可
linux安装
linux推荐采用fnm来安装node。fnm 是一个快速且简单的 Node.js 版本管理器,它使用的是 Rust 语言编写。
步骤一 下载安装包
在指定文件夹下载安装包
curl -fsSL https://fnm.vercel.app/install -o install.sh
步骤二 安装fnm
bash install.sh
步骤三 安装指定版本node 这里是20版本
下面的命令需要修改为实际的用户路径
source /home/pc001/.bashrc
安装node
fnm use --install-if-missing 20
查看node版本
node -v
下载工程
通过git命令下载git clone https://github.com/inveta/PeerStreamEnterprise
或者如下图,直接下载
工程文件说明
execue.js:负责UE工程的启动关闭等能力
execue.json:execue.js的配置文件,主要保存连接signal的IP地址,端口以及本地IP
signal.js:负责信令的管理以及负载均衡的调度
signal.json:signal.js的配置文件,主要保存机器信息、UE实例路径等配置
test.html和peer-stream.js主要为测试代码,验证功能是否正常使用
配置文件说明
execue.json
signalPort:signal信令服务的端口
signalIp:signal信令服务的IP地址
execueIp:execue本地运行的IP地址,需要与signal.json中配置的machine的IP地址一致
signal.json
PORT:监听端口
exeUeCoolTime:启动UE实例逻辑占用显存的释放时间(UE启动中,还没有占用显存,先占用)
idleReleaseTime:UE实例没有使用被回收时间
SignalIp:信令服务器的IP地址
WebRTCFps:像素流发送的帧率
ResX ResY:图像分辨率
Unattended:忽视异常
RenderOffScreen:后台渲染画面,前台不显示
AudioMixer:混合音频
machine:是一个数组,保存不同的机器信息主要包括IP地址,以及显卡数量
gpucard:GPU显卡的序号,从0开始
gpumemory:GPU的显存大小
ueprogram:UE工程管理,是一个数组,可以管理多个工程
name:UE工程名称
path:UE的工程路径
urlprefix:项目前缀,每个UE工程需要唯一,三维调用使用
gpumemory:UE实例占用的显存大小
param:其他自定义的启动参数
iceServers:设置turnserver服务的地址,内网无需配置,公网访问需要
启动程序
启动signal服务
node signal.js
启动execue服务
node execue.js
测试服务
需要在test.html中修改为实际的IP地址和端口,另外前缀根据urlprefix的配置进行填写 ,每个UE工程都有一个单独的前缀。
然后双击打开即可,signal的控制台出现如下界面:
execue表示连接上来的execue.js
PeerStream 表示连接上来的前端网页
UnrealEngine 表示启动的虚幻实例
然后test.html 可以出来画面 就表示正常的。
后续计划
后续进一步完善配置界面开发以及监控功能开发,目前正在开发中。