No.455
【圧縮】映像エンコード覚え書き・2024改訂版【符号化】
エンコード戦争は終焉に向かったか…
前回のメモから大きな変化があったので更新。
AV1の覇権がほぼ確立されたと思われる。
※2024/2時点の情報
何が変わったのか
ここ2年くらいでFFmpegに大きな変化がふたつあった。
- 速度重視のAV1エンコーダー「SVT-AV1」が「libsvtav1」オプションで指定できるようになった。 FFmpeg5.1(2022/7)
https://trac.ffmpeg.org/wiki/Encode/AV1#SVT-AV1 - 「VAAPI AV1 Encoder」が実装され、SVT-AV1でのAV1エンコード時にGPUアクセラレーションが使用できるようになった。 FFmpeg6.1(2023/11)
FFmpeg 6.1 “Heaviside” Released with VAAPI AV1 Encoder, HW Vulkan Decoding
これによりAV1のエンコードが、AV1用ハードウェアエンコードチップがなくても実用可能な時間になった。
自分の環境でもエンコードが できる ようになったのでさっそく実験。
以前は終わる気配が無かったので、雲泥の差だ。
その前に結論的メモ
昔の映像など(アナログ時代のTV録画など)を保存する場合はAV1のデフォルト(preset=10)でいいと思う。
圧縮速度も速いし、画質優先(preset=6)との違いは正直わからなかった。
再生時に多少CPUパワーを使うけどTVサイズならたいした重さではないし、のちのちハードウェア支援が行われるような環境になると思われるので。
圧縮率
ある画質のH.264を1とするファイルサイズ。
ビットレートをこの分小さくしても画質が保たれる、と考えてOK。
AV1 > H.265/HEVC ≒ VP9 > H.264 ≒ VP8 > MPEG2
0.3 0.5 1.0 2.0
エンコード方式 | ファイルサイズ |
---|---|
MPEG2 | 2.0 |
H.264 | 1.0 |
H.265 / HEVC | 0.5 |
AV1 | 0.3 |
圧縮時間
H.264のエンコード時間を1とした時間。
AV1も速度重視のpreset(= 6)なら充分にデータ保管用のエンコードとて役に立つと言える。
テストにはWindows版FFmpeg6.1を使用。
参考までに Core i5 クラスでH.264のエンコードは動画時間の半分くらいだった。
AV1 > H.265 > HEVC > H.264 > MPEG2
2.0 2.0 1.0 1.0 不明
16.0
エンコード方式 | 圧縮時間 |
---|---|
MPEG2 | - |
H.264 | 1.0 |
H.265 | 2.0 |
AV1(preset10:速度優先) | 2.0 |
AV1(preset6:画質優先) | 16.0 |