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

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

时间2025-09-15 21:05:36分类IT科技浏览12135
导读: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
网游最好的加速器是什么(热门网游加速器哪个加速更稳定_全网热门网游加速器排名) 如何激活windows10家庭版免费(怎么免费获取win10家庭版激活密钥 附激活工具)