
今回は、画像フォーマットのWebPについて、AviUtlでの読み込みと書き出しを試してみたので紹介したいと思います。
WebP Susie Plug-in(TORO’s Library)
AviUtl-WebPFileReader-Plugin(GitHub)
ffmpegOut(GitHub)
FFmpeg Static Auto-Builds(GitHub)
目次
WebP(静止画)の読み込み

TORO’s LibraryさんのページからWebP用Susie Plug-inを入手します。iftwic22.zipをダウンロードし、解凍します。
WebP Susie Plug-in(TORO’s Library)

解凍したファイルの中から、iftwebp.spiというファイルをAviUtlのexedit.aufと同じ階層に置きます。
これで導入完了、WebP(静止画)を読み込むことができるようになります。
WebP(アニメーション)の読み込み

続いてWebP(アニメーション)を読み込めるようにします。
Mr-OjiiさんのページからAviUtl-WebPFileReader-Pluginを入手します。右側にあるReleasesから最新のバージョンをダウンロードします。
AviUtl-WebPFileReader-Plugin(GitHub)

解凍したファイルの中からwebpinput.auiというファイルをAviUtlのpluginsフォルダ内に置く、またはaviutl.exeと同じ階層に置きます。
同時にVisual C++ 再頒布可能パッケージ 2015-2022 X86の導入が挙げられているので、未導入の方は導入してください。

プラグインの導入後は、環境設定>入力プラグイン優先度の設定からWebP File ReaderをL-SMASH Works File Readerよりも上に置くことが推奨されています。
これでWebP(アニメーション)の方も導入完了となります。
ファイルの関連付け

exedit.iniをメモ帳等で開き.webpを関連付けます。
WebPを静止画として扱うことが多ければ.webp=画像ファイルとして関連付けます。アニメーションとして扱うことが多ければ.webp=動画ファイルとして関連付けます。


.webp=画像ファイルと関連付けていても、動画ファイルオブジェクトを出してファイルを指定すればアニメーションとして読み込むことができます。
.webp=動画ファイルで関連付けていた場合は、同様に画像ファイルオブジェクトを出してファイルを指定します。
.gifや.webpのように画像でもありアニメーションでもあるファイルは動画ファイルや画像ファイルから指定すればどちらでも読み込み可能です。ちなみに、ファイルを設定ダイアログに投げ込むだけでも読み込めます。
WebP(静止画)とWebP(アニメーション)の書き出し
ffmpegOutの導入


AviUtlでWebP出力をするためにrigayaさんのffmpegOutを利用します。Releasesから最新版をダウンロードします。
ffmpegOut(GitHub)
Aviutl_ffmpegOut_x.xx.zipをダウンロードし、解凍します。解凍した中身をすべてAviUtlフォルダにコピーすれば導入完了です。

exe_filesフォルダの中にffmpeg.exeがあります。
ffmpegOutに同梱されているffmpeg.exeは放っておくと段々と古くなっていきます。出力時にエラーが出たり、上手くいかないなぁとなったらffmpeg.exeの更新を考えます。

FFmpeg Static Auto-Builds(GitHub)からReleasesページへ。

いっぱいありますが、ffmpeg-master-latest-win64-gpl.zipをダウンロードします。
解凍後、binフォルダにあるffmpeg.exeをコピーし、exe_filesフォルダのffmpeg.exeと入れ替えます。
ffmpeg出力

何らかの編集後、プラグイン出力からffpmeg出力を選択します。

ビデオ圧縮ボタンから設定を出します。

こちらはデフォルト。

出力拡張子を.webpにします。
WebPにアルファチャンネルを付ける場合は転送色空間をrgbaにします。
WebPに音声はないので音声を有効のチェックを外します。お好みで2passエンコードにチェックを入れます。
基本的にはこれだけでもWebPとして出力できます。
コマンド
ffmpeg出力ではコマンドを指定することでカスタマイズできます。
-lossless 0 --非可逆圧縮 デフォルト
-lossless 1 --可逆圧縮(無劣化)
-q:v 数値 --品質指定 0-100の範囲 デフォルトは75
-compression_level 数値 --圧縮レベル 0-6の範囲 デフォルトは4
WebP(静止画)、WebP(アニメーション)ともに使えるコマンドです。
-lossless はデフォルトが-lossless 0の非可逆圧縮なので、無劣化で出力したいときだけ使うコマンドです。
-q:v の品質指定は非可逆圧縮で有効になります。出力したファイルサイズの調整はこの品質指定によるものが大きいです。
-compression_level は圧縮レベルの設定です。1や2は低圧縮だけど短時間出力、6は高圧縮だけど長時間出力になります。6はアニメーションだとかなり時間がかかるので静止画向きかも。
-r 数値 --フレームレート デフォルトは元動画と同じ
-loop 0 --無限ループ
-loop 1 --1回再生(ループしない) デフォルト
WebP(アニメーション)では-r でフレームレートを設定できます。主に削減用で30fpsの動画を-r 10で10fpsにするときに使います。
30fpsの動画を-r 60にして60fpsにはできません。
-loop はデフォルトが-loop 1で1回再生する設定です。無限ループさせたい場合は-loop 0にします。
-c:v libwebp --コーデックの指定 静止画用
-c:v libwebp_anim --コーデックの指定 アニメーション用
動画の中の1フレームをWebP(静止画)として出力する場合、-c:v libwebpの指定をすると良いと思います。
元々動画を読み込んで編集している場合は自動で判定されるようで問題ないかなと思います。
ただ、AviUtl内で作ったモーションやエフェクトをかけた画像など、動画ファイル以外の1フレームだけ選択して出力する場合は、明示的に-c:v libwebpと指定した方が良いかなと思います。
コマンド例
-loop 0
WebP(アニメーション)用。無限ループの設定です。特に指定が無ければ品質はデフォルトの75になっています。
-q:v 60 -r 10 -loop 0
品質60、10fps、無限ループ。品質を落とし、フレームレートも落として軽量化。
-c:v libwebp -lossless 1
WebP(静止画)用。libwebpを明示して、可逆圧縮(無劣化)に。AviUtl側では1フレームだけ選択。
-c:v libwebp -q:v 50
こちらもWebP(静止画)用。品質50で画質を落として軽量化。
品質はどのくらいがいいのか最初はわかりません。なので、まずはコマンド欄になにも書かずにすべてデフォルトで出力してみるのも良いと思います。
デフォルトの結果を見て品質を下げるようにすると上手く軽量化できると思います。
いかがだったでしょうか。
AviUtlでWebPの読み込みと書き出し、機会があれば是非試してみてください。
