简介:
在日常使用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,这里选中它:
新建完成后就会自动生成一个后缀为_Video的Media 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 Domain为User Interface并保存:
在需要播放视频的UI控件中添加一个Image,把设置好的材质设置给这个Image:
然后在这个UI中新建一个类型为MediaPlayer的变量:
最后在事件蓝图里写以下节点,注意节点中的Media Source要设置为最开始创建的File Media Source:
这样就可以在UI生成时在UI中播放视频了:
但是在UI中播放会没有音频输出,官方文档里也没有提到解决的办法,如果有什么办法或者错误请在评论中提出
转载链接:
官方文档:
媒体框架docs.unrealengine.com/zh-CN/Engine/MediaFramework/index.html