Choose your operating system:
Windows
macOS
Linux
按照 快速入门指南 中的说明设置像素流系统时,无需在虚幻引擎应用程序的游戏代码中执行特殊操作即可在运行时管理系统。但像素流送插件确实提供一些可选方式来控制像素流送系统和与其交互,以达到特定效果。本页介绍这些附加选项。
冻结帧
若将虚幻引擎应用程序渲染的每一帧都编码到媒体流送中,会有如下缺点:需要占用运行虚幻引擎的计算机的资源;通过网络发送所有帧会消耗带宽;根据可用带宽,编码可能会降低渲染图像的质量。
为了最大限度减少使用GPU资源和网络带宽,有时可能要暂时禁止像素流插件编码和发送每一帧,选择向已连接的客户端显示一张静态图像。例如:
-
若客户端未与应用程序积极交互,且虚拟场景中没有任何对象在移动,则可能需要应用程序冻结在最后一个渲染帧上,直到发生改变。
-
可能需要向客户端显示任意图像,例如加载屏幕或消息标题。
为此,像素流送插件提供可用于暂停和恢复编码的蓝图节点。可在蓝图编辑器中的 像素流送冻结帧(Pixel Streaming Freeze Frame) 类别中找到此类节点:
-
想要用静态图像替换媒体流送时,使用 Freeze Frame 节点。
此节点接受对纹理资源的可选引用。若提供一个,已连接的客户端将在播放器窗口中看到指定的纹理。若未提供,连接客户端将看到您调用此节点时虚幻引擎应用程序生成的最后一个渲染帧。
-
想要恢复每帧流送时,使用 Unfreeze Frame 节点。
冻结在单个帧或图像纹理上不会影响来自浏览器的输入。冻结后,默认情况下,播放器页面仍会将键盘和鼠标事件发送到虚幻引擎。
响应像素流送事件
像素流送系统向应用程序游戏进程代码提供了一种方法,以便响应像素流送会话过程中发生的选定事件:
事件 |
说明 |
---|---|
所有连接关闭时(On All Connections Closed) |
当连接此虚幻引擎应用程序实例的最后一个客户端断开连接时发出。发出此事件后,将没有客户端查看应用程序的媒体流送。可利用此机会让游戏逻辑将应用程序重置为初始状态,为加入新客户端做准备。 |
为了响应此类事件,可利用 像素流送器委托(Pixel Streamer delegate) 类进行绑定。通常在游戏开始时设置此绑定;例如,为了响应 开始播放事件(Event BeginPlay) 事件。设置绑定后,每当触发绑定事件时将触发自定义事件。
-
在蓝图图表编辑器中,从任意节点的执行引脚向右拖动,并选择 像素流送器委托(Pixel Streamer Delegates)> 获取像素流送器委托(Get Pixel Streamer Delegates) 。
-
从 返回值(Return Value) 向右拖动,展开 像素流送器委托(Pixel Streamer Delegates) 类别。将看到许多用于绑定和取消绑定事件的新选项。
-
为要响应的事件选择 绑定...(Bind...) 选项,例如 绑定事件至所有连接关闭时(Bind Event to On All Connections Closed) 。将获得一个带有 事件(Event) 输入的新节点。将其输入执行引脚连接到 获取像素流送器委托(Get Pixel Streamer Delegates) 中的输出执行引脚。
-
若您已有想要触发的自定义事件,则将其标题栏中的 输出委托(Output Delegate) 引脚连接到刚创建的 Bind 节点上的 事件(Event) 输入。否则,从 事件(Event) 输入中向左拖动并选择 添加事件(Add Event)> 添加自定义事件(Add Custom Event) 以创建新的自定义事件。
-
将自定义事件连接到想要运行以响应像素流送事件的蓝图逻辑。
例如,此实现调用在同一个蓝图中所定义的自定义函数来将应用程序重置为初始状态:
在媒体框架中播放流送
当您有一个虚幻引擎实例使用像素流送插件来编码和播放媒体流送时,可让另一虚幻引擎应用程序播放此媒体流送。
此流送播放建立在UE4媒体框架之上。此流送的设置步骤和设置媒体框架的任何其他类型的流送媒体源一样,欲了解分步说明,参见 播放视频流 。
唯一的不同是,为流送媒体源设置的 流送Url(Stream Url) 值必须遵循以下格式:
webrtc://<signaling-server-address>
其中,
<signaling-server-address>
是运行信令和Web服务器的计算机的IP地址和端口。
例如:
像素流送媒体的流送播放目前仅在Windows平台上可用。
需为正在编码和发送媒体流送的项目 以及 正在播放媒体流送的项目启用 像素流送(Pixel Streaming) 插件。