文章目录
前言
参考官方文档实现了一下播放在线视频的流程,在已有url的情况下可以顺利播放。
本文的写法不会完全复刻官方文档,旨在理解流程的基础上,实现在VR模板中通过屏幕(staticmesh而不是UMG)播放在线视频的效果。如果需要详细流程及框架的讲解,建议阅读官方文档。
官方文档链接:play a video stream
建议使用官方文档的英文版面,中文或日文版面可能存在排版上的问题。
但是如果想播放视频网站中的视频,如b站、youtube等里面的视频,可能还需要更多的工作(如爬取视频的真实url)。或者由视频源合作方直接提供url。
一、文件核心资产
1. 流媒体源 stream media source
简单理解,它就是保存url的容器;我在这里应用官方给出的实例视频url。
https://docs.unrealengine.com/Attachments/WorkingWithMedia/MediaFramework/HowTo/StreamMediaSource/Infiltrator%20Demo.mp4
后面补充几个自己找的供测试的url
https://v-cdn.zjol.com.cn/277003.mp4
https://stream7.iqilu.com/10339/upload_transcode/202002/09/20200209105011F0zPoYzHry.mp4
https://vfx.mtime.cn/Video/2019/01/15/mp4/190115161611510728_480.mp4
测试的时候直接用待测试url替换stream url即可
2. 媒体播放器 Media Player
媒体播放器,也可以理解为整体控制媒体播放的控件,在创建时,引擎会询问是否创建media texture资源,勾选;当然不勾选的话,也可以在后面自行创建media texture并添加引用即可。关键的关联到我们熟悉的东西的就是这个媒体纹理(Media Texture)
媒体纹理在使用时与普通纹理贴图并没有什么大的区别。新建材料,将媒体纹理作为BaseColor输出,并将材质赋予场景中的静态网格体。与普通材质赋予并无本质差别,具体操作可参照下列图片流程:
创建材质
纹理采样并输出到BaseColor(Diffuse)通道
创建材质实例
为静态网格体(staticmesh)创建在关卡中的实例
赋予材质实例
二、蓝图调用
1. 总体概览
关卡蓝图编辑:开始事件->添加媒体声音组件->添加源播放组件
2. 媒体声音组件 Add media sound component
负责声音的播放:
在细节面板选择通道及赋予我们之前创建的Media Player
3. 打开源 Open Source
创建MidiaPlayer变量,并修改类型为MediaPlayer,在编译后赋予默认值(添加引用),即我们之前创建的MediaPlayer控件
该处使用的url网络请求的数据。
此时,运行关卡就可以看到网络流媒体可以自行播放。
总结
照着官方文档做并没有太大的难度,但是真正要做对对某个视频网站进行应用内的转播还是需要额外的工作,关于视频流的底层和网络视频的原理我了解的不是很清晰,大概知道一点就是url是视频在网络上的真实存储地址,视频网站应该是在这个地址的基础上进行了一定程度的安全措施,可能需要一定的逆向工程来找到视频的真实地址才能够实现我预想的效果(留待日后探索…)。
另外一点需要摸索的是,关于媒体播放的控制,即媒体视频的暂停,倒放,快进,拖动播放等,蓝图应该也提供了对应的函数节点,同样留待日后探索补充。