倒回和快进播放
除播放视频外,媒体框架还可控制播放速率,倒回、暂停或快进视频。 在此指南中,玩家在关卡中进行游戏时可通过一个按键倒回、一个按键快进,一个按键播放视频。
在此指南中,我们使用的是启用了 Starter Content 的 Blueprint Third Person Template 项目。 此外还需要在电脑上存储一些 支持的视频文件 ,以便添加到播放列表进行播放。可使用您的本地视频,或 点击右键 下载该 视频样本 。
步骤
在项目中创建一个名为 Movies 的文件夹,然后在浏览器中将视频添加到 Movies 文件夹。
创建一个 文件媒体源(File Media Source)(或其他源资源)并将资源指向视频。
创建一个名为 VideoPlayer 的 媒体播放器(Media Player) 资源和相关的 媒体声波(Media Sound Wave) 和 媒体纹理(Media Texture) 资源。
在 Media Player 资源中,取消勾选 Play on Open 选项。
在 Content Browser 的 StarterContent/Shapes 中,将一个 Shape_Plane 拖入关卡。
使用 平移(W)、旋转(E) 和 缩放(R) 工具将静态网格体调整到理想的大小和位置。
按住 Ctrl 选中 Sound Wave 和 Media Texture 资源,将它们放置在关卡中的 静态网格体 上。此操作将自动创建一个 材质 并将其应用到静态网格体。
在工具栏上,点击 Blueprints 按钮和 Open Level Blueprint。
添加 Media Player Reference 类型的一个 变量(名为 MediaPlayer),并将其设为 VideoPlayer 媒体播放器资源。指定 默认值 之前可能需要进行 编译。
添加一个 Event Begin Play 节点和 Media Player 变量,然后使用 Open Source 打开 MyVideo 文件媒体源资源。
添加一个 2 键盘事件,将 Pressed 设为 播放 MediaPlayer 资源。
添加 1 和 3 键盘事件(两者均使用 MediaPlayer 资源的 Set Rate)并调整每个节点的 Rate 数值。Rate 设为 -1.0 后视频将反向播放;Rate 设为 2.0 将 2 倍加速向前播放。
在当前版本中,向媒体播放器资源发出命令时声音同步可能出现问题。建议在命令之间插入短暂延迟,为播放器留出处理时间。我们已知此问题并正在研究修复方法,争取在之后的引擎更新中将其完美解决。
关闭 关卡蓝图,点击 Play 按钮在编辑器中开始游戏。
最终结果
在编辑器中进行游戏时,关卡加载后视频不会立即开始播放。玩家按下 2 键后视频将开始播放。 按下 1 键将倒回视频;按下 3 键将快进视频。
倒回和快进的速率由 Set Rate 节点上的 Rate 数值决定。调整数值加快倒回和快进时的播放速率。
此例是绑定到键盘按键,也可在以 UMG 构建的用户界面中执行相同功能(在此界面中玩家点击按钮可执行相同命令)。
其他注意事项
部分高级播放功能的使用取决于媒体源,以及使用的播放器插件。 例如,并非所有媒体源都支持寻找和修改播放速率,并非所有播放器插件都支持这些功能。
部分媒体源和播放器的组合可进行速率修改,但只能在特定的速率范围内进行,否则播放将被削减(即出现跳帧)。 部分播放功能可通过蓝图进行查询,如 CanPause、GetForwardRates、GetReverseRates。 所有播放函数(Play、Rewind、Pause、SetRate 等)将提供一个布尔返回值,说明所需操作是否成功。
Windows 的 WmfMedia 播放器插件当前也存在限制,无法进行播放函数的链式调用。举例而言,将命令链中的命令串在一起,如 Play -> SetRate -> Pause -> SetRate -> Play:
点击查看全图。
媒体播放器的状态机可能出现故障,恢复的唯一方法是重新打开媒体源或播放列表。
如需进行链式调用,一个也许可行的解决方法是在每个调用之间插入 Delay 节点,为播放器留出足够时间来处理当前的命令。