のしメモ アプリ開発ブログ

Unityアプリとかロボットとか作ってるときに困ったこととかメモ

アルファチャンネル付き動画をモバイルで再生させる

解決したいこと

アルファチャンネル付きの動画をモバイルで再生させたい
※ 今回の手法はモバイルだけでなく他のプラットフォームでも可能ですが、動作は未確認になります。

どう再生するか

公式のVideoPlayerはアルファチャンネルつきでも再生可能ですが、WebMへの変換をしないといけません。今回はWebMへの変換をせずに再生してみます。
WebMで再生する場合は下記をご参照ください。
tsubakit1.hateblo.jp

今回はAVPro(有料Aseet)を利用し、動画とアルファチャンネルの情報を別にして変換し再生します。
これにより、アルファチャンネル自体は読みにいかなくなるので、それなりに安定して動作する…はず?
ちなみにAVProは TOP BOTTOM式、LEFT RIGHT式に対応しています。

AVProはこちら

動作確認環境

開発環境 Windows 10
Unity5.6.5p1
AVPro 1.7.5
ffmpeg 20180227-fa0c9d6 3.4.2
確認環境 Android 7.0

動画を変換する

今回変換する元の動画(スクショ)

f:id:noshipu:20180309144749p:plain

TOP BOTTOM式

変換したい動画の名前をtest.movとし、test_tb.movを書き出したい場合
下記をコマンドラインで実行

ffmpeg -i test.mov -vf "split [a], pad=iw:ih*2 [b], [a] alphaextract, [b] overlay=0:h" -y test_tb.mp4

変換後
f:id:noshipu:20180309145448p:plain

LEFT RIGHT式

変換したい動画の名前をtest.movとし、test_lr.movを書き出したい場合
下記をコマンドラインで実行

ffmpeg -i test.mov -vf "split [a], pad=iw*2:ih [b], [a] alphaextract, [b] overlay=w" -y test_lr.mp4

変換後
f:id:noshipu:20180309145332p:plain

Unityに組み込む

1. AVProをインポート
2. 変換した動画を入れる
3. 任意のオブジェクトにMediaPlayerをアタッチ
4. 変換した動画のパスをSourcePathに指定
5. Visualの項目のTransparencyを[Top Bottom]、または[Left Right]に指定
f:id:noshipu:20180309145757p:plain
6. 任意の再生させたいMeshに適応させればモバイルでも透過した動画を再生させることができる
f:id:noshipu:20180309151138p:plain