UE像素流送是什么?像素流推流原理介绍
游戏开发者通常在运行游戏逻辑时会将游戏渲染到屏幕的同一台设备上来运行虚幻引擎应用,多人联网游戏可能会在应用程序的多个实例之间分发部分游戏逻辑,但每个单独的实例仍然会为自己的玩家在本地渲染游戏。即使是使用 HTML5 部署选项创建可以在 Web 浏览器中运行的项目版本,游戏逻辑和画面呈现仍然在每个用户的 Web 浏览器中本地运行。
然而,使用像素流送,可以在用户看不到的计算机上远程运行UE开发的应用。虚幻引擎使用该计算机可用的资源(CPU、GPU、内存等)来运行游戏逻辑并渲染每一帧。它不断地将此渲染输出编码为媒体流,该媒体流通过轻量级 Web 服务堆栈。然后,用户可以在其他计算机和移动设备上运行的标准 Web 浏览器中查看该广播流。

用户的结果就像从 YouTube 或 Netflix 等服务观看视频流一样,但有两点区别
- 流媒体播放的不是预先录制的视频片段,而是虚幻引擎实时生成的渲染帧和音频。
- 用户可以从他们的浏览器控制交互,将键盘、鼠标和触摸事件以及从播放器网页发出的自定义事件发送回虚幻引擎。
UE像素流送的优势
- 像素流送使移动设备和轻型 Web 浏览器能够显示比其他方式更好的图形质量。它们可以显示高分辨率的复杂场景,通过像素流送,用户可以运行原本只有在具有强大 GPU 的本机桌面应用程序中渲染时才有可能使用的渲染功能。
- 用户不需要提前下载大型可执行文件或内容文件,也不需要安装任何东西。用户唯一需要下载的是播放的媒体流。
- 可以支持多个平台,而无需创建和分发多个单独的包。只需为 Windows 或 Linux 打包应用程序一次,人们可以使用任何平台来体验UE内容。用户可以在任何支持 WebRTC 连接模型的现代浏览器中查看流,包括桌面、iOS 和 Android 平台上浏览器。
- Pixel Streaming 系统包含最少数量的组件,任何人都可以相对容易地在本地网络中进行设置。但是,对于具有部署 Web 服务经验的团队来说,它足够强大,可以用作创建自定义云托管平台的基础。
- Pixel Streaming 使用 WebRTC 点对点通信框架来尽可能降低用户和虚幻引擎应用程序之间的延迟。
下图简单总结了像素流送插件

