可変感情可変予定制御

街歩きブログになりつつあるなにか

Google Colabで動画をAV1にエンコードする方法

最初におことわり

  • ハードウェアエンコードではありません。
  • 特別この分野に詳しいわけでもないので、説明に間違いがあるかもしれません。


みんなで使って広めよう、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時間程度かかった。やはり重い...。