首页IT科技ue4像素流推送(Vue3 + UE4+ 像素流 + 交互 的开发构建流程)

ue4像素流推送(Vue3 + UE4+ 像素流 + 交互 的开发构建流程)

时间2025-08-01 22:24:21分类IT科技浏览10275
导读:Vue3 + UE4+ 像素流 + 交互 的开发构建流程 一、像素流 1、将对应 UE 4.27 版本的 webRtcPlayer.js 复制到项目的 public/ue 文件夹下(作为静态资源) 2、根目录下的 index...

Vue3 + UE4+ 像素流 + 交互 的开发构建流程

一                    、像素流

1                             、将对应 UE 4.27 版本的 webRtcPlayer.js 复制到项目的 public/ue 文件夹下(作为静态资源) 2         、根目录下的 index.html 中引入 ue/webRtcPlayer.js

index.html 中引入 webRtcPlayer.js

3               、将对应 UE 4.27 版本的 app.js 复制到项目的 main.ts 同级目录下                   ,可以改名为 ueapp.js 4                              、修改 ueapp.js 中的内容                             ,用于解决开发中的报错问题 1              、新增导出(webrtc 对象可以将 ueapp.js 中定义的 function 都导出          ,这里只初步导出了五个函数/对象)

这里目前只初步导出了 ueapp.js 中的 load          、resizePlayerStyle                              、emitUIInteraction 等方法                    。有需要的话               ,还可以继续导出所需要的方法                             。

var temp = new window.webRtcPlayer({}) var webrtc = { load: load, webRtcPlayer: temp, resizePlayerStyle: resizePlayerStyle, emitUIInteraction: emitUIInteraction, onConfig: onConfig } export default { webrtc } 2                   、添加初始变量定义

ueapp.js 中                             ,有些变量没有定义就直接在函数中使用了               ,这将导致在运行使用时的报错          ,需要增加定义:

// 新增 let unquantizeAndDenormalizeUnsigned = null let receivedBytesMeasurement = null let receivedBytes = null let Data = null let gamepad = null 3     、修改 websocket 地址(要和启动的 打包后的 ue 的 exe 的云渲染的网络地址一致)

本地启动打包后的云渲染的 run.bat 后                             ,在本机浏览器上输入的地址是:localhost                    ,也就是 http://127.0.0.1

那么 需要修改 ueapp.js 中 websocket 中对应的地址:

// ws = new WebSocket( // window.location.href // .replace("http://", "ws://") // .replace("https://", "wss://") // ) ws = new WebSocket("ws://127.0.0.1") 4                              、修复引用 play.png 问题

将 showPlayOverlay 中的 createElement(“img                    ”) 屏蔽掉         。

5                        、main.ts 中引入 ueapp.js

引入 ueapp.js     ,并使用 vue3 的语法:app.provide                             ,注册 WebRtc 的全局属性                         ,用于方便在 vue 文件中直接调用使用               。

6、webRtcPlayer.js 中修改视频为静音,实现数据流直接播放效果

云渲染/像素流推送的本质是视频播放                              。

在最新版的 Chrome浏览器(以及所有以 Chromium 为内核的浏览器)中                        ,已不再允许自动播放音频和视频              。就算为 video 或audi o标签设置了 autoplay 属性也一样不能自动播放          。

因此想要视频流在网页加载时自动播放                              ,就需要设置 video 的 muted 属性为 true                              。即声音为静音模式                   。

如果本身游戏引擎是有音效的     ,可以在网页加载后的一定时间内                   ,再将 video 的 muted 设置为 false                             ,之后用户可以调整系统音量          ,实现音效的展示     。

7                         、修改 ueapp.js               ,实现支持自动播放(不用再手动点击) 8                             、复制 player.html 中的 完整 div 到 vue 文件中                             ,并修改 id=“overlay                             ” 的 div 的 display 为 collapse 9     、vue 文件中调用像素流方法 10                    、至此               ,就可以看到启动 vue 项目时          ,页面展示游戏引擎的界面了

注意:需要首先启动打包后的 UE 游戏引擎 exe 和 run.bat 开启像素流送                              。

效果如下:

二                             、游戏引擎 实时交互

以上的验证过程                             ,是基于打包后的游戏引擎的                        。对于正在开发中的 UE4 项目                    ,以及实现 vue 和 游戏引擎的相互发消息的交互机制     ,还尚未实现。下面                             ,就介绍如何实现与项目的实时交互                         。

