解決したいこと
アルファチャンネル付きの動画をモバイルで再生させたい
※ 今回の手法はモバイルだけでなく他のプラットフォームでも可能ですが、動作は未確認になります。
どう再生するか
公式の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 |
動画を変換する
今回変換する元の動画(スクショ)
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
変換後
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
変換後
Unityに組み込む
1. AVProをインポート
2. 変換した動画を入れる
3. 任意のオブジェクトにMediaPlayerをアタッチ
4. 変換した動画のパスをSourcePathに指定
5. Visualの項目のTransparencyを[Top Bottom]、または[Left Right]に指定
6. 任意の再生させたいMeshに適応させればモバイルでも透過した動画を再生させることができる