中EN
概念页

像素流送

Pixel Streaming

更新于 2026-10-11 约 6 分钟UE5Pixel StreamingWebRTC云渲染信令服务器

像素流送 (Pixel Streaming) 让 UE 应用运行在桌面 PC 或云服务器上,把渲染好的画面和音频编码成媒体流,通过 WebRTC 点对点发送到浏览器和移动设备;用户可以在网页里用键盘、鼠标、触摸、手柄操作应用。系统由引擎内的 Pixel Streaming 插件和一个信令与 Web 服务器 (Signalling and Web Server) 组成,跨网络连接时需要 STUN/TURN。

原理

像素流送的工作方式类似在线视频流媒体,区别是用户可以通过流媒体界面与应用交互。UE 可以在桌面 PC 或云服务器上运行打包好的应用,旁边配一小组 Web 服务;用户用桌面或移动设备上的浏览器连接前端,接收远端渲染的画面和音频,并通过前端发送输入:键盘、鼠标、触摸、手柄和 XR,以及网页上自定义的 HTML5 界面。(Pixel Streaming in Unreal Engine)

UE 应用持续把渲染输出编码成媒体流,经过一组轻量的 Web 服务;任何支持 WebRTC 的现代浏览器都能观看,包括桌面、iOS 和 Android 上的 Chrome 与 Firefox。它使用 WebRTC 点对点通信框架,以获得用户与 UE 应用之间尽可能低的延迟。(Overview of Pixel Streaming in Unreal Engine)

组件职责(官方)
Pixel Streaming 插件运行在 UE 内:对每帧渲染结果做视频压缩,与游戏音频一起打包成媒体流,通过点对点连接发给一个或多个浏览器
信令与 Web 服务器协商浏览器与插件之间的连接,并向浏览器提供播放媒体流的 HTML 和 JavaScript

连接过程

下图按官方描述整理了一次连接:

sequenceDiagram
  participant UE as UE 应用(插件)
  participant SS as 信令与 Web 服务器
  participant B as 浏览器
  UE->>SS: 启动后先建立连接
  B->>SS: 打开网页,请求连接
  SS-->>B: 下发 HTML/JS 播放器
  SS->>UE: 交换连接协商信息
  Note over UE,B: 跨网络时借助 STUN/TURN 获取外部可见地址
  UE-->>B: WebRTC 点对点媒体流(画面+音频)
  B-->>UE: 输入事件

媒体流开始后,信令服务器仍保持与浏览器和 UE 应用的连接,以便处理浏览器发起的断开。(Overview of Pixel Streaming in Unreal Engine)

上手要点

  • 插件只能在 Windows、Linux 或 Mac 上、配合特定类型的 GPU 编码视频。
  • 插件只在打包后的应用或从编辑器以 Standalone Game 启动时工作。
  • 在 Plugins 的 Graphics 分类中启用 Pixel Streaming 或 Pixel Streaming 2 插件。
  • 启动参数加 -PixelStreamingURL=ws://127.0.0.1:8888 指向信令服务器;建议再加 -RenderOffScreen 以无窗口方式运行,避免窗口被最小化后输入流失效。
  • 需要触摸操控角色时,开启 Engine > Input 下的 Always Show Touch Interface。
  • 从其他网络连接时,通常要给信令服务器配置 STUN/TURN(通过 peerConnectionOptions)。(Getting Started with Pixel Streaming in Unreal Engine)

打包流程见 烘焙、打包与 Zen 加载器。

取舍

优点代价
客户端只需浏览器,移动端也能看到高端画质每个流都占用一份服务器端渲染和编码资源(据架构归纳)
WebRTC 点对点,延迟低跨网络需要 STUN/TURN,部署更复杂
支持多种输入和自定义网页 UI只能用打包应用或 Standalone 启动

官方另有在编辑器内使用像素流送的功能(实验性),可以远程操作虚幻编辑器。

流调优:画质、延迟、稳定性

