スマホで撮った子どもの運動会の動画などのファイルは、H.264などでエンコードされているものの、ファイルサイズがかなり大きくなってしまいがちです。
そんなときは、サイズを変更したり、より効率のいいコーデックでエンコードしたりしますが、最近流行のAV1を使ってみました。
AV1は、AOMedia Video 1の略で、Alliance for Open Mediaという団体が策定したパテントフリーの動画圧縮コーデックです。
とはいえ、新しいコーデックあるあるで、かつてはエンコードの速度が数fpsくらいしか出ず、画質はいいものの実用には堪えない、という代物でした。
ところが最近になって、色々その辺を改善しているエンコーダが出てきていますので、少しご紹介をば。
1は、言わずと知れたマルチエンコーダ・デコーダのffmpegが、Alliance for Open Mediaがリファレンスとして出しているライブラリ「libaom」を使ってエンコードするというもので、画質はかなりよく、圧縮率もかなり高くて2passも使えるのですが、兎に角エンコードが遅く実用には堪えません。
2は、ソフトウェアベースのエンコーダで、1の20~30倍の速度でエンコードできるものです。画質も十分確保されております。
3は、同じくソフトウェアベースのエンコーダで、1と同様の速度でエンコード出来ますが、やはり実用性という点では厳しいかも知れません。
4は、rigayaさんが製作されているIntelのGPU用のハードウェアエンコーダを利用するツールです。H.264やHEVCなどにも対応しており、適切なオプション設定で簡単に音ズレのないエンコードが出来ます。AV1にはIntel GPU(5万円越え)のIntel Arc A750などが必要です。
5は、4のNVIDIA版です。HEVCやH.264のエンコードを200fpsを超えるハイスピードでエンコード出来ます。AV1にはRTX 40XX世代が必要です。
現状、HWに依存せず結構なスピードでエンコードできる2をNotEnoughAV1Encodes経由で利用しています。
ほぼデフォルト設定でも、十分な画質があるように思えます。1や2もこのツールで試すことができるのでおすすめです。
普段はHEVCなどで5を使っているのですが、今後軽い動画はAV1エンコードしていこうかなと思います。
今のところ、60fps化はできるものの、デインタレースの方法が分からず考え中です。
GRN
AVIUtl+patch.auo+自動フィールドシフト インタレース解除プラグイン+svtAV1guiEx(rigayaさん作)の構成で、とりあえずデインタレースは実現。
とりあえず30fpsになりますが、圧縮率が非常に高く画質もよいです。
が、エンコーディング時間もそれなりに掛かります。
私の環境で30分の動画に約58分(もちろん2pass)。
#おま環かもですが、エンコーディングの際にSARを1:1に指定しておかないと、変なアスペクト比になりました…。
GRN
自動フィールドシフト解除プラグインは、やはりrigayaさんの高速化版を使用しています。