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二进制协议格式:\
键盘映射定义:\
**整体架构
**
沉浸式鼠标API是一个黑科技,当指定一个dom元素进入PointerLock之后,鼠标隐藏掉,同时鼠标的运动感知不到元素的边界,即在任意方向上可以无线运动,这种使用体验很符合3D人物的操作习惯。
目前主流的会话凭证是利用localStorage+Authoriation头部实现JWT的存储,很遗憾,这3样东西都是文本格式的,如果想要存储为二进制格式,需要另3样技术:CachesAPI、http2.0、二进制token格式。