Unity3D 播放透明视频的两种方法
外网原文章链接
本篇教学会说明如何输出可以用 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) 三种格式的影片下载连结。
VideoPlayer — 支援 VP8 编码格式
我们要用 Media Encoder 输出 .webm 的影片,所以首先要安装 WebM for Premiere,这是一个免费的 Premiere、Media Encoder Plugin ,在网页右边根据自己的作业系统下载即可。
安装完之后就可以在 Media Encoder 里看到 WebM 格式。
格式选择 WebM
视讯 > Codec 选择 VP8
把下方的 Include Alpha Channel 打勾
比较需要注意的是,如果要输出包含声音的影片,记得把声音的编码格式改成 Vorbis,如果没有改的话在 Unity 里会报错显示不支援 OPUS 声音格式。
音讯 >Codec setting > Codec 选择 Vorbis
接著把输出的影片丢到 Unity 里面,从 Inspector 的预览画面应该就能看出影片是透明的。
Keep Alpha 其实不打勾也行...
直接把影片拖拉到 Hierarchy 上后会自动产生一个 VideoPlayer,指定 Camera 后直接执行,就能看到 Transparent Video 的效果了。
Camear 设定为 Main Camera
AVPro — 支援 HAP 编码格式
首先要有 AVPro 这个插件。虽然在 AssetStore 上只有要价 450美金(!)的付费版,不过其实在官方网站底下可以下载免费试用版。
Adobe 系列目前似乎没有直接输出 HAP 格式的方式,所以要把影片输出之后再做一次转档,有两种转档方式:
- 下载 HAP 的 QuickTime Codec,透过 QuickTime Pro 的汇出功能,把影片另存成 HAP 编码的格式。
下載 ffmpeg,以 Windows 為例
从 Affect Effect 输出影片,在 Render Queue 设定格式选择 QuickTime,Channels 选 RGB+Alpha 输出即可。当然要选 AVI 也可以,不过以本篇的 5秒钟影片为例,AVI 格式输出后的容量高达 1GB 以上,QuickTime (.mov)只要15MB左右…
方法一:用 QuickTime Pro 转档
要先安裝 HAP Codec for QuickTime。
用 QuickTime 开启影片,档案 > 汇出
选项 > 设定 > 压缩类型 > 选择 HAP Q Alpha 或是 HAP Alpha
转好档之后,到 Unity 汇入 AVPro。先简单设定一下 AVPro Video uGUI,以下动图给没用过 AVPro 的人参考。
以下是比较需要注意的地方!设定好影片路径之后,还要到 Platform Specific 标签底下设定 Preferred Video API,改成 Direct Show。
如果没有把 Preferred Video API 改成 Direct Show 的话,执行时会报错:Error: Loading failed. File not found, codec not supported, video resolution too high or insufficient system resources.
按下执行,应该就会看到 Transparent Video 的效果了!
下载连结总整理
QuickTime:下載頁面
HAP codec for QuickTime:下載頁面
ffmpeg:下載頁面
ffmpeg 指令參考:Github 連結
WebM for Premiere:下載頁面
AVPro:官方網站
本篇使用的 Sample 影片(Google Drive):.mov(Animation) .webm(VP8) .mov(Hap Alpha)
个人实际使用总结
- 视频人员导出视频必须是HAP Q Alpha 或是 HAP Alpha 格式的。具体怎么操作把这个链接扔给专业的视频制作人员。
- 如果视频格式正确,导出视频在Unity 中 播放(加载)不出来,把视频尺寸改为 偶数 或者 2的n次方