Unity3D 播放透明视频的两种方法

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) 三种格式的影片下载连结。

                                   Unity3D 播放透明视频的两种方法

VideoPlayer — 支援 VP8 编码格式

我们要用 Media Encoder 输出 .webm 的影片,所以首先要安装 WebM for Premiere,这是一个免费的 Premiere、Media Encoder Plugin ,在网页右边根据自己的作业系统下载即可。

                             Unity3D 播放透明视频的两种方法

安装完之后就可以在 Media Encoder 里看到 WebM 格式。

                        Unity3D 播放透明视频的两种方法

                                                                                       格式选择 WebM

                                                   Unity3D 播放透明视频的两种方法

                                                                                    视讯  > Codec 选择 VP8

                                                   Unity3D 播放透明视频的两种方法

                                                                          把下方的 Include Alpha Channel 打勾

比较需要注意的是,如果要输出包含声音的影片,记得把声音的编码格式改成 Vorbis,如果没有改的话在 Unity 里会报错显示不支援 OPUS 声音格式。

                                                        Unity3D 播放透明视频的两种方法

                                                                      音讯  >Codec setting > Codec 选择 Vorbis

接著把输出的影片丢到 Unity 里面,从 Inspector 的预览画面应该就能看出影片是透明的。   

                                           Unity3D 播放透明视频的两种方法

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

直接把影片拖拉到 Hierarchy 上后会自动产生一个 VideoPlayer,指定 Camera 后直接执行,就能看到 Transparent Video 的效果了。

                                                                    Unity3D 播放透明视频的两种方法

                                                                           Camear 设定为 Main  Camera

             Unity3D 播放透明视频的两种方法

AVPro — 支援 HAP 编码格式

首先要有 AVPro 这个插件。虽然在 AssetStore 上只有要价 450美金(!)的付费版,不过其实在官方网站底下可以下载免费试用版。

Adobe 系列目前似乎没有直接输出 HAP 格式的方式,所以要把影片输出之后再做一次转档,有两种转档方式:

  1. 下载 HAP 的 QuickTime Codec,透过 QuickTime Pro 的汇出功能,把影片另存成 HAP 编码的格式。

                      Unity3D 播放透明视频的两种方法

                                                                         下載 ffmpeg,以 Windows 為例

从 Affect Effect 输出影片,在 Render Queue 设定格式选择 QuickTime,Channels 选 RGB+Alpha 输出即可。当然要选 AVI 也可以,不过以本篇的 5秒钟影片为例,AVI 格式输出后的容量高达 1GB 以上,QuickTime (.mov)只要15MB左右…

                                   Unity3D 播放透明视频的两种方法 

方法一:用 QuickTime Pro 转档

要先安裝 HAP Codec for QuickTime

                        Unity3D 播放透明视频的两种方法

                                                                     用 QuickTime 开启影片,档案 >  汇出

                        Unity3D 播放透明视频的两种方法

                                                      选项 > 设定 > 压缩类型 > 选择 HAP Q Alpha 或是 HAP Alpha

转好档之后,到 Unity 汇入 AVPro。先简单设定一下 AVPro Video uGUI,以下动图给没用过 AVPro 的人参考。

Unity3D 播放透明视频的两种方法

以下是比较需要注意的地方!设定好影片路径之后,还要到 Platform Specific 标签底下设定 Preferred Video API,改成 Direct Show

                                               Unity3D 播放透明视频的两种方法 

                       Unity3D 播放透明视频的两种方法

如果没有把 Preferred Video API 改成 Direct Show 的话,执行时会报错:Error: Loading failed. File not found, codec not supported, video resolution too high or insufficient system resources.

按下执行,应该就会看到 Transparent Video 的效果了!

   Unity3D 播放透明视频的两种方法

下载连结总整理

QuickTime:下載頁面

HAP codec for QuickTime:下載頁面

ffmpeg:下載頁面

ffmpeg 指令參考:Github 連結

WebM for Premiere:下載頁面

AVPro:官方網站

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

                                 

                                        个人实际使用总结

  1. 视频人员导出视频必须是HAP Q Alpha 或是 HAP Alpha 格式的。具体怎么操作把这个链接扔给专业的视频制作人员。
  2. 如果视频格式正确,导出视频在Unity 中 播放(加载)不出来,把视频尺寸改为 偶数 或者 2的n次方