1         、游戏引擎以 Standalone Game 的方式启动 2               、找到对应的 UE 4.27 的版本的 SignallingWebServer                         ,将其复制到无特殊字符                              、中文名称等的路径下

以保证 SignallingWebServer 的像素流服务可以正常启动                             。

3              、找到复制后的路径下:SignallingWebServer/platform_scripts/cmd/run_local.bat,以管理员身份运行 run_local.bat

注意:run_local.bat 默认以 80 端口                        ,若有其他程序占用了 80 端口                              ,则 run_local.bat 将会运行错误或失败     ,需要移除占用的端口的软件                   ,再重新以管理员身份运行 run_local.bat     。

运行成功                             ,将会如下所示:

此时当 以 Standalone Game 方式运行了游戏引擎          ,且运行了 run_local.bat               ,那么将可以在网页中输入 localhost:80                             ,在线访问游戏引擎界面:

4          、运行 vue 项目

此时可以看到               ,运行后          ,vue 项目也可以正常访问到游戏引擎界面                    。只不过界面并不是全屏的                             ,需要在代码中做一些样式调整                    ,使游戏引擎界面铺满全屏                             。

这里 vue 项目可以访问游戏引擎界面的原因在于     ,我们在 ueapp.js 中修改了对应的 WebSocket 地址         。

1                              、调整游戏引擎界面占满全屏

修改 webRtcPlayer.js 中的 video 的 style               。

var video = document.createElement("video") video.id = "streamingVideo" video.playsInline = true video.disablepictureinpicture = true video.muted = true // self.startVideoMuted video.style.width = "100vw" video.style.height = "100vh" video.style.objectFit = "fill"

这样就有占满全屏的效果了                              。

5                   、游戏引擎 和 Vue 的通信机制 1     、消息通信的原理

Vue 和 UE 相互通信的原理是借助于 WebSocket                             ,利用像素流启动服务(run_local.bat)                         ,Vue 和 UE 同时监听像素流服务的地址                              、端口,通过 WebSocket 相互发送                        、监听消息                        ,再利用各自的对于消息的处理方法                              ,进行消息的处理与响应              。

而具体的方法就是 调用 emitUIInteraction 方法 和 addResponseEventListener 方法     ,前者用于从 JS/Vue 向 UE 发消息                   ,后者用于接收、处理 从 UE 向 JS/Vue 发的消息          。

完整蓝图事件:

至此就完成了                             ,Vue 和 UE 相互通信以及通信消息的响应处理                              。

效果如下:

GIF3

三                         、参考资料

【UE4】一个实现Web穿透          ,用HTML开发UI的方式——WebUI的用法

[Vue3] TS7016: Could not find a declaration file for module ‘…/assets/js/util.js‘

jQuery报错 Uncaught (in promise) DOMException: play() failed because the user didn‘t interact

Vue框架中页面和UE4交互的方法

Vue.js集成UE4像素流自定义网页的实现方式

VUE与UE5 像素流送

vue项目与ue交互

ue4之WebUI与引擎之间的通信

UE4.27 UE5 像素流送新人向教程               ,手把手带你避坑

UE4与前端通信方式

【数字孪生】UE4虚幻引擎与前端Web页面的结合

ue4之mesh点击事件触发切换材质

开源篇-WebSocket搭建UE5通信桥梁

徒手搭建VUE3项目(四):开启全局websocket

UE4使用websocket建立通信                             ,获取实时数据

UE像素流送                             、 交互

UE4.27 UE5 像素流送新人向教程               ,手把手带你避坑

UE4 PixelStreaming与UE4之间的通讯笔记

PixelStreaming数据通信

Unreal——像素流送播放器页面与 UE 通信

自定义播放器网页 5.0

在 UE4 蓝图中如何使用委托作为参数

自定义播放器网页 4.27

UE4像素流送PixelStreaming_ue4像素流到移动端可以吗_WindRushToNight的博客-CSDN博客

VUE与UE5 像素流送

UE4-PixelStreaming(虚幻引擎4-像素流)笔记

【自制】UE4蓝图中使用Json的插件

UE5的像素流程序打包

声明:本站所有文章          ,如无特殊说明或标注                             ,均为本站原创发布                   。任何个人或组织                    ,在未征得本站同意时     ,禁止复制     、盗用                    、采集                             、发布本站内容到任何网站         、书籍等各类媒体平台     。如若本站内容侵犯了原著者的合法权益                             ,可联系我们进行处理                              。

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
php运算符@符号(php算术运算符的补充理解) 如何成功运营一家网店(怎么做电商运营的一套方案)