[Unity ] 透過動画(WebM VP8)を作ったときのメモ

  • 投稿日:
  • by
  • カテゴリ:

Unityでサポートしているアルファチャンネル付き動画の形式はWebM(動画コーデックはVP8、音声コーデックはVorbis)。

FFmpegを使って、PNG連番画像をWebMにするなら下記で良い。

ffmpeg -r 30 -i frames\%04d.png -auto-alt-ref 0 -c:v libvpx -b:v 5M output.webm

今回、音声コーデックがOpus形式のWebMファイルがあり、そのままではUnityで読み込めないためVorbis形式に変換する必要があった。
一発でいけるかもしれないけど、うまくできなかったので下記のような手順を踏んだ。
1)サウンドだけ抜き出す

ffmpeg -i original.webm -acodec libmp3lame -aq 4 sound.mp3

2)映像をいったん連番PNGに書き出す

ffmpeg -vcodec libvpx -i original.webm frames\%04d.png

3)連番PNGをWebMファイルに変換(その際フレームレートを60から30に変換、解像度を640x360に変更、ビットレートは20000kb/s)

ffmpeg -framerate 60 -i frames3\%04d.png -vf fps=30 -s 640x360 -auto-alt-ref 0 -c:v libvpx -pix_fmt yuva420p -metadata:s:v:0 alpha_mode="1" -b:v 20000k -r 30 noSound.webm

4)無音のWebMにサウンド(Vorbisコーデック)をつける

ffmpeg -i noSound.webm -i sound.mp3 -c:v copy -c:a libvorbis -map 0:v:0 -map 1:a:0 final.webm


なお、Androidで再生する場合は
Unityの映像ファイルのImport SettingsでTranscodeをオンにしてCodecをVP8にする必要がある。

映像をPlaneとかに貼り付けて透過表示するにはマテリアルのシェーダーをUnlit/Transparentにすれば良い。