さくらのレンタルサーバーでもAVIFが作れたらいいよねというのでやってみた。
前提
- シェルにzshを使っている。さくらのレンタルサーバーのデフォルトシェルはcshなので注意されたし。
~/binにパスが通っている
やり方
アセンブラのビルド
cd ~ wget https://www.nasm.us/pub/nasm/releasebuilds/2.16.03/nasm-2.16.03.tar.xz tar xf nasm-2.16.03.tar.xz cd nasm-2.16.03 ./configure --prefix=$HOME gmake -j4 && gmake install export PATH=$HOME/bin:$PATH nasm -vlibavifのビルドとゴミ掃除
cd ~ git clone -b v1.2.1 https://github.com/AOMediaCodec/libavif.git sed -i '' 's|^static_assert(sizeof(off_t) == sizeof(int64_t), "");|/* & */|' libavif/src/io.c cmake -S libavif -B libavif/build -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=OFF \ -DAVIF_CODEC_AOM=LOCAL -DAVIF_LIBYUV=LOCAL -DAVIF_LIBSHARPYUV=LOCAL \ -DAVIF_JPEG=LOCAL -DAVIF_ZLIBPNG=LOCAL -DAVIF_BUILD_APPS=ON cmake --build libavif/build --parallel 1 cp ~/libavif/build/avifenc bin/ rm -Rf libavif nasm-2.16.03 nasm-2.16.03.tar.xz- avifを作る
avifenc -q 65 -y 420 -s 6 --ignore-xmp src.jpeg out.avif
あとがき
これを活用すればさくらのレンタルサーバーでもavifを作れるようになるので、任意のCMSから蹴ればサムネイルの軽量化とかができるかもしれない。注意点としてコマンドライン呼び出しになるため任意コマンドが実行されないように注意する必要はある。
ビルドはnice不要で、avifの生成についても4000x3000のJPEGをAVIFにするのはniceなしで行けた。
レンタルサーバーにないバイナリをソースコードからビルドして使うという意味で、本記事はさくらのレンタルサーバーにNode.jsをインストールするの親戚記事である。