透過情報付きの動画(WebM)をAviUtlとffmpegを使って作ってみる
意味はないけど、配信のシーンチェンジをカスタマイズして、個性を出したい!という衝動で動画を作ったはいいものの…
動画、重すぎない?(音声無し、FHD、60FPS、120フレームの動画)
https://scrapbox.io/files/61488c646d5eaf00230678ec.png
どうやらUt Video Codecなるものがあるらしい。
Aviの可逆圧縮コーデックで、RGBAに対応。
https://scrapbox.io/files/61488f854da3e9001d28ba17.png
結果としては9割圧縮に成功。
…それでも大きいような。
というわけで透過情報を持たせることのできる動画についていろいろ調べると、WebMがあるとの情報。
AviUtlには透過情報を持ったWebMを直接出力できるプラグイン的なのが無かったっぽいので、他の方法を模索。
結果としては、連番bmpからffmpegを使って動画化しました。
気になる容量は…。
https://scrapbox.io/files/6148905c92e31c001d3afa59.png
未圧縮に比べて0.004%…(計算ミスってそう)
かなりの軽量化に成功しました。
長々とした前置きはここまでにして具体的な方法を以下より示します。
連番bmpで出力
プラグイン出力 → 拡張編集ABI/BMP出力(RGBA)
https://scrapbox.io/files/6148889ff243bf001dda72a7.png
末尾に0埋めでフレーム番号つけてくれるっぽいのでそれを踏まえた名前にするといいかも
Win10標準の画像ビューアで見ると、透過情報がなさそうなのですがクリスタを使うとしっかり透過されていました。
https://scrapbox.io/files/614892016d9710001d6edf62.png
(クリスタの設定を変更しているため透明色がちょっと見づらい)
ffmpegから出力
環境はWSL(Ubuntu)から
code:ex_webm
$ ffmpeg -r 60 -i hoge%04d.bmp -auto-alt-ref 0 fuga.webm
# オプション
# -r : フレームレート
# -i : データ (%04dは0埋め4桁の連番)
# -auto-alt-ref : よく知らんけど参考サイトにあった。alternate reference frames(2-pass only)。0=無効、1=有効
VP8で出力するとなんか色が劣化するのでVP9で(つまりデフォルトでOK)
https://scrapbox.io/files/6148822ebebae30021a029c8.png
今回は使用ソフト(OBS)がVP9に対応していたためVP9で出力。
VP8で出力したい場合は、オプションに -c:v libvpx を足せばできるらしいです。
完成
余談
音声をつけたいときは、AviUtlで音声をWAV出力して合わせればいいのかなぁ~なんて思っています。
この方法を行った約1週間後、どうやらこの作業が不要になったらしい…?
偉大なる参考記事
nakamura001 様
強火で進め - 透過付きの動画ファイル(WebM)の作成方法