UE的像素流送Pixel Streaming通过WebRTC协议将渲染后的画面(像素数据)实时编码为视频流,传输到客户端(如浏览器)。客户端仅接收视频流并显示,所有计算和渲染都在服务器端完成。传输的是压缩后的视频流(H.264/H.265编码)。客户端的输入(如鼠标、键盘)通过WebRTC回传到服务器,服务器处理后再更新画面。
像素流的技术架构图如下。

需要将项目作为打包应用程序运行时、或使用 Standalone Game 选项在虚幻引擎中启动时才能使用像素流送插件。总流程至少包括如下四步:

浏览器对WebRTC传输数据的限制
不同浏览器对WebRTC数据传输字节长度的限制存在一定差异。在大多数情况下,单个 DataChannel 消息的最大长度通常限制在64KB左右,但不同浏览器的具体表现有所不同。
Chrome浏览器在早期版本中,单个消息的最大长度为64KB,Firefox浏览器在WebRTC数据传输时,也大致遵循类似的限制,但在某些特殊配置或版本迭代中,其限制可能会有所变化。
WebRTC数据传输字节长度限制对UE开发的三维场景与二维业务系统的通信,会产生影响。
对应用场景的限制
字节长度限制会限制一些需要大流量数据传输的应用场景的使用。像应用内需要截屏操作,由于截屏后转成base64之后数据量较大,可能无法在WebRTC的字节长度限制下一次性传输。
对开发难度的影响
为了应对字节长度限制,开发者需要编写复杂的代码来实现数据的分割、传输和重组。这增加了开发的难度和工作量,同时也增加了代码出错的概率。开发者需要编写专门的算法来确保数据分割的合理性和重组的准确性。
像素流默认WebRTC协议会导致UE三维应用与前端网页的数据通信受限,导致推流效果不佳。加上UE5.5版本后像素流插件从默认版本升级到2.0版本,带来一系列迁移改造的调整,会对已交付项目和时间跨度比较大的三维可视化场景造成影响。
实时云渲染打破像素流数据传输限制
在数字孪生可视化场景中,UE开发的高精度大场景程序,通常需要与前端网页通信实现数据的传递,并且经过Web化后,更需要与已有业务系统进行对接。像素流提供了Web化的一种技术实现方式,但是在实际项目交付过程中,存在数据通信不畅、与系统对接和二次开发能力有限等诸多限制。商业化实时云渲染产品,将行业通用需求封装成功能组件,供开发者调用。
数据通道功能组件是用来实现客户端与应用之间的双向通信的,在数字孪生、展览展示、元宇宙等场景中应用非常广泛。图示为绿色双向箭头,代表在我们云端与客户端之间的虚拟通道,为三维应用建立快速通道。在这里,我们云端处理高帧率、高清晰度的三维应用,客户端处理业务流程及其他渲染。

自LarkXR3.3.3.5版本开始引入分包发送机制,并与PaaS平台深度集成,优化了数据传输效率,真正做到UE三维应用与二维页面之间发送消息长度不设限,突破WebRTC默认的64KB限制。

本文已首发于官网:www.pingxingyun.com/