像素流送技术框架
像素流送技术的框架包含两部分:像素流送插件Pixel Streaming、信令和 web 服务器。
- Pixel Streaming Plugin -该插件在虚幻引擎中运行。它使用视频压缩对每个渲染帧的最终结果进行编码,将这些视频帧与游戏音频一起打包成媒体流,并通过直接点对点连接将该流发送到一个或多个连接的浏览器。
- 信令和 Web 服务器 -信令和 Web 服务器负责协商浏览器和像素流插件之间的连接,并为浏览器提供播放媒体流的 HTML 和 JavaScript 环境。
像素推流连接方法
- 当启动所有像素流送插件时,在虚幻引擎中运行的像素流送插件首先会建立与信令和网络服务器的连接。
- 客户端连接到信号服务器,信号服务器为它提供一个 HTML 页面,其中包含播放器小部件和用 JavaScript 编写的控制代码。
- 当用户启动流时,信令服务器会协商在客户端浏览器和虚幻引擎应用程序之间建立直接连接。为了使此连接正常工作,浏览器和虚幻引擎应用程序需要知道彼此的 IP 地址。如果两者都在同一网络上运行,则它们通常在各自的 IP 地址上直接相互可见。但是,在两个端点之间运行的网络地址转换 (NAT) 服务可能会更改任何一方的外部可见 IP 地址。解决这个问题通常涉及使用 STUN 或 TURN 服务器,它告诉每个组件其外部可见的 IP 地址是什么。 一旦在客户端和虚幻引擎应用程序之间建立连接,像素流式处理插件就会开始将媒体直接流式传输到浏览器。来自客户端的输入由播放器页面的 JavaScript 环境直接发送回虚幻引擎应用程序。
- 即使在媒体流开始播放后,信令和 Web 服务器仍会保持与浏览器和虚幻引擎应用程序的连接,因此它能够处理浏览器发起的断开连接。
UE像素推流的局限性
首先像素流官方提供的并不是产品,不能拿来直接使用。其次它只适用于UE模型,再者它在实际中对于不同浏览器的兼容性不太好。而3DCAT实时云渲染技术,不仅仅是支持3D引擎的模型,对于一些非3D引擎比如一些大型的家装软件、PS、BIM等也能支持。而且还有很多针对运营的负载均衡、调度等信息,更加成熟更加产品化,做到拿来即可使用,可支持软件部署,也支持SDK对接。
3DCAT实时云渲染优势
首先,3DCAT实时云渲染不会限制任何的访问引擎,超过支持10多种国内外三维制作引擎输出的标准可执行文件,不挑引擎是最大的优势。其次3DCAT已经用于多个商业生产项目中,并不断的壮大与完善功能,提供最稳定的实时云渲染服务。此外,3DCAT所有模块均支持定制化开发,3DCAT还有强大的公有云服务,遍布全国的边缘节点,拥有超3万台的节点,而不是本地化单机部署能够比拟的。
本文《UE像素流送是什么?像素流推流原理介绍》内容由3DCAT实时渲染云解决方案提供商整理发布,如需转载,请注明出处及链接。
UE像素流送是什么?像素流推流原理介绍的更多相关文章
- 【小项目】微信定时推送天气预报Github项目使用及原理介绍-包含cron、天气预报、常用api
一.资料链接 1.github地址 https://github.com/qq1534774766/wx-push 2.教程地址 https://blog.csdn.net/qq15347747/ar ...
- 检验实时3D像素流送平台好坏的七个标准!(上)
将交互式3D像素流送技术作为有价值的企业工具之后,就该寻找像素流送服务供应商了.问题在于交互式3D像素流送是一种新兴技术,因此很难知道要问供应商的正确问题.在开始使用之前,这里有7个问题,您应该从候选 ...
- UE4.27 新版本像素流送插件配置
UE4.27 像素流送新版插件部署命令 以下内容参考自UE5官方文档:https://docs.unrealengine.com/5.0/en-US/unreal-engine-pixel-strea ...
- 海康威视实时预览回调PS流用EasyRTMP向RTMP服务器推流中视频数据处理的代码
在上一篇方案<EasyRTMP结合海康HCNetSDK获取海康摄像机H.264实时流并转化成为RTMP直播推流(附源码)>我们介绍了将海康安防摄像机进行互联网直播的整体方案流程,其中有一个 ...
- EasyRTMP结合海康HCNetSDK获取海康摄像机H.264实时流并转化成为RTMP直播推流(附源码)
最近一家深耕于南方电网的科技公司同事找到我们,咨询关于调用海康HCNetSDK取流,并进行互联网转化的方案,经过反复的沟通以及自身在EasyDSS和EasyNVR方面的经验,我们推荐了海康HCNetS ...
- 今天谈谈流,什么是IO流?
无标题 (5) :first-child { margin-top: 0; } blockquote > :last-child { margin-bottom: 0; } img { bord ...
- .net学习之集合、foreach原理、Hashtable、Path类、File类、Directory类、文件流FileStream类、压缩流GZipStream、拷贝大文件、序列化和反序列化
1.集合(1)ArrayList内部存储数据的是一个object数组,创建这个类的对象的时候,这个对象里的数组的长度为0(2)调用Add方法加元素的时候,如果第一次增加元神,就会将数组的长度变为4往里 ...
- java 笔记(4) —— java I/O 流、字节流、字符流
Java中使用流来处理程序的输入和输出操作,流是一个抽象的概念,封装了程序数据于输入输出设备交换的底层细节.JavaIO中又将流分为字节流和字符流,字节流主要用于处理诸如图像,音频视频等二进制格式数据 ...
- Java API —— IO流(数据操作流 & 内存操作流 & 打印流 & 标准输入输出流 & 随机访问流 & 合并流 & 序列化流 & Properties & NIO)
1.操作基本数据类型的流 1) 操作基本数据类型 · DataInputStream:数据输入流允许应用程序以与机器无关方式从底层输入流中读取基本 Java 数据类型.应用程序可以使用数据输出 ...
- bzoj 3130 [Sdoi2013]费用流(二分,最大流)
Description Alice和Bob在图论课程上学习了最大流和最小费用最大流的相关知识. 最大流问题:给定一张有向图表示运输网络,一个源点S和一个汇点T,每条边都有最大流量.一个合法的网络 ...
随机推荐
- 分布式图算法Pregel
最近看了Google的Pregel论文,图算法有一些经典且不可被替代的应用场景,如社交网络,相互引用等.但是在单个结点上的运算量往往过少,注重的是消息传播和逻辑处理,而不是单纯的大规模计算.虽然已经过 ...
- JavaFX的目录结构, 项目创建和发布, 基于JDK11+JavaFX SDK17
JDK 和 JavaFX SDK 需要使用JDK11, 推荐使用 https://adoptium.net/releases.html JDK11 JavaFX 11 不再是JDK的一部分, 需要单独 ...
- CF1398C Good Subarrays(写给我们萌新团体)
Good Subarrays 传送门: Good Subarrays - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 思路 暴力!!!!! 一如既往的暴力!!! 复杂度O(n^2) ...
- gitlab/github 设置 SSH
最近项目要部署到另一台机器上,故要重新 git clone 一下 一开始只是简单的设置 config 里的 user.name 和 user.email,以为就可以 clone(邮箱账户拥有项目的权限 ...
- webrtc 渲染音频时遇到的问题
有用户反馈连麦时,直播间会有电流声,后面排查发现是 webrtc 内部播放器渲染音频时,用户的播放设备不支持 48000hz 采样率(我们传输的音频采样率都是 48000hz),导致音频数据受损而出现 ...
- C++ 多线程的错误和如何避免(8)
不要重复获取同一个锁 问题:在获得一个锁并且没有释放该锁的前提下,再次尝试获取该锁会报错. 比如, #include <iostream> #include <thread> ...
- [Android 逆向]Xposed 破解 切水果大战原版.apk
代码 public class Main implements IXposedHookLoadPackage { boolean flag = false; @Override public void ...
- 启动HDFS伪分布式环境时报权限错误
问题描述 操作系统:Ubuntu18.04 LTS HDFS版本:hadoop-3.2.3 普通用户登录,参照官方文档在单机上安装伪分布式环境时,启动HDFS报权限错误. 具体报错信息如下: $ ./ ...
- 单继承,多继承,菱形继承---day21
1.单继承 # ### 继承:一个类除了自身所有用的属性方法之外,还获取了另外一个类的成员属性和方法 ''' 一个类继承另外一个类,那么该类就是子类(衍生类),被继承的这个类就叫做父类(基类,超类) ...
- stat模块
# stat模块定义了常数和函数,并用这些来解释os.stat().os.fstat()和os.lstat()的结果(如果这些在该平台上存在的话). stat.S_ISREG(mode) # 判断mo ...