官方《Stream Tuning Guide》(5.8):默认配置假设部署在公网、用户网络条件各异,因此在画质、延迟和稳定性之间取平衡。平衡主要由 WebRTC 完成:它反复估算可用带宽,算出合适的码率交给视频编码器作为上限,网络差时画面就会出现明显的压缩块。(Stream Tuning Guide)

画质最终由编码器的量化参数 (QP) 决定,各编解码器的 QP 范围不同:H264 为 0–51,AV1 为 0–255,VP8/VP9 为 0–63。QP 越大压缩越狠、画质越差。5.5 起,旧的 QP 参数(数值越低画质越高)被新的 Quality 参数取代(1–100,越高越好),它会按所选编解码器自动换算到对应的 QP 范围。(Stream Tuning Guide)

目标手段(官方)代价
保证画质-PixelStreamingEncoderMinQuality=N(通常只需调这个)/ MaxQuality码率超过网络能力或 -PixelStreamingWebRTCMaxBitrate 时会丢帧,帧率下降
最低延迟用硬件 H.264 编码器(VP8/VP9 软件编码器延迟更高);-PixelStreamingWebRTCDisableAudioSync;不需要音频时关闭收发;去掉运动模糊等增加编码复杂度的效果音画可能不同步;最大的收益其实来自地理距离和网络质量
稳定性-PixelStreaming.Encoder.KeyframeInterval 控制关键帧间隔;NVIDIA 上的帧内刷新(-NVENCIntraRefreshPeriodFrames/CountFrames,Pixel Streaming 2 已移除);放开 Quality 范围或降低分辨率关键帧更占带宽,如果丢包本来就是带宽饱和造成的,多发关键帧反而没用

WebRTC 还会动态增大抖动缓冲 (jitter buffer) 来对抗网络延迟和重传,代价是延迟增加;这个缓冲不能直接控制。(Stream Tuning Guide)(Pixel Streaming in Unreal Engine)

  1. Pixel Streaming in Unreal Engine UE 5.8 文档
  2. Overview of Pixel Streaming in Unreal Engine UE 5.8 文档
  3. Getting Started with Pixel Streaming in Unreal Engine UE 5.8 文档
  4. Stream Tuning Guide UE 5.8 文档

相关页面

游戏开发 · UE5烘焙、打包与 Zen 加载器Cooking, Packaging & Zen Loader打包是一组构建操作:编译 (Build) → 烘焙 (Cook,把资产转成目标平台格式) → 暂存 (Stage) → 打包 (Package) → 可选的部署 (Deploy)。UE5 的运行时加载器 Zen Loader 会在暂存阶段离线算好包与对象的依赖图,并把数据装进 .utoc/.ucas 容器(IoStore),由 I/O 分发器以很低的 CPU 开销定位数据块;.pak 只用于不常访问的零散文件。游戏开发 · UE5UE5 渲染架构UE5 Rendering ArchitectureUE5 的渲染器是独立的 Renderer 模块,在渲染线程 (Rendering Thread) 上以「场景代理」镜像游戏线程的组件状态,每帧按固定顺序执行深度预通道、G-buffer 基础通道、光照、雾、半透明和后处理。现代渲染代码用渲染依赖图 (Render Dependency Graph, RDG) 声明通道与资源,由 RDG 自动排屏障、复用瞬态内存、并行录制;最终命令经 RHI 线程翻译成 D3D12/Vulkan 等图形 API 调用。默认走延迟着色 (Deferred Shading),也可切换前向着色 (Forward Shading)。游戏开发 · UE5移动端渲染优化Mobile Rendering Optimization移动端优化的核心是认清设备的 CPU/GPU 速度、线程、带宽和内存,然后控制最主要的几项开销:Draw Call(官方称其为当前导致图形性能低下的最大因素,在 Galaxy Tab S6 上建议约 700 个,低端设备少于 500 个)、材质复杂度和 overdraw。合并网格和材质(Substance 把多种材质画进同一张纹理,用顶点色作遮罩)是减少 Draw Call 最直接的办法。

输入关键词开始搜索

滚轮或双指缩放 · 拖动平移 · 双击放大 / 还原