最初におことわり
- ハードウェアエンコードではありません。
- 特別この分野に詳しいわけでもないので、説明に間違いがあるかもしれません。
みんなで使って広めよう、AV1とAVIF。
HEVC(H.265)であれば手元のPCでハードウェアエンコードできるのだが、AV1は対応しておらずCPUでエンコードするしかない。しかし、あまりPCに負荷を掛けまくりたくはない。そこでGoogle先生のコンピュータにやってもらおうということで、Google Colaboratory上でのエンコード方法についてメモしておく。
FFmpegをインストール。実はColabにFFmpegは入っているのだが、AV1のライブラリは含まれていなかったため、ここではライブラリが含まれたものをインストールしなおしている。
!bash <(curl -s https://raw.githubusercontent.com/XniceCraft/ffmpeg-colab/master/install)
ディレクトリを移動して、エンコードを実行。直接ファイルをアップロードしてもいいが、これがかなり低速なので、Google ドライブを接続するのがおすすめ。
%cd /content/drive/MyDrive !ffmpeg -i "input.mp4" -c:v libsvtav1 -crf 32 -preset 6 -c:a copy "output.mp4"
AV1へのエンコードには、SVT-AV1というエンコーダを使用する。速度面で優れているらしい。
ビットレートや画質は特にこだわりがないので、CRF(Constant Rate Factor)で設定。自動でいい感じにやってくれるはず。値が小さいほど高画質で、値が大きいほど圧縮率が高くなる。
プリセットについて端的に説明すれば、値が小さいほど精度が高くなり、値が大きいほど高速になるらしい。以下に詳細が記載されていた。私的な用途であれば4-6くらいがいいらしい。
gitlab.com
1080pで20分強の動画で2時間程度かかった。やはり重い...。