研究一波虚幻的像素流协议

153 阅读2分钟

PixelStreamer魔改自虚幻引擎的“SignallingWebServer”:

Epic Games\UE_4.26\Engine\Source\Programs\PixelStreaming\WebServers\SignallingWebServer

即信令网页服务器,删除了其中90%以上的无用代码和库,解决了许多bug,成就了一个超轻量,上手即用的像素流前端库和信令服务器。\

先复习一下WebRTC技术,相关内容推荐:\

类型即时性数据量场景
通讯http网页、文件传输、Email
即时通讯聊天室、电话、RTS网络游戏
即时音视频通讯视频通讯、远程桌面、3D像素流

WebRTC主要是为了解决“即时音视频通讯”的需求的,这类需求要求极低的延迟,单位时间内的数据量又很大,所以非常挑战压缩算法。\

**像素流协议
**

PixelStreamer最核心的基础组件是虚幻引擎像素流插件定义的“像素流协议”,其中分2个部分,分别是基于DataChannel的二进制消息格式,和基于WebSocket和信令服务器之间的JSON格式。\

DataChannel二进制协议格式:\

github.com/EpicGames/U…

键盘映射定义:\

github.com/EpicGames/U…

**整体架构
**

沉浸式鼠标API是一个黑科技,当指定一个dom元素进入PointerLock之后,鼠标隐藏掉,同时鼠标的运动感知不到元素的边界,即在任意方向上可以无线运动,这种使用体验很符合3D人物的操作习惯。

目前主流的会话凭证是利用localStorage+Authoriation头部实现JWT的存储,很遗憾,这3样东西都是文本格式的,如果想要存储为二进制格式,需要另3样技术:CachesAPI、http2.0、二进制token格式。

项目地址:github.com/JinHengyu/P…