Unity Transparent Video | 用 VideoPlayer 或 AVPro 播放透明影片

https://medium.com/@pofu.lu/unity-transparent-video-%E7%94%A8-videoplayer-%E6%88%96-avpro-%E6%92%AD%E6%94%BE%E9%80%8F%E6%98%8E%E5%BD%B1%E7%89%87-83b4b6b4aefd

能的可以直接去看原文章


本篇教學會說明如何輸出可以用 AVPro 或 VideoPlayer 播放的透明影片。使用的 Unity 版本是 2018.2。

VideoPlayer 是 Unity 5.6 新增的功能,AVPro 是一個功能強大的付費 Plugin,兩者都可以播放透明影片,不過支援的格式並不一樣。

VideoPlayer 支援的影片檔案格式是 .webm,編碼格式是 VP8;而 AVPro 支援的則是 HAP,是為 macOS 設計的 VJ 影片編碼格式。

開始前,可以先用 Premiere 或是 Affect Effect 做有 Alpha 圖層的影片,這裡我是用 Affect Effect 製作。如果你想要這個影片的 Sample 的話,拉到本頁底下有提供 .mov(Animation) .webm(VP8) .mov(Hap Alpha) 三種格式的影片下載連結。

Unity Transparent Video | 用 VideoPlayer 或 AVPro 播放透明影片_第1张图片

VideoPlayer — 支援 VP8 編碼格式

我們要用 Media Encoder 輸出 .webm 的影片,所以首先要安裝 WebM for Premiere,這是一個免費的 Premiere、Media Encoder Plugin ,在網頁右邊根據自己的作業系統下載即可。

Unity Transparent Video | 用 VideoPlayer 或 AVPro 播放透明影片_第2张图片

安裝完之後就可以在 Media Encoder 裡看到 WebM 格式。

Unity Transparent Video | 用 VideoPlayer 或 AVPro 播放透明影片_第3张图片

格式選擇 WebM

Unity Transparent Video | 用 VideoPlayer 或 AVPro 播放透明影片_第4张图片

視訊 > Codec 選擇 VP8

Unity Transparent Video | 用 VideoPlayer 或 AVPro 播放透明影片_第5张图片

把下方的 Include Alpha Channel 打勾

比較需要注意的是,如果要輸出包含聲音的影片,記得把聲音的編碼格式改成 Vorbis,如果沒有改的話在 Unity 裡會報錯顯示不支援 OPUS 聲音格式。

Unity Transparent Video | 用 VideoPlayer 或 AVPro 播放透明影片_第6张图片

接著把輸出的影片丟到 Unity 裡面,從 Inspector 的預覽畫面應該就能看出影片是透明的。

Unity Transparent Video | 用 VideoPlayer 或 AVPro 播放透明影片_第7张图片

Keep Alpha 其實不打勾也行...

直接把影片拖拉到 Hierarchy 上後會自動產生一個 VideoPlayer,指定 Camera 後直接執行,就能看到 Transparent Video 的效果了。

Unity Transparent Video | 用 VideoPlayer 或 AVPro 播放透明影片_第8张图片

Unity Transparent Video | 用 VideoPlayer 或 AVPro 播放透明影片_第9张图片

AVPro — 支援 HAP 編碼格式

首先要有 AVPro 這個插件。雖然在 AssetStore 上只有要價 450美金(!)的付費版,不過其實在官方網站底下可以下載免費試用版。

Adobe 系列目前似乎沒有直接輸出 HAP 格式的方式,所以要把影片輸出之後再做一次轉檔,有兩種轉檔方式:

  1. 下載 HAP 的 QuickTime Codec,透過 QuickTime Pro 的匯出功能,把影片另存成 HAP 編碼的格式。
  2. 用 ffmpeg 轉檔。

 Unity Transparent Video | 用 VideoPlayer 或 AVPro 播放透明影片_第10张图片

從 Affect Effect 輸出影片,在 Render Queue 設定格式選擇 QuickTime,Channels 選 RGB+Alpha 輸出即可。當然要選 AVI 也可以,不過以本篇的 5秒鐘影片為例,AVI 格式輸出後的容量高達 1GB 以上,QuickTime (.mov)只要15MB左右…

Unity Transparent Video | 用 VideoPlayer 或 AVPro 播放透明影片_第11张图片

方法一:用 QuickTime Pro 轉檔

要先安裝 HAP Codec for QuickTime。

Unity Transparent Video | 用 VideoPlayer 或 AVPro 播放透明影片_第12张图片

用 QuickTime 開啟影片,檔案 > 匯出

Unity Transparent Video | 用 VideoPlayer 或 AVPro 播放透明影片_第13张图片

選項 > 設定 > 壓縮類型 > 選擇 HAP Q Alpha 或是 HAP Alpha

方法二:用 ffmpeg 轉檔 ( 以 Windows 為例 )

Unity Transparent Video | 用 VideoPlayer 或 AVPro 播放透明影片_第14张图片

將下載好的 ffmepg 解壓縮後,按著 Shift 鍵對 bin 資料夾點右鍵 > 在這裡開啟 PowerShell 視窗

輸入轉檔指令

ffmpeg -i yourSourceFile.mov -c:v hap -format hap_alpha outputName.mov

Unity Transparent Video | 用 VideoPlayer 或 AVPro 播放透明影片_第15张图片

以上圖為例,影片 Comp 1 是放在 D槽的根目錄,轉檔後的影片名字為 Comp 2 位置在 D槽

轉好檔之後,到 Unity 匯入 AVPro。先簡單設定一下 AVPro Video uGUI,以下動圖給沒用過 AVPro 的人參考。

Unity Transparent Video | 用 VideoPlayer 或 AVPro 播放透明影片_第16张图片

以下是比較需要注意的地方!設定好影片路徑之後,還要到 Platform Specific 標籤底下設定 Preferred Video API,改成 Direct Show。

Unity Transparent Video | 用 VideoPlayer 或 AVPro 播放透明影片_第17张图片

Unity Transparent Video | 用 VideoPlayer 或 AVPro 播放透明影片_第18张图片

下載連結總整理

QuickTime:下載頁面

HAP codec for QuickTime:下載頁面

ffmpeg:下載頁面

ffmpeg 指令參考:Github 連結

WebM for Premiere:下載頁面

AVPro:官方網站

本篇使用的 Sample 影片(Google Drive):.mov(Animation) .webm(VP8) .mov(Hap Alpha)

你可能感兴趣的:(unity)