前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >研究一波虚幻的像素流协议

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

作者头像
Jean
发布2021-02-26 15:29:00
9650
发布2021-02-26 15:29:00
举报
文章被收录于专栏:Web行业观察Web行业观察

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二进制协议格式:

https://github.com/EpicGames/UnrealEngine/blob/release/Engine/Plugins/Media/PixelStreaming/Source/PixelStreaming/Private/ProtocolDefs.h

键盘映射定义:

https://github.com/EpicGames/UnrealEngine/blob/release/Engine/Plugins/Media/PixelStreaming/Source/PixelStreaming/Private/JavaScriptKeyCodes.inl

整体架构

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

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

项目地址:https://github.com/JinHengyu/PixelStreamer

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-01-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 WebHub 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
即时通信 IM
即时通信 IM(Instant Messaging)基于腾讯二十余年的 IM 技术积累,支持Android、iOS、Mac、Windows、Web、H5、小程序平台且跨终端互通,低代码 UI 组件助您30分钟集成单聊、群聊、关系链、消息漫游、群组管理、资料管理、直播弹幕和内容审核等能力。适用于直播互动、电商带货、客服咨询、社交沟通、在线课程、企业办公、互动游戏、医疗健康等场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档