頂置文

========================= [頂置文開始] =========================
獨立遊戲「蠟筆大冒險」專頁

JJKid 常出沒地點:




========================= [頂置文結束] =========================

2020年6月5日 星期五

用 After Effects 製作帶有 Alpha 的 Webm 影片 (並使用 Unity Video Player 播放)

前提,為什麼需要輸出成 Webm?
因為使用 Unity VideoPlayer 播放帶有 Alpha 格式的影片就必須是 Webm。

看看最終在 Unity 的測試結果,真的會透明。 (廢話)
需要準備的材料有:

  1. After Effects
  2. ffmpeg (官方載點,下載後解壓縮備用)



步驟一:在 AE 製作影片
沒啥好說的,就是 AE。



步驟二:AE 輸出帶有 Alpha 的檔案

輸出的格式選用「FLV」。
Channels 選用「RGB + Alpha」。


有興趣可以再看看 Format Options 裡面有些 bitrate 設定,和之後的轉檔有些關係。這裡我用預設值。



步驟三:使用 ffmpeg 將 FLV 轉為 WebM

開啟 cmd 視窗 ( 快捷鍵 windows + R,輸入 cmd,然後 enter)
切換到 ffmpeg 的 bin 資料夾,輸入以下指令

ffmpeg -i in.flv -c:v libvpx -b:v 2M -c:a libvorbis -auto-alt-ref 0 out.webm


簡單解釋一下每個參數的意義

-i in.flv:影片來源,檔名是 in.flv。
-c:v libvpx:Video codec 使用 libvpx,也就是我們需要的 VP8 編碼。
-b:v 2M:代表「目標」bitrate 要盡可能達到這個數字,不指定的話會用預設的 bitrate 去轉檔,通常品質很差。然後我這裡用 2M 是有點太多了,1M 已經品質很好。
-c:a libvorbis:Audio codec 使用 libvorbis。
-auto-alt-ref 0:我也不知道什麼意思,但只要影片帶有 alpha 的就必須加這個。

到這一步已經成功做出帶有 alpha 的 webm。



步驟四:使用 Unity VideoPlayer 播放

影片丟進 Unity 之後會被自動識別。

新增一個 Render Texture,指定寬高。

新增一個空物件,掛上 VideoPlayer,把匯入的影片與 Render Texture 接一接。

最後,在 uGUI 裡新增一個 RawImage,把 Render Texture 指定好,就可以播了。

有 Alpha 的影片很讚吧。



還有沒有其它做法?

當然有,列出幾個搜尋到 + 朋友分享但我自己沒試的做法。
  1. 在 Premiere 安裝可以輸出 webm 格式的外掛。用 Premiere 匯入 AE 專案直接輸出 webm。
  2. 使用轉檔軟體,例如格式工廠、XXXX Video Converter (有很多這種名稱的軟體)。自己試過 Any Video Converter 轉檔失敗。
  3. 線上轉檔服務,例如這個



相關連結

ffmpeg 轉檔 VP8 編碼文件


使用 VideoPlayer 播放透明影片的文章

--

沒有留言:

張貼留言