使用蓝图控制播放

演示如何在蓝图中快进、倒回、暂停和恢复视频播放。

Windows
MacOS
Linux
本页面的内容

除了在基于虚幻引擎4的项目中播放视频,您还可以让播放器通过一系列的蓝图节点来控制视频的播放。

在本教程中,我们提供了一种方法,通过创建快进、倒回、暂停、停止和恢复播放未播放完的视频的功能,让播放器控制视频的播放

FinalHero.png

并非所有的播放器插件都支持快进和/或反向播放。请参阅媒体框架技术参考页面了解更多信息。

步骤

对于本教程,我们使用的是已启用 初学者内容包(Starter Content)蓝图第三人称模板(Blueprint Third Person Template) 项目。 您还需要一个视频进行播放,您可以使用自己的视频或右键单击并下载此示例视频

  1. 内容浏览器(Content Browser) 中,展开 源(Sources) 面板并创建一个名为 电影(Movies) 的文件夹,然后右键单击它并选择 在资源管理器中显示(Show in Explorer)

    ControllingPlayback_01.png

  2. 将示例视频(或您支持的视频)拖动到您计算机上项目的 内容/电影(Content/Movies) 文件夹中。

    ControllingPlayback_02.png

    为了确保视频内容与项目一起打包和部署,内容必须位于项目的 内容/电影(Content/Movies) 文件夹中。

  3. 在您的项目中,创建一个 媒体播放器(Media Player) 和相关的 媒体纹理(Media Texture) 资源,分别称为 MediaPlayerMediaPlayer_Video

  4. 创建一个名为 视频(Video)文件媒体源(File Media Source) 资源,并在其中将 文件路径(File Path) 指向在 步骤2(Step 2) 中添加的视频。

    ControllingPlayback_03.png

  5. 打开您的 媒体播放器(Media Player) 资源,并禁用 打开即播放(Play on Open) 选项。

    ControllingPlayback_04.png

    在本例中,我们将向播放器提供播放控制,而不是在打开媒体源后让其自动开始播放。

  6. 基本(Basic) 下的 模式(Modes) 面板中的主编辑器内,将一个 平面(Plane) 拖动到关卡中并根据需要调整其大小。

  7. MediaPlayer_Video 纹理拖动到该 平面(Plane) 上,然后在该平面的 详细信息(Details) 面板中,添加 媒体声音组件(Media Sound Component) 并将其设置为使用您的 媒体播放器(Media Player) 资源。

    单击显示全图。

  8. 从“主工具栏”中,单击 蓝图(Blueprints) 按钮,然后选择 打开关卡蓝图(Open Level Blueprint)

    ControllingPlayback_06.png

  9. 关卡蓝图(Level Blueprint) 中,创建一个名为 MediaPlayer,类型为 媒体播放器对象引用(Media Player Object Reference) 的变量,并将其设置为指向您的 媒体播放器(MediaPlayer) 资源。

  10. 按住 Ctrl 并将 MediaPlayer 变量拖动到图表中,并使用 打开源(Open Source)事件开始播放(Event Begin Play) 以打开您的 视频(Video) 文件媒体源资源。

    ControllingPlayback_07.png

  11. 添加一个连接到 触发器(Flip Flop)向上(Up) 键盘事件,并关闭您的 Media Player 变量,使用 播放(Play)暂停(Pause),如下所示。

    ControllingPlayback_08.png

    当播放器按下 向上(Up) 箭头键盘键时,媒体源将开始播放,而再按一次则会暂停视频。

    暂停对应于将播放速率(Play Rate)设置为0.0,但并非所有媒体源都支持暂停(例如网络摄像头和其他视频捕捉硬件源)。 您可以使用 可以暂停(Can Pause) 蓝图节点来确定媒体源是否支持暂停。

  12. 添加 向左(Left)向右(Right) 键盘事件,然后关闭您的 Media Player 变量,使左键在 -2 处,右键在 2 处。

    ControllingPlayback_09.png

    这将使播放器能够按下左箭头键盘键把视频播放速率(Play Rate)设置为-2(以两倍的速度反向播放视频,值为1.0是正常的正向播放)。 当您按下右箭头键后,视频将以两倍正常播放速率快进。您可以添加额外的蓝图逻辑来确定播放器按下倒回或快进键的次数,并将播放速率(Play Rate)从2倍增加或减少到4倍、6倍或更高。

    即使播放器插件支持1.0之外的播放速率,可以选择的实际播放速率也将取决于正在使用的媒体源。 您可以使用 获取快进速率(Get Forward Rates)获取倒回速率(Get Reverse Rates) 蓝图节点检查受支持的速率,或者使用 支持速率(Support Rate) 函数输入速率以确定是否支持该速率。

    SupportRates.jpg

    稀疏化(Thinned)非稀疏化(Unthinned) 速率之间存在区别。“稀疏化”意味着使用此速率时某些帧将被略过,而“非稀疏化”意味着使用此速率时所有帧都将被解码。

  13. 添加一个连接到 触发器(Flip Flop)向下(Down) 键盘事件,然后关闭 媒体播放器(Media Player) 引用,使用 获取时间(Get Time) 函数调用。

    ControllingPlayback_10.png

    获取时间(Get Time) 函数调用将返回当前播放时间,当我们想要重新打开视频和恢复视频播放时,将存储和使用该当前播放时间。

  14. 右键单击 获取时间(Get Time) 节点的 返回值(Return Value),并将其提升至名为 停止时间(Stop Time) 的变量,然后将所有节点连接到 关闭(Close) 函数调用,如图所示。

    ControllingPlayback_11.png

    这样将在按下向下箭头键盘键时关闭媒体播放器,但存储媒体播放器被停止于某个变量时的当前时间。

  15. 关闭 触发器(Flip Flop)B 引脚,使用 开放源(Open Source) 节点并将 媒体源(Media Source) 设置为您的 视频(Video) 媒体源。

    ControllingPlayback_12.png

    这样将重新打开您的视频,但会从头开始播放视频,我们将在接下来的几个步骤中解决这个问题。

  16. 拖走 媒体播放器(Media Player) 引用,使用 在打开的媒体上指定(Assign On Media Opened) 事件调度器,并进行连接,如图所示。

    ControllingPlayback_13.png

    这样将创建一个事件调度器,该调度器仅在媒体源完全打开时才会调用连接的事件。 在向媒体播放器发出命令时,以这种方式操作是一种好办法,因为它可以确保在试图告诉媒体播放器做某事之前已经打开媒体源。 如果我们在打开媒体播放器后直接向它发出命令,则不能保证该媒体源已经完全打开并能够接收命令,而这可能会导致命令失败。

  17. 关闭您的 媒体播放器(Media Player) 引用,调用 Seek 函数,然后调用 Play 函数。

  18. Stop Time 变量连接到 寻找(Seek) 节点的 时间(Time) 引脚,并将 寻找(Seek)播放(Play) 节点连接到 OnMediaOpened 事件,如图所示。

    ControllingPlayback_14.png

    现在,当播放器按向下箭头键时,当前时间将在关闭媒体播放器之前存储。 再次按下时,视频(Video) 媒体源将打开,而且当其完全打开后,在播放视频之前,该视频会移动到指定的 停止时间(Stop Time)(恢复播放)。

  19. 关闭 关卡蓝图(Level Blueprint) 并从主工具栏单击 播放(Play) 按钮以在编辑器中播放。

最终结果

您现在可以使用 向上(Up)向下(Down)向左(Left)向右(Right) 方向键来控制视频的播放。

按下 向上(Up) 方向键将播放/暂停视频,按下 向下(Down) 方向键将关闭/重新打开视频,按下 向左(Left) 方向键将倒回视频,按下 向右(Right) 方向键将快进视频。

欢迎来到全新虚幻引擎4文档站!

我们正在努力开发新功能,包括反馈系统,以便您能对我们的工作作出评价。但它目前还未正式上线。如果您对此页面有任何意见与在使用中遭遇任何问题,请前往文档反馈论坛告知我们。

新系统上线运行后,我们会及时通知您的。

发表反馈意见