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
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsICM38FdsYkRGZkRG9lcvx2bjxiNx8VZ6l2cs0TPn1UeBRUTpx2MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnL2AjMxUzM1MTM5AjMxkTMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
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還有很多其他的函數用于控制視訊的播放
播放視訊流和圖檔序列等媒體檔案與上面的步驟類似,可參考官方文檔。