UE5基于Linux的像素流送(Pixel Streaming)部署

本文记录了如何将 UE 项目打包至 Linux 环境,并通过另一台主机的 Web 网页进行像素流送展示。

⚠️ 重要前提 经测试,不建议使用 WSL 虚拟机(存在 Vulkan 无法识别显卡的硬件加速问题)。 本方案全程基于 原生 Ubuntu 系统服务器 进行操作。


参考文献:虚幻引擎中的像素流送入门 | 虚幻引擎 5.4 文档 | Epic Developer Community

第一阶段:Windows 开发端配置

在打包之前,必须确保 Windows 上的 UE 环境具备“跨平台编译”能力。

启用像素流插件

在 UE 编辑器中:

  • 打开 编辑 (Edit) -> 插件 (Plugins)
  • 搜索 Pixel Streaming 并勾选启用。
  • 重启引擎以生效。

安装跨平台编译工具链 (Toolchain)

UE 需要特定的工具链才能在 Windows 上生成 Linux 可执行文件。

  • 下载:访问 虚幻引擎 Linux 开发要求,下载对应 UE 版本的 Toolchain。
  • 配置环境变量:安装后,确保系统变量中存在 %LINUX_MULTIARCH_ROOT%

image-20260328092912349

  • 验证:打开 CMD 输入:

    1
    %LINUX_MULTIARCH_ROOT%\x86_64-unknown-linux-gnu\bin\clang++ -v

    若显示版本信息,则配置成功。

image-20260328092953365

在 Epic 启动器中添加 Linux 支持

  • 打开 Epic Games Launcher -> 库。
  • 点击引擎版本旁的“下箭头” -> 选项
  • 勾选 Linux 目标平台并应用更新。

image-20260328093120843


第二阶段:项目优化与打包

为了减小包体大小并提高运行效率,打包前需进行精简配置。

优化打包设置

  1. 精简地图项目设置 -> 打包 (Packaging) -> 列表:要包括在打包版本中的地图。点击 + 号,仅添加真正需要运行的关卡地图。
  2. 强制烘焙:勾选 **只烘培地图 (Cook only maps)**,确保不会打包无用的资产。

image-20260328114230698

执行打包

  • 点击 平台 (Platforms) -> Linux -> 打包项目 (Package Project)
  • 打包完成后,你会得到一个包含 项目名.shLinux 文件夹

image-20260328114702080


第三阶段:Linux 服务端环境配置

假设你已经安装好了 Ubuntu 原生系统。

基础环境更新

切换国内镜像源并更新系统:

1
2
3
4
5
6
7
8
# 配置国内镜像源
sudo sed -i 's@//.*archive.ubuntu.com@//mirrors.tuna.tsinghua.edu.cn@g' /etc/apt/sources.list

sudo sed -i 's@//.*security.ubuntu.com@//mirrors.tuna.tsinghua.edu.cn@g' /etc/apt/sources.list

sudo apt update && sudo apt upgrade -y
# 安装基础组件nodejs,npm 以及 Vulkan
sudo apt install nodejs npm mesa-vulkan-drivers vulkan-tools libvulkan1 -y

准备项目文件

  1. 在 Linux 中创建目录(如 ~/UE_Project)。

  2. 通过 SCP 或 U 盘将 打包文件夹 上传至该目录。

  3. 赋予执行权限

    1
    chmod +x 项目名.sh

生成像素流组件

进入信令服务器相关目录,执行初始化脚本:

1
2
3
4
5
6
7
cd ~/UE_Project/Samples/PixelStreaming/WebServers

chmod +x get_ps_servers.sh

sed -i 's/\r$//' get_ps_servers.sh # 修复 Windows 换行符问题

./get_ps_servers.sh #将相关像素流送基础设施分支提取到该文件夹中

第四阶段:启动与运行

配置并启动信令服务器

  • 修改 IP:编辑 SignallingWebServer/config.json,将 "PublicIp" 修改为 Linux 服务器的局域网 IP

  • 关闭防火墙(防止 UDP 流被截断):

    1
    sudo ufw disable
  • 启动脚本

    1
    2
    3
    4
    5
    6
    7
    cd SignallingWebServer/platform_scripts/bash

    chmod +x *.sh

    ./setup.sh # 安装启动服务器所有必需的依赖性包

    ./Start_SignallingServer.sh #启动信令服务器

启动 UE 程序

新开一个终端窗口,运行打包好的 UE 脚本:

1
./项目名.sh -RenderOffScreen -PixelStreamingIP=127.0.0.1 -PixelStreamingPort=8888
  • -RenderOffScreen: 后台渲染,不弹出窗口。
  • -PixelStreamingIP: 绑定本地转发 IP。

