Skip to main content

AV1 AVIF AVIS Quick-Review

  • Publish: 2022-09-08
  • Lastmod: 2022-09-08

AV1, AVIF, AVIS(AVIF-sequences) をそれぞれ簡単に作って表示する記事です
以前より簡単に作成できるようになったので記事にしました
記事中の AVIF-sequences を再生できるのは Blink を搭載するChrome などのブラウザのみです

Words

AOMedia (Alliance for Open Media)

  • https://aomedia.org
  • HEVCの特許料から逃れたい企業が集まり、圧縮技術を開発してロイヤリティフリーで提供している団体

AV1 (AOMedia Video 1)

HEIF (High Efficiency Image File Format)

HEIF Image-derivations

  • 編集命令(回転など)を保存し非破壊な編集を可能にする
  • 編集前と後の画像を提供しつつファイル容量はほとんど増えない

HEIF Image-sequence

  • 時間的、空間的連続性を持つ複数の画像を保存する
  • 画像の数が多くなるほど大幅な圧縮ができる

AVIF (AV1 Image File Format)

AVIS (AVIF-sequences)

HEIF is container format

HEIF (High Efficiency Image File Format) はコンテナ内の画像の符号化方式によって個別の名称で呼ぶことができる

NameAVIFHEICAVIC
CodeingAV1HEVCAVC
ContainerHEIFHEIFHEIF

How to convert AV1, AVIF and AVIS?

適切にエンコード設定を行なうことで、使用目的に合った品質のメディアを出力できます
この記事の計測結果は目安であり、特に各種ソフトウェアの性能を比較するために使用するのは不適切と思われます
計測用の動画や画像データは全て下記の動画データから得ています

http://distribution.bbb3d.renderfarming.net/video/mp4/bbb_sunflower_1080p_30fps_normal.mp4
CC-BY: Blender Foundation, Janus Bager Kristensen

AV1

Input

Video: AVC, 886KiB 1920x1080, 30FPS, 8sec, yuv420p

Command

  • ffmpeg -i avc.mp4 -vcodec libaom-av1 -cpu-used 8 -threads 8 av1.mp4
  • av1an -i avc.mp4 av1.mp4

Results

video lengthreal timefile sizecodec
input8 secN/A886 KiBavc
ffmpeg8 sec20.57 sec758 KiBav1
ffmpeg -usage 18 sec3.16 sec525 KiBav1
av1an8 sec30.77 sec896 KiBav1
  • あまり圧縮されなかった、恐らく動画が短すぎたためだと思う
  • bb_subflower全体だと 264MB => 197MBになった

Note

AVIF

Input

Image: MJPEG, 101KiB, 1920x1080, yuvj420p

Command

  • ffmpeg -i input.jpg output.avif
  • convert input.jpg output.avif

Results

real timefile sizefile type
inputN/A104 KiBjpeg
ffmpeg17.74 sec38 KiBavif
ffmpeg -cpu 8 -thr 81.64 sec38 KiBavif
imagemagick2.27 sec38 KiBavif

Note

  • ffmpeg n5.1 はアルファチャンネル(透過画像)を処理できませんでした

Sample

venti-face_1420p.png (1012KiB)

png_ffmpeg.avif (59KiB)

alpha_imagemagick.avif (68KiB)

AVIS (AVIF-sequences) from MP4

Input

bbb_sunflower_1080p_30fps_8sec_avc.mp4 (739KiB)

Command

  • ffmpeg -i input.mp4 output.avif

Output

bbb_sunflower_1080p_30fps_8sec_avc_avis_ffmpeg.avif (589KiB)

Results

MP4 to AVIS graph

optionvideo lengthreal timefile sizefile type
none8 sec947 sec604 KiBavis
-cpu 2 -thr 28 sec254 sec616 KiBavis
-cpu 4 -thr 48 sec61 sec630 KiBavis
-cpu 6 -thr 68 sec21 sec758 KiBavis
-cpu 8 -thr 88 sec22 sec758 KiBavis
-usage 18 sec14 sec525 KiBavis
input8 secN/A865 KiBmp4
  • cpu-used [1-8] の値を増やすと圧縮率が低下する反面、処理時間が減少する傾向が見られた

Sample

QUOTE: 【原神】キャラクター実戦紹介 ウェンティ(CV:村瀬歩)「詩人の仕事」

venti_1080p_60fps_7sec_av1_avis_ffmpeg.avif (4.3MiB)

QUOTE: 【原神】キャラクター実戦紹介 ウェンティ(CV:村瀬歩)「詩人の仕事」

AVIS (AVIF-sequences) from PNG files

Input

  • Image: PNG, 1920x1080, yuv420p

Command

Results

PNG to AVIS graph

optionnumber of imagereal time (sec)file size (KiB)file type
-usage 11 image24 sec1371 KiBavis
none1 image1886 sec1606 KiBavis
-cpu 2 -thr 21 image555 sec1629 KiBavis
-cpu 4 -thr 41 image119 sec1675 KiBavis
-cpu 6 -thr 61 image39 sec2003 KiBavis
-cpu 8 -thr 81 image39 sec2004 KiBavis
input240 imagesN/A539751 KiBpng
  • cpu-usedを指定せずに240個のPNGから1個のAVIF-sesequenceを作成した所、540MiB => 1.4MiB と約336倍の圧縮率になった

