游戏开发者通常在运行游戏逻辑时会将游戏渲染到屏幕的同一台设备上来运行虚幻引擎应用,多人联网游戏可能会在应用程序的多个实例之间分发部分游戏逻辑,但每个单独的实例仍然会为自己的玩家在本地渲染游戏。即使是使用 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 服务器。

  1. Pixel Streaming Plugin -该插件在虚幻引擎中运行。它使用视频压缩对每个渲染帧的最终结果进行编码,将这些视频帧与游戏音频一起打包成媒体流,并通过直接点对点连接将该流发送到一个或多个连接的浏览器。
  2. 信令和 Web 服务器 -信令和 Web 服务器负责协商浏览器和像素流插件之间的连接,并为浏览器提供播放媒体流的 HTML 和 JavaScript 环境。

像素推流连接方法

  1. 当启动所有像素流送插件时,在虚幻引擎中运行的像素流送插件首先会建立与信令和网络服务器的连接。
  2. 客户端连接到信号服务器,信号服务器为它提供一个 HTML 页面,其中包含播放器小部件和用 JavaScript 编写的控制代码。
  3. 当用户启动流时,信令服务器会协商在客户端浏览器和虚幻引擎应用程序之间建立直接连接。为了使此连接正常工作,浏览器和虚幻引擎应用程序需要知道彼此的 IP 地址。如果两者都在同一网络上运行,则它们通常在各自的 IP 地址上直接相互可见。但是,在两个端点之间运行的网络地址转换 (NAT) 服务可能会更改任何一方的外部可见 IP 地址。解决这个问题通常涉及使用 STUN 或 TURN 服务器,它告诉每个组件其外部可见的 IP 地址是什么。 一旦在客户端和虚幻引擎应用程序之间建立连接,像素流式处理插件就会开始将媒体直接流式传输到浏览器。来自客户端的输入由播放器页面的 JavaScript 环境直接发送回虚幻引擎应用程序。
  4. 即使在媒体流开始播放后,信令和 Web 服务器仍会保持与浏览器和虚幻引擎应用程序的连接,因此它能够处理浏览器发起的断开连接。

UE像素推流的局限性

首先像素流官方提供的并不是产品,不能拿来直接使用。其次它只适用于UE模型,再者它在实际中对于不同浏览器的兼容性不太好。而3DCAT实时云渲染技术,不仅仅是支持3D引擎的模型,对于一些非3D引擎比如一些大型的家装软件、PS、BIM等也能支持。而且还有很多针对运营的负载均衡、调度等信息,更加成熟更加产品化,做到拿来即可使用,可支持软件部署,也支持SDK对接。

3DCAT实时云渲染优势

首先,3DCAT实时云渲染不会限制任何的访问引擎,超过支持10多种国内外三维制作引擎输出的标准可执行文件,不挑引擎是最大的优势。其次3DCAT已经用于多个商业生产项目中,并不断的壮大与完善功能,提供最稳定的实时云渲染服务。此外,3DCAT所有模块均支持定制化开发,3DCAT还有强大的公有云服务,遍布全国的边缘节点,拥有超3万台的节点,而不是本地化单机部署能够比拟的。

本文《UE像素流送是什么?像素流推流原理介绍》内容由3DCAT实时渲染云解决方案提供商整理发布,如需转载,请注明出处及链接。

 