第五阶段:故障排查与进阶

解决网络波动/延迟

如果发现网页访问卡顿,尝试以下方案:

  • 禁用 IPv6:WebRTC 有时会错误选择 IPv6 导致路由迂回。
  • 强制 IPv4:启动参数加上 -PixelStreamingIP=你的实际局域网IP
  • 硬件编码检查:确保安装了最新的 NVIDIA 闭源驱动(通过 nvidia-smi 查看)。

常用运维命令

  • 强制杀掉残留进程

    1
    ps -ef | grep -E "UE|Cirrus" | grep -v grep | awk '{print $2}' | xargs kill -9
  • **检查端口占用 (8888)**:

    1
    netstat -tuln | grep 8888

静态 IP 设置 (Netplan)

若需固定 Linux 服务器 IP,编辑 /etc/netplan/*.yaml

1
2
3
4
5
6
7
8
9
10
11
12
13
network:
version: 2
renderer: networkd
ethernets:
enp3s0: # 这里换成你第一步找出的网卡名
dhcp4: no # 关闭自动获取 IP
addresses:
- 192.168.31.200/24 # 你想要固定的 IP 地址及子网掩码
routes:
- to: default
via: 192.168.31.1 # 你的网关地址(通常是路由器 IP)
nameservers:
addresses: [8.8.8.8, 114.114.114.114] # DNS 服务器

应用配置:sudo netplan apply


附录:关于 WSL 的迁移参考

(注:虽然本案例最终放弃了 WSL,但以下步骤可用于Windows配置wsl运行Ubuntu)

基础安装与配置

wsl以及Ubuntu的安装

打开 PowerShell(右键点击开始菜单 -> 选择“Windows PowerShell (管理员)” 或 “终端 (管理员)”),输入以下命令并回车:

1
wsl --install -d Ubuntu-22.04
  • 注意:如果这是第一次安装 WSL,安装完成后可能需要重启电脑。重启后,Ubuntu 终端会自动弹出来继续安装。

设置用户名以及密码

等待 Ubuntu 终端提示你输入新的 UNIX 用户名(Enter new UNIX username:)。

  • 输入一个你喜欢的全英文小写用户名(例如 xiaoming),回车。
  • 输入密码(输入时屏幕不会显示任何字符,这是正常的保护机制),回车确认。
  • 设置完成后,直接关闭这个 Ubuntu 的黑色终端窗口。

关闭wsl

回到 PowerShell,输入以下命令确保 WSL 完全关闭,防止文件被占用:

PowerShell

1
wsl --shutdown

将Ubuntu迁移到D盘

导出 Ubuntu 系统

我们将刚刚装好的干净系统打包成一个文件放到 D 盘。在 PowerShell 中输入:

1
wsl --export Ubuntu-24.04 D:\env\linux\ubuntu-24.04.tar

注销 C 盘的 Ubuntu

这一步会将 Ubuntu 从 C 盘彻底删除,释放 C 盘空间:

1
wsl --unregister Ubuntu-24.04
  • 你可以通过 wsl -l -v 命令检查,此时应该没有任何发行版了。

在 D 盘创建存放目录并导入

首先,在 D 盘建一个你喜欢的文件夹用来存放 WSL 的虚拟硬盘(例如 D:\WSL\Ubuntu):

1
mkdir D:\WSL\Ubuntu

然后,将刚才导出的 tar 文件导入到这个新目录中,并重新命名为 Ubuntu-22.04

1
wsl --import Ubuntu-24.04 D:\env\linux\Ubuntu24 D:\env\linux\ubuntu-24.04.tar
  • 完成后,可以去 D:\WSL\Ubuntu 文件夹下查看,里面会有一个 ext4.vhdx 文件,这就是以后的 Ubuntu 系统盘了

恢复默认登录用户

由于通过导入方式安装的 WSL 默认会以 root(超级管理员)身份登录,我们需要把它改回你之前设置的普通用户。

进入 Ubuntu 修改配置文件

在 PowerShell 中输入以下命令进入 Ubuntu:

1
wsl -d Ubuntu-24.04

你会发现命令提示符变成了 root@你的电脑名。输入以下命令(注意将 你的用户名 替换为你在之前步骤中设置的英文小写用户名):

1
echo -e "[user]\ndefault=你的用户名" > /etc/wsl.conf

退出并重启 WSL

输入 exit 退出 Ubuntu,回到 PowerShell。然后再次彻底关闭 WSL 以使配置生效:

1
wsl --shutdown