Note

  • Firefox v104 はAVIF-sequencesの再生に対応していません
  • imagemagick v7.1.0-47 はAVIF-sequencesを作成できませんでした

Sample

QUOTE: GUILTY GEAR -STRIVE- シーズンパス2 第一弾プレイアブルキャラクタートレーラー

bridget2_1080p_60fps_5sec_av1_avis_ffmpeg.avif (2.6MiB)

QUOTE: GUILTY GEAR -STRIVE- シーズンパス2 第一弾プレイアブルキャラクタートレーラー

Support

Browser

Browser NameEngineAV1AVIFAVIS (AVIF-sequences)
FirefoxGecko2019-03-21 (v67)2021-10-02 (v93)Not support
ChromeBlink2018-10-16 (v70)2020-08-25 (v85)2020-08-25 (v85)
SafariWebKitNot supportScheduled support (v16)Not support
Firefox for AndroidGecko2022-03-31 (v101-flag)2022-03-31 (v101)2022-03-31 (v101)
Chrome for AdnroidBlink2022-08-03 (v104)2022-08-03 (v104)2022-08-03 (v104)
Safari for iOSWebKitNot supportScheduled support (v16)Not support

Note

SoC H/W encode/decode

分散SNS

雑感

  • ディスプレイが高画質になったため、表示するデータの画質も大きくなっており、ストレージ圧迫を軽減できる
  • 動画や画像を保存している人、配信している人、従量課金で動画や画像を通信する人、みんなにコスト削減の効果が有る
    • NASのデータをPCやタブレットでストリーミングする人
    • 大量にデータを持ち歩く人でもストレージの小さな端末が購入の選択肢になる
  • 高圧縮なので再生のための解凍には、従来より多くの計算資源を必要とする
    • 特にAVISでは顕著で例えば私の実行環境で当記事を表示させるとCPUを約3%使用する
    • H/W decodeに期待したい
  • イラストの表情差分などや多言語漫画など、似通った画像でHEIFコンテナを使うと大きなサイズ圧縮効果を得られると思う
  • AVIS (AVIF-sequences)はループ再生されるようなGIFやMP4の代替として期待できる
  • 公開鍵に埋め込む顔写真の様なストレージ制約が厳しい環境での画像品質を大幅に改善できる
  • AVIFの再生には課題を感じた
    • プラグインなしで再生できるのはブラウザだけでAVIF-sequenceはChromeしか対応していない
    • AVIF-sequenceもアニメーションではなく1枚1枚表示できるものは見当たらなかった
    • AVIF-derivationsをサポートするツールは見つからなかった

Links

Sample

QUOTE: GUILTY GEAR -STRIVE- シーズンパス2 第一弾プレイアブルキャラクタートレーラー

bridget1_1080p_60fps_11sec_av1_avis_ffmpeg.avif (3.8MiB)

QUOTE: GUILTY GEAR -STRIVE- シーズンパス2 第一弾プレイアブルキャラクタートレーラー

実行環境

Hardware

  • CPU: AMD Ryzen 7 5800X
  • RAM: Kingston KSM26ED8/16HD (16GB-DDR4-2666MT/s)

Software

  • kernel: 5.19.5-arch1-1
  • ffmpeg: n5.1
    • version n5.1 (release: 2022-07-23)以降が恐らく必要です
  • av1an: 0.3.1
  • imagemagick: 7.1.0-47
    • version 7.1.0-39 (release: 2022-06-20)以降が恐らく必要です
  • file: 5.42
    • version 5.40 (release: 2021-03-30)以降が恐らく必要です
  • qView: 5.0
  • Firefox: 104
  • Chromium: 104.0.5112.101
  • qt-avif-image-plugin: 0.48

Data

# Download
curl -O http://distribution.bbb3d.renderfarming.net/video/mp4/bbb_sunflower_1080p_30fps_normal.mp4

# Crop
ffmpeg -ss 1:36 -i bbb_sunflower_1080p_30fps_normal.mp4 \
       -an -t 8 bbb_sunflower_1080p_30fps_normal_clip_9s.mp4

# Take a frame
ffmpeg -t 1 -i bbb_sunflower_1080p_30fps_normal_clip1_8s.mp4 \
       -r 1 -f image2 bbb_sunflower_1080p_30fps_normal_clip1_8s%d.png

# mp4 to png
ffmpeg -i input.mp4 -r 60 png/%04d.png

# delete backgraund
convert input.png \
  -alpha set \
  -background none \
  -channel RGBA \
  -fill '#00000000' \
  -fuzz 45% \
  -draw 'alpha 1,1 floodfill' \
  output.png
  

ehe

QUOTE: https://tenor.com/view/venti-genshin-impact-cute-smirk-gif-22137491

venti-ehe_640p_60fps_3sec_avc_avis_ffmpeg.avif (539KiB)

QUOTE: https://tenor.com/view/venti-genshin-impact-cute-smirk-gif-22137491

TEXT LICENSE CC-BY