Unreal像素流ubantu os部署细节
- 前言
- Docker 运行时环境部署:
- 1、Docker镜像资源获取:
- 2、镜像资源构造容器:
- 3、运行容器以及控制台用户切换:
- 4、映射路径内容启动程序
- 注意事项
前言
在一般的Linux服务进行Unreal服务的部署,一般需要GPU等硬件以及关联的依赖程序安装,以此处为例,这边Ubantu主要需要安装的依赖主要有valkan、nvidia等依赖。在本篇文章主要介绍另外一种部署的方式,使用的是Docker容器相关的内容。
Docker 运行时环境部署:
1、Docker镜像资源获取:
这里默认服务器已经准备好了相关的docker环境已经相关硬件
docker pull adamrehn/ue4-runtime:22.04-vulkan
2、镜像资源构造容器:
# 依据镜像构造容器内容 - 指定第一张显卡
sudo docker run --gpus device=0 --net=host -it -v /home/sfxc/gisSpace/Demo/Linux:/home/ue4/ adamrehn/ue4-runtime:22.04-vulkansudo docker run --gpus=all --net=host -it -v /home/sfxc/gisSpace/Demo/Linux:/home/ue4/ adamrehn/ue4-runtime:22.04-vulkan
3、运行容器以及控制台用户切换:
# 运行容器
sudo docker restart 52584baf31f5
# 使用根用户进入容器内部
sudo docker exec -it -u root 52584baf31f5 /bin/bash
# 切换默认用户ue4
su ue4
4、映射路径内容启动程序
# 启动程序像素流监听端口
sh ./BenuaPark.sh -PixelStreamingIP=192.168.168.8 -PixelStreamingPort=8888 -RenderOffScreen -log
# 运行可用nohup进行挂起
nohup /home/sfxc/gisSpace/Demo/Linux/$PIXCEL_NAME -PixelStreamingIP=192.168.168.8 -PixelStreamingPort=8888 -RenderOffScreen -log > /dev/null 2>&1 &
- > /dev/null 这个部分是为了将标准输出(stdout)重定向到 /dev/null。
/dev/null 是一个特殊的文件,通常被称为“黑洞”。
任何写入 /dev/null 的数据都会被丢弃,不会产生输出。因此,> /dev/null 的意思是:忽略命令运行时的输出信息。
- 2>&1 这是将标准错误输出(stderr)重定向到标准输出(stdout)。
在 Linux 系统中,stdout(标准输出)和 stderr(标准错误)是两个不同的输出流,分别表示程序的正常输出和错误输出。stdout 默认的文件描述符是 1。stderr 默认的文件描述符是 2。
2>&1 的意思是:将标准错误流(文件描述符 2)重定向到标准输出流(文件描述符 1)。
因为我们已经将标准输出通过 > /dev/null 重定向到“黑洞”,因此,2>&1 会将标准错误流也一并重定向到 stdout,从而一起丢弃。
> /dev/null:将标准输出重定向到 /dev/null,丢弃正常输出。2>&1:将标准错误重定向到标准输出,意味着标准错误也会被丢弃。
启动后,程序有多个关联进程,关闭是需要注意将全部内容进行结束
ps aux | grep UnrealEngineApp | grep -v grep | awk '{print $2}' | xargs kill -9
- grep -v grep:过滤掉 grep 自己的进程。
- awk ‘{print $2}’:提取进程的 PID(第二列)。
- xargs kill:将提取到的 PID 传递给 kill 命令
注意事项
- 需要宿主机或者另一个dock容器配合启动信令,进行推流
- 应用打包需要注意:
windows环境-turnkey会自动检测autosdk对应的版本,在项目配置完Linux工具环境后,需要在电脑配置好交叉编译工具以及环境变量LINUX_MULTIARCH_ROOT
# UE 5.3.2 对应交叉编译工具 v22_clang-16.0.6-centos7, 具体参照官方
# https://dev.epicgames.com/documentation/en-us/unreal-engine/linux-development-requirements-for-unreal-engine?application_version=5.3
# 检验cmd脚本:
%LINUX_MULTIARCH_ROOT%x86_64-unknown-linux-gnu\bin\clang++ -v