简介:

在日常使用UE4做项目时,会遇到在UE4里播放视频文件的需求,在UE4中可以使用媒体框架(Media Framework)来实现这一功能。这里介绍两种简单的方法来使用这一功能,分别是在场景里播放视频和在UI中播放视频。(引擎4.22版本)

方法:

首先我们要有一个视频文件,在官方文档中提到建议使用H.264编码的MP4 (.mp4)容器文件,所以为保险起见最好把其他格式的视频文件转换为.mp4格式。

工程文件夹Content中新建一个文件夹命名为Movies,将视频文件放在此路径下,注意文件夹命名一定要是Movies,这样才能够打包成功。(项目名称\Content\Movies

接下来就要在编辑器中操作了:

首先要新建一个File Media Source,打开之后在File Path中选择刚才放在项目名称\Content\Movies路径下的视频文件,保存:

再新建一个Media Player

新建时会弹出一个对话框,提示是否为其创建Media Texture,这里选中它:

新建完成后就会自动生成一个后缀为_VideoMedia Texture

点开这个Media Player有三个选项需要注意一下,分别是Play on Open(自动播放)、Shuffle(随机播放)、Loop(循环播放):

这里我们选中Play on Open(不需要加载就播放,可以不勾选)

随后我们鼠标右击这个Media Texture,选择创建材质

打开这个材质后,要注意材质的Material Domain,如果用在场景里要设置为Surface,如果要用在UI中则要设置为User Interface,这点很重要!!

在场景中播放动画和在UI中播放动画两种方法,在这里就有区别了。下面就分成两部分介绍:

1、在场景中播放视频

在上一步把Material Domain设置为Surface,新建一个蓝图类,绑定一个Plane,设置好Plane的大小,把刚才设置好的材质设置给Plane

在蓝图中新建一个变量,变量类型为Media Player,然后编译一下,在默认变量中选择刚才创建的Media Player

在蓝图中写如下节点,以获取视频源,注意节点中的Media Source要设置为最开始创建的File Media Source

然后就可以通过内置的蓝图节点来控制播放了,其中Play为播放Pause为暂停Close为停止视频(如果要重新播放则需要再次执行上图的Open Source节点):

这里使用FlipFlop节点来实现切换播放/暂停

但此时视频播放时并没有声音,所以我们要在这个蓝图类中添加一个组件:MediaSound

在其细节面板中选择之前的Media Player

这样视频播放时就会有声音了,同样的我们可以用蓝图节点来控制音量大小:

最后在把这个Plane的蓝图类放进场景里就可以看到效果了。

2、在UI中播放视频

在之前创建的材质中设置Material DomainUser Interface并保存:

在需要播放视频的UI控件中添加一个Image,把设置好的材质设置给这个Image:

然后在这个UI中新建一个类型为MediaPlayer的变量:

最后在事件蓝图里写以下节点,注意节点中的Media Source要设置为最开始创建的File Media Source

这样就可以在UI生成时在UI中播放视频了:

但是在UI中播放会没有音频输出,官方文档里也没有提到解决的办法,如果有什么办法或者错误请在评论中提出

转载链接:

在UE4中播放视频 - 知乎

官方文档:

媒体框架​docs.unrealengine.com/zh-CN/Engine/MediaFramework/index.html

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