UE4的媒體框架(https://docs.unrealengine.com/en-US/Engine/MediaFramework/index.html)可用於播放本地視頻、視頻流以及圖片序列。可以利用這些功能實現在場景中播放視頻,例如在場景中有一個電視機模型,可以通過按鍵交互控制電視畫面的播放、暫停以及關閉。
以播放單個視頻爲例,需要的資源有:
1、視頻文件:將MediaPlayer支持的視頻格式文件放到Content/Movies目錄下
2、視頻源:FileMediaSource或者StreamMediaSource,本地視頻就是視頻文件路徑,視頻流就是URL(官方Demo:https://docs.unrealengine.com/Attachments/Engine/MediaFramework/HowTo/StreamMediaSource/Infiltrator%20Demo.mp4)
3、視頻播放器:MediaPlayer,可用於播放視頻源
4、視頻幀貼圖:MediaTexture,MediaPlayer只能用於播放視頻源,不能顯示在場景中,但是可以將視頻幀渲染到MediaTexture中,再通過MediaTexture創建材質賦予模型
5、視頻幀材質:Material,將MediaTexture作爲紋理貼圖,從而顯示到模型表面
下面是具體的實現步驟。
將Demo.mp4文件放到Content/Movies目錄下,Movies目錄下的媒體文件在打包之後會一起復制到打包目錄下,如果在其他目錄要額外設置。
創建一個FileMediaSource,命名爲VideoSource
FilePath引用到Demo.mp4
創建MediaPlayer,命名爲VideoPlayer
創建MediaPlayer時會彈出對話框,對話框中勾選Video output Media Texture asset項可以同時創建對應的MediaTexture,如果未勾選也可以自行創建
雙擊打開VideoPlayer,在左下角能看到所有的MediaSource列表,雙擊任何一個就可以播放該視頻,在右下角的Details面板有一些設置項,可將鼠標懸停查看說明
創建MediaTexture,命名爲TVTexture,如果上面已經創建直接重命名就可以了
打開TVTexture,將MediaPlayer屬性值引用到VideoPlayer
在內容瀏覽器中TVTexture資源上右鍵CreateMaterial創建材質,命名爲TVMaterial
打開關卡藍圖,創建一個MediaPlayer類型的變量,默認值設置爲上面創建的VideoPlayer
在關卡藍圖中添加空格按鍵鍵事件,藍圖代碼如下
OpenSource用於打開視頻源,在Play之前至少調用一次,停止播放的函數爲Close,還可以增加一個關閉視頻功能
在關卡中加入一個平面作爲視頻播放屏幕(電視機屏幕),調整位置大小和方向,完成以上步驟後運行,按下空格鍵控制視頻的播放和暫停,退格鍵關閉視頻
MediaPlayer還有很多其他的函數用於控制視頻的播放
播放視頻流和圖片序列等媒體文件與上面的步驟類似,可參考官方文檔。