UE像素流送是什么?像素流推流原理介绍的更多相关文章

  1. 【小项目】微信定时推送天气预报Github项目使用及原理介绍-包含cron、天气预报、常用api

    一.资料链接 1.github地址 https://github.com/qq1534774766/wx-push 2.教程地址 https://blog.csdn.net/qq15347747/ar ...

  2. 检验实时3D像素流送平台好坏的七个标准!(上)

    将交互式3D像素流送技术作为有价值的企业工具之后,就该寻找像素流送服务供应商了.问题在于交互式3D像素流送是一种新兴技术,因此很难知道要问供应商的正确问题.在开始使用之前,这里有7个问题,您应该从候选 ...

  3. UE4.27 新版本像素流送插件配置

    UE4.27 像素流送新版插件部署命令 以下内容参考自UE5官方文档:https://docs.unrealengine.com/5.0/en-US/unreal-engine-pixel-strea ...

  4. 海康威视实时预览回调PS流用EasyRTMP向RTMP服务器推流中视频数据处理的代码

    在上一篇方案<EasyRTMP结合海康HCNetSDK获取海康摄像机H.264实时流并转化成为RTMP直播推流(附源码)>我们介绍了将海康安防摄像机进行互联网直播的整体方案流程,其中有一个 ...

  5. EasyRTMP结合海康HCNetSDK获取海康摄像机H.264实时流并转化成为RTMP直播推流(附源码)

    最近一家深耕于南方电网的科技公司同事找到我们,咨询关于调用海康HCNetSDK取流,并进行互联网转化的方案,经过反复的沟通以及自身在EasyDSS和EasyNVR方面的经验,我们推荐了海康HCNetS ...

  6. 今天谈谈流,什么是IO流?

    无标题 (5) :first-child { margin-top: 0; } blockquote > :last-child { margin-bottom: 0; } img { bord ...

  7. .net学习之集合、foreach原理、Hashtable、Path类、File类、Directory类、文件流FileStream类、压缩流GZipStream、拷贝大文件、序列化和反序列化

    1.集合(1)ArrayList内部存储数据的是一个object数组,创建这个类的对象的时候,这个对象里的数组的长度为0(2)调用Add方法加元素的时候,如果第一次增加元神,就会将数组的长度变为4往里 ...

  8. java 笔记(4) —— java I/O 流、字节流、字符流

    Java中使用流来处理程序的输入和输出操作,流是一个抽象的概念,封装了程序数据于输入输出设备交换的底层细节.JavaIO中又将流分为字节流和字符流,字节流主要用于处理诸如图像,音频视频等二进制格式数据 ...

  9. Java API —— IO流(数据操作流 & 内存操作流 & 打印流 & 标准输入输出流 & 随机访问流 & 合并流 & 序列化流 & Properties & NIO)

    1.操作基本数据类型的流     1) 操作基本数据类型 · DataInputStream:数据输入流允许应用程序以与机器无关方式从底层输入流中读取基本 Java 数据类型.应用程序可以使用数据输出 ...

  10. bzoj 3130 [Sdoi2013]费用流(二分,最大流)

    Description Alice和Bob在图论课程上学习了最大流和最小费用最大流的相关知识.    最大流问题:给定一张有向图表示运输网络,一个源点S和一个汇点T,每条边都有最大流量.一个合法的网络 ...

随机推荐

  1. RabbitMQ 使用细节 → 优先级队列与ACK超时

    开心一刻 今天坐在太阳下刷着手机 老妈走过来问我:这么好的天气,怎么没出去玩 我:我要是有钱,你都看不见我的影子 老妈:你就不知道带个碗,别要边玩? 我:...... 优先级队列 说到队列,相信大家一 ...

  2. JS script脚本async和defer的区别

    壹 ❀ 引 我在 google recaptcha 谷歌人机身份验证使用教程 一文中有引用这样一段外部资源代码,如下: <script src="https://www.google. ...

  3. Java图片加水印

    采用Java自带的Image IO 废话不多说,上菜 1.  文字水印 1 import sun.font.FontDesignMetrics; 2 3 import javax.imageio.Im ...

  4. 开源神器:自动生成随机 mock 数据测试对象

    测试的痛点 大家好,我是老马. 每一位开发者大部分工作都是写代码.测试代码.修BUG. 我们有很多测试代码,总是花费大量的实践去构建一个对象. 于是就在想,能不能自动填充一个对象呢? 于是去 gith ...

  5. Java设计模式-状态模式State

    介绍 状态模式(State Pattern):它主要用来解决对象在多种状态转换时,需要对外输出不同的行为的问题.状态和行为是一一对应的,状态之间可以相互转换. 当一个对象的内在状态改变时,允许改变其行 ...

  6. String--getline()

    #include <string> #include <sstream> #include <iostream> int main() { std::wstring ...

  7. kafka学习笔记02-kafka消息存储

    kafka消息存储 broker.topic.partition kafka 的数据分布是一个 3 级结构,依次为 broker.topic.partition. 也可以理解为数据库的分库分表,然后还 ...

  8. pinia

    Pinia学习 Vue3中 使用 官网:https://pinia.web3doc.top/introduction.html 安装 yarn add pinia # 或者使用 npm npm ins ...

  9. 产品分享:Qt数学函数公式学科工具,当前版本v1.0.0

    ​若该文为原创文章,转载请注明原文出处本文章博客地址:https://hpzwl.blog.csdn.net/article/details/121194536红胖子(红模仿)的博文大全:开发技术集合 ...

  10. 01-Redis系列之-Redis介绍安装配置

    Redis初识 Redis主要内容 1 redis介绍,特性,安装和配置,典型应用场景 2 单线程架构,5大数据类型操作,通用指令和高级API的使用 3 高级用法(慢查询,管道,shu发布订阅,bit ...