实时云渲染——比像素流送节省80%精力的UE程序推流技术
UE5引擎除了适合开发3A游戏,同样适用于开发大场景高精度的数字孪生可视化场景,自带的Nanite 虚拟微多边形几何体技术、Lumen 全动态全局光照技术、高度可扩展的架构、强大的地形和植被系统以及高效的流媒体技术,使UE5在数字孪生领域的技术占有率遥遥领先。为了实现UE程序BS化、与业务系统对接的需求,需要在UE5程序中集成像素流(PixelStreaming)服务,包括安装插件、打包项目、运行服务以及如何配置多客户端连接等,需要开发者从引擎层面进行修改。实时云渲染(Real-time Rendering)技术作为通用引擎的流送技术,比像素流推出还要早几年。本文对二者之间的技术实现作以初步对比,主要从如何使UE程序实现网页推流这一目标的角度,来进行拆解。
如何使用像素流服务
UE的像素流送Pixel Streaming通过WebRTC协议将渲染后的画面(像素数据)实时编码为视频流,传输到客户端(如浏览器)。客户端仅接收视频流并显示,所有计算和渲染都在服务器端完成。传输的是压缩后的视频流(H.264/H.265编码)。客户端的输入(如鼠标、键盘)通过WebRTC回传到服务器,服务器处理后再更新画面。
像素流的技术架构图如下。
需要将项目作为打包应用程序运行时、或使用 Standalone Game 选项在虚幻引擎中启动时才能使用像素流送插件。总流程至少包括如下四步:
1. 集成像素流插件
在UE引擎中找到像素流送(Pixel Streaming)
插件并勾选 启用(Enabled)
框,重启项目修改应用。打包Windows项目,-PixelStreamingIP=localhost 设置换成需要访问的公网IP。
2.配置信令服务器
为了使UE程序可以通过网络访问,需要开启网络服务,与客户端浏览器建立点对点的链接。注意,如果是公网使用,注意要有固定的外网IP,来支持外部人员的访问。可以使用公有云的CPU服务器作为信令服务器,或者考虑一些低成本的第三方方案,如NAT代理转发方案等。
3.使用远程工具连接服务器
采用Windows自带的远程工具,启动后将信令服务器复制,生成的目录在\Windows\项目名\Samples
下,运行WebServers\SignallingWebServer\platform_scripts\cmd
目录的setup.bat
文件。安装好后确认服务正常运行,打开config.json文件配置信令,蒋“Publiclp”:"localhost” 改为公网IP。
4.启动信令服务器
按照虚幻引擎官网文档指示,运行 SignallingWebServer\platform_scripts\cmd\Start_WithTURN_SignallingServer.ps1 开启信令服务器。服务器启动,能够接收连接后,控制台窗口中将出现以下命令行:
WebSocket listening to Streamer connections on :8888
WebSocket listening to Players connections on :80
Http listening on *: 80
命令行启动应用,启动成功后可以在信令和Web服务器打开的控制台窗口中看到对应的输出行:Streamer connected: ::1
MyPixelStreamingApplication.exe -AudioMixer -PixelStreamingIP=公网IP -PixelStreamingPort=8888
5.多终端访问推流页面
新建浏览器窗口页(选择Chrome内核浏览器),地址栏中: http://服务器IP
:信令端口
,在浏览器上成功打开推流画面,证明流程正确,可以满足单点推流使用。如果要满足1对多的服务配置,使用像素流送中的Matchmaker来自动分配端口。
2.如何使用实时云渲染服务
实时云渲染是一种更广义的技术,通常指在云端完成3D场景的渲染,并将渲染结果以视频流的形式传输到客户端。它可以使用多种协议(如WebRTC、RTMP、SRT等)传输数据,不受限于引擎种类。相比于像素流送必须与UE引擎强绑定,实时云渲染服务与引擎和应用松耦合,提供了强大的二次开发能力。下面以LarkXR实时云渲染PaaS平台为例,介绍UE三维应用如何一键部署实时云渲染服务。
LarkXR实时云渲染平台的整体架构如下,包含覆盖云、网、端和开箱即用的PaaS平台功能。
简单的说,UE应用无需集成像素流插件/无需修改程序,在客户预期要部署的云服务器上,只需一步:安装LarkXR的软件包,直接通过管理后台上传应用,即可实现在指定网络下的推流,在任意终端设备上即可实时访问。
1.下载LarkXR软件程序包,自助获取测试授权码
https://www.pingxingyun.com/devCenter.html,下载LarkXR单机版测试,建议能访问外网的环境可以直接使用在线安装版本,自动配置服务器环境。注册个人开发者获取测试授权码,激活LarkXR平台(类似激活微软Office办公软件的方法)。
2.添加程序包
上传打包好的Zip程序包,同步完成后自动生成URL链接,可以通过各类终端访问交互。UE demo :3D可视化楼宇项目:https://larkxrpub.pingxingyun.com:443/webclient/?appliId=1323331555975757824&wsId=Qt5HqKaq×tamp=1777446078000&signature=135F46F29AC7AF645FDE83D4C422DE3C51B0CC7F
3.如何零代码、零部署使用实时云渲染服务
针对个人开发者,LarkXR提供两种测试方式,一种是开发者本地部署一套环境,开通相关端口,如需外网访问需要固定IP(或者使用官方提供的NAT代理转发服务)。还有一种托管应用方案,无需部署,一键上传,即可自动同步,生成可直接访问的URL链接,特别适合于短时、少并发的演示汇报场景。
1.添加应用
在页面点击【添加托管应用】或【添加应用】跳转到应用上传页面
2.默认设置
默认选项:表格前带红星号的都是必填项,表格后面带问号的是说明内容,比如应用执行路径怎么选择,支持上传哪些应用等。
渲染类型默认为3D共享,适用于纯三维开发的应用。 如果是二三维混合开发的应用可以使用2D共享模式。当选择 2D 共享模式 时,需确认应用类型,若应用为 WebGL 应用,仅需填写 WebGL 的网址。
3.高级设置
高级选项: 高级设置里可以更改应用的一些配置,如显示方式、初始化模式、初始背景色等。 可以等到应用上传完使用过后根据自己的需求更改配置。
4.生成链接,分享应用
同步成功之后,方可进入应用。根据应用大小估算同步时间,1G的应用同步时间大概在10~30s左右。点击【更多】,从【分享】按钮中复制链接进行分享。注意不要直接把浏览器地址栏的URL分享,无法访问。
相关文章:
实时云渲染——比像素流送节省80%精力的UE程序推流技术
UE5引擎除了适合开发3A游戏,同样适用于开发大场景高精度的数字孪生可视化场景,自带的Nanite 虚拟微多边形几何体技术、Lumen 全动态全局光照技术、高度可扩展的架构、强大的地形和植被系统以及高效的流媒体技术,使UE5在数字孪生领域的技术占有…...
如何解决 Linux 系统文件描述符耗尽的问题
在Linux系统中,文件描述符(File Descriptor, FD)是操作系统管理打开文件、套接字、管道等资源的抽象标识。当进程或系统耗尽文件描述符时,会导致服务崩溃、连接失败等严重问题。以下是详细的排查和解决方案: --- ###…...
存储器:DDR和HBM的区别
本文简要介绍DDR(Double Data Rate SDRAM)和HBM(High Bandwidth Memory)的主要区别: 1. 架构与设计 DDR:传统的主流动态随机存取存储器(DRAM),采用并行总线架构&#x…...
【计算机网络】Cookie、Session、Token之间有什么区别?
大家在日常使用浏览器时可能会遇到:是否清理Cookie?这个问题。 那么什么是Cookie呢?与此相关的还有Session、Token这些。这两个又是什么呢? 本文将对这三个进行讲解区分,如果对小伙伴有帮助的话,也请点赞、…...
每日学习:DAY24
日常开发与学习记录 前言 怎么感觉自己越来越懒了。 日程 忘记写了,大概是早上做了 SQL 表单,晚上写了 DispatcherController。 学习记录 操作系统 页面分配置换策略 学习内容 省流 SQL 表单构建关于嵌套注解的生效机制DispatcherController 统…...
grpo原理
图解deepseek的grpo原理、以debug形式阅读grpo的源码 练习两天半,从零实现DeepSeek-R1(基于Qwen2.5-0.5B和规则奖励模型,GRPO),从原理讲解到代码实现,解开DeepSeek-R1的神秘面纱 第一个视频 GRPO讲解 mod…...
RabbitMQ--基础篇
RabbitMQ 简介:RabbitMQ 是一种开源的消息队列中间件,你可以把它想象成一个高效的“邮局”。它专门负责在不同应用程序之间传递消息,让系统各部分能松耦合地协作 优势: 异步处理:比如用户注册后,主程序将发…...
ResNet残差神经网络的模型结构定义(pytorch实现)
ResNet残差神经网络的模型结构定义(pytorch实现) ResNet‑34 ResNet‑34的实现思路。核心在于: 定义残差块(BasicBlock)用 _make_layer 方法堆叠多个残差块按照 ResNet‑34 的通道和层数配置来搭建网络 import torch…...
如何使用极狐GitLab 软件包仓库功能托管 ruby?
极狐GitLab 是 GitLab 在中国的发行版,关于中文参考文档和资料有: 极狐GitLab 中文文档极狐GitLab 中文论坛极狐GitLab 官网 软件包库中的 Ruby gems (BASIC ALL) WARNING:Ruby gems 软件包库正在开发中,由于功能有限,尚未准备好…...
AI日报 · 2025年5月08日|Stripe发布全球首个支付AI基础模型
1、Stripe 发布支付领域专用 AI 基础模型及稳定币账户功能 Stripe 于5月7日在其年度 Sessions 大会上发布了全球首个专为支付领域打造的 AI 基础模型——“Payments Foundation Model”,该模型基于数百亿笔交易数据训练,能够捕捉每个支付中数百个传统模…...
React 笔记[1] hello world
React 笔记[1] hello world 明白了!既然你已经安装了 Node.js,我们可以 从零开始搭建一个 React Tailwind CSS 的 Hello World 项目。我将一步步列出操作指令,你只需要在终端里依次执行。 ✅ 第一步:初始化项目 mkdir my-hello…...
好消息!PyCharm 社区版现已支持直接选择 WSL 终端为默认终端
在过去,PyCharm 社区版虽然提供了链接 Windows 子系统 Linux(WSL)终端的能力,但用户无法在设置中直接指定 WSL 为默认终端,这一功能仅限于专业版使用者。 而现在,在 PyCharm 2025.1.1 版本中,Je…...
基于redis的定时状态更新
基于redis的定时状态更新 下面是一个简单的示例,展示如何使用redis实现状态更新,从而满足在某些场景下,既需要频繁更新状态, 又需要保证状态的实时性。以及定时更新状态的需求。 示例说明 假设有一个剧目演出计划,确…...
[原创](现代Delphi 12指南):[macOS 64bit App开发]: 如何获取自身程序的所在的目录?
[作者] 常用网名: 猪头三 出生日期: 1981.XX.XX 企鹅交流: 643439947 个人网站: 80x86汇编小站 编程生涯: 2001年~至今[共24年] 职业生涯: 22年 开发语言: C/C++、80x86ASM、Object Pascal、Objective-C、C#、R、Python、PHP、Perl、 开发工具: Visual Studio、Delphi、XCode、…...
服务器托管的常见问题
一、何谓IDC服务器托管服务? IDC服务器托管是指为了提高网站的访问速度,将您的服务器及相关设备托管到具有完善机房设施、高品质网络环境、丰富带宽资源和运营经验以及可对用户的网络和设备进行实时监控的网络数据中心内,以此使系统达到安全、可靠、稳定…...
使用Scrapeless Scraping Browser的自动化和网页抓取最佳实践
引言:人工智能时代浏览器自动化和数据收集的新范式 随着生成性人工智能、人工智能代理和数据密集型应用程序的快速崛起,浏览器正在从传统的“用户互动工具”演变为智能系统的“数据执行引擎”。在这一新范式中,许多任务不再依赖单一的API端点…...
电子电气架构 --- 如何有助于提安全性并减少事故
我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 钝感力的“钝”,不是木讷、迟钝,而是直面困境的韧劲和耐力,是面对外界噪音的通透淡然。 生活中有两种人,一种人格外在意别人的眼光;另一种人无论…...
【训练】Qwen2.5VL 多机多卡 Grounding Box定位
之前的相关文章: 【深度学习】LLaMA-Factory微调sft Qwen2-VL进行印章识别 https://www.dong-blog.fun/post/1661 使用LLaMA-Factory微调sft Qwen2-VL-7B-Instruct https://www.dong-blog.fun/post/1762 构建最新的LLaMA-Factory镜像 https://www.dong-blog.f…...
MYSQL的行级锁到底锁的是什么东西
MySQL 的行级锁是一种锁机制,它允许数据库在执行并发操作时,锁定表中的某一行数据而不是整张表。行级锁通过限制对特定行的访问,允许其他线程并发地访问表中的其他行,从而提高并发性和性能。 行级锁的锁定对象 行级锁锁定的是 行…...
图神经网络中的虚拟节点
1.虚拟节点 当我们使用节点来构成图结构时, regular node: 常规的节点即代表了某一个局部特征, 即局部节点特征。 virtual node: 普通的节点不同,有时会需要这样的一种特征, 该特征代表了该样本的全局信息࿰…...
关于多版本CUDA共存的研究,是否能一台机子装两个CUDA 版本并正常切换使用
我发现了一个很有意思的事 我装了11.8cuda再装12.3cuda结果我的11.8cuda还在,没被替换掉或者删掉 然后我打开我的环境发现它的环境除了cuda_path都没改 这样我就有个大胆的想法,如果我把cuda path换成11.8路径那是不是就能切换了 而且cuda_path 和 cuda_…...
el-table与echarts图形实现滚动联动
el-table与echarts图形滚动联动 效果图 实现思路 设计图滚动条位于表格下方,且echarts滚动不易获取当前展示数据到左侧的距离 故:通过监听表格的滚动实现联动 为了保持echarts的横坐标和表格的列基本保持对齐,用tdWidth标识单列表格的宽度…...
【Git】【commit】查看未推送的提交查看指定commit的修改内容合并不连续的commit
文章目录 1. 查看未推送的提交方法一 :git status方法二:git log方法三:git cherry方法四:git rev-list 2. 查看指定commit的修改方法一:git show方法二:git log方法三:git diff 3. 合并不连续的…...
C++GO语言微服务基础技术①
目录 01-项目简介 02-单体式架构 03-微服务优缺点 04-单体式和微服务区别 05-RPC简介 06-RPC使用步骤 07-注册RPC服务函数接口 08-绑定服务和调用方法函数接口 09-rpc服务端和客户端编码实现 10-json的rpc 11-rpc的封装 12-rpc封装小结 01-项目简介 # 单体式和微服…...
AI CUBE 使用指南 目标检测格式范例 AI cube 报错数据集不合规范,请清洗数据集
血的教训:labels.txt里面放1 2 3 4 ..也可以英文,不能有中文 教程:K230 借助 AICube部署AI 视觉模型 YOLO等教程_嘉楠 ai cube多标签分类-CSDN博客 | 目标检测范例: 不清楚不是数字行不行 这个id可以英文,你…...
vue中scss使用js的变量
一、前言 在项目开发中,很多时候会涉及到scss样式变量,正常定义方式 $primary-color: rgb(188, 0, 194);;使用时直接使用即可:color: $primary-color。但是,如果,这些变量是在js中定义的怎么办 二、实现 …...
QtGUI模块功能详细说明, 字体和文本渲染(四)
目录 一. 窗口和屏幕管理 二. 绘图和渲染 三. 图像处理 四. 字体和文本 1、核心概念 1.1、字体 (Font) 1.2、字形 (Glyph) 1.3、字符 (Character) 1.4、文本布局 (Text Layout) 1.5、文本渲染 (Text Rendering) 1.6、度量 (Metrics) 2、字体管理 2.1、QFont&#…...
计算机学习路线与编程语言选择(信息差)
——授人以鱼不如授人以渔 面向岗位学习!到招聘网站看看有哪些岗位,看一看岗位职责、要求 牛客网(计算机实习工作最好的网站) boss直聘 确定岗位后(如前端、后端),岗位需要什么语言…...
多环串级PID
文章目录 为什么要多环程序主函数内环外环 双环PID调参内环Kp调法Ki调法 外环Kp 以一定速度到达指定位置封装 为什么要多环 单环只能单一控制速度或者位置,如果想要同时控制多个量如速度,位置,角度,就需要多个PID 速度环一般PI…...
编写大模型Prompt提示词方法
明确目标和任务 // 调用LLM进行分析const prompt 你是一名严格而友好的英语口语评分官,专业背景包括语音学(phonetics)、二语习得(SLA)和自动语音识别(ASR)。你的任务是: ① 比对参…...
使用chrome浏览器截长图
如何使用chrome浏览器截长图: 使用chrome截取完整网页图片 第一步、按F12,开发者模式的布局按下图布局 第二步、按ctrlshiftp组合键,搜索“截图” ,然后自动截图保存在下载目录(右上角)了。...
【MySQL】第二弹——MySQL表的增删改查(CURD))
文章目录 🎓一. CRUD🎓二. 新增(Create)🎓三. 查询(Rertieve)📖1. 全列查询📖2. 指定列查询📖3. 查询带有表达式📖4. 起别名查询(as )📖 5. 去重查询(distinct)📖6. 排序…...
Android NDK版本迭代与FFmpeg交叉编译完全指南
在Android开发中,使用NDK(Native Development Kit)进行原生代码开发是一项常见需求,特别是当我们需要集成FFmpeg这样的多媒体处理库时。本文将深入分析Android NDK的版本迭代分界线,详细讲解FFmpeg交叉编译的注意事项,并提供完整的…...
【Linux网络】Socket-UDP相关函数
socket() 函数 这个函数的作用是创建一个 Socket 文件描述符,在客户端和服务器都可以使用。 #include <sys/socket.h> int socket(int domain, int type, int protocol);参数: domain:指定协议族,例如 AF_INET 代表 IPv4 …...
最优化方法Python计算:有约束优化应用——线性Lasso回归预测器
实际应用中,特征维度 n n n通常远大于样本容量 m m m( n ≪ m n\ll m n≪m),这种高维小样本场景下特征数据可能含有对标签数据 y i y_i yi的取值不必要的成分,甚至是噪声。此时,我们希望回归模型中的优化…...
基础算法 —— 二分算法 【复习总结】
1. 简介 1.1 原理 二分算法,顾名思义,关键在于二分,当我们求解的目标具有二段性时,我们就可以使用二分算法: 先根据待查找区间中点位置,判断结果会在左侧还是右侧,接下来,舍弃一半…...
计算机网络常识:缓存、长短连接 网络初探、URL、客户端与服务端、域名操作 tcp 三次握手 四次挥手
缓存: 缓存是对cpu,内存的一个节约:节约的是网络带宽资源 节约服务器的性能 资源的每次下载和请求都会造成服务器的一个压力 减少网络对资源拉取的延迟 这个就是浏览器缓存的一个好处 表示这个html页面的返回是不要缓存的 忽略缓存 需要每次…...
OpenHarmony平台驱动开发(九),MIPI DSI
OpenHarmony平台驱动开发(九) MIPI DSI 概述 功能简介 DSI(Display Serial Interface)是由移动行业处理器接口联盟(Mobile Industry Processor Interface (MIPI) Alliance)制定的规范,旨在降…...
经济体制1
一.计划经济体制与市场经济体制 1.计划经济又称指令型经济,是对生产和资源分配以及产品消费事先进行计划的经济体制。 市场经济体制是指依靠市场手段对资源进行配置的经济体制 注意: 计划与市场都是调节经济的手段,都属于资源配…...
Spring AI 入门(持续更新)
介绍 Spring AI 是 Spring 项目中一个面向 AI 应用的模块,旨在通过集成开源框架、提供标准化的工具和便捷的开发体验,加速 AI 应用程序的构建和部署。 依赖 <!-- 基于 WebFlux 的响应式 SSE 传输 --> <dependency><groupId>org.spr…...
[ctfshow web入门] web58
信息收集 if(isset($_POST[c])){$c $_POST[c];eval($c); }else{highlight_file(__FILE__); }这麽简单? 解题 好吧,还是我想得太简单了 把system禁用了。不是参数过滤,而是直接禁用,不管是间接还是直接调用system都不行&#x…...
Python量化交易Backtrader技术指标的实现
一、Backtrader技术指标概览 (一)Backtrader内置指标的优势 Backtrader内置的技术指标具有以下优势: 多样性:涵盖了常见的移动平均线、相对强弱指数(RSI)、布林带等多种指标,满足了不同交易者的需求。易用性:通过简单的函数调用即可在策略中添加和使用这些指标,无需…...
蓝桥杯第十六届c组c++题目及个人理解
本篇文章只是部分题目的理解,代码和思路仅供参考,切勿当成正确答案,欢迎各位小伙伴在评论区与博主交流! 题目:2025 题目解析 核心提取 要求的数中至少有1个0、2个2、1个5 代码展示 #include<iostream> #incl…...
ARM 芯片上移植 Ubuntu 操作系统详细步骤
一、准备工作 (一)硬件准备 ARM 开发板:确保 ARM 开发板的型号与 Ubuntu 官方支持的 ARM 架构兼容,常见的 ARM 架构有 ARMv7、ARMv8 等。例如树莓派系列开发板,广泛用于 ARM 系统移植,其采用 ARM 架构。存…...
能耗优化新引擎:EIOT平台助力企业降本增效
安科瑞顾强 数字化转型的背景下,能源管理正加速向智能化、远程化方向演进。安科瑞电气推出的EIOT托管平台及ADW300系列4G无线计量仪表,通过云端技术与无线通信的深度融合,为用户打造了高效、便捷的远程能源监测与管理体系,助力企…...
录播课视觉包装与转化率提升指南
1. 封面设计黄金法则 1.1 程序员审美三要素 极客风配色方案 主色:深空灰(#2D2D2D) 代码蓝(#007BFF) 点缀色:终端绿(#28A745) 警告黄(#FFC107) 信息密度控制 核心标语≤9字(如:"3天攻克分布式事务") 技…...
Solidity语言基础:区块链智能合约开发入门指南
一、Solidity概述 Solidity是以太坊生态系统中最重要的智能合约编程语言,由Gavin Wood于2014年提出。作为面向合约的高级语言,它结合了JavaScript、Python和C的语法特点,专为在以太坊虚拟机(EVM)上运行而设计。 核心…...
QMK开发环境搭建指南:Eclipse和VS Code详解
QMK开发环境搭建指南:Eclipse和VS Code详解 前言 各位键盘DIY爱好者们,今天跟大家分享如何搭建QMK固件开发环境。无论你是想定制自己的客制化键盘固件,还是对开源键盘固件开发感兴趣,这篇教程都能帮你搞定开发环境配置。本文将详…...
Python pandas 向excel追加数据,不覆盖之前的数据
最近突然看了一下pandas向excel追加数据的方法,发现有很多人出了一些馊主意; 比如用concat,append等方法,这种方法的会先将旧数据df_1读取到内存,再把新数据df_2与旧的合并,形成df_new,再覆盖写入,消耗和速…...
spring中RequestContextHolder
1、在 Spring 框架中, RequestAttributes attributes RequestContextHolder.getRequestAttributes(); 是获取当前请求上下文的核心方法。以下是其关键要点及注意事项: 一、核心机制 作用原理 通过 ThreadLocal 存储当前线程的请求属性对象 …...