個人サーバーに引きこもっているSigmaです。Misskeyはアップロードした動画をそのまま保存しているようなので、アップロード時にいかに容量を小さく高画質に出来るかが鍵となる気がしてきました。
0. 実行環境
ffmpeg version N-113815-gef917950f0-20240225 Copyright (c) 2000-2024 the FFmpeg developers[1]
1. 動画のエンコード設定を探す
今回は汎用的なエンコード設定を探すため、最もエンコードしにくいと思われる現実世界を動きのある形で撮影した動画をお借りした。以下の動画のフォーマット401(401 mp4 3840×2160 30 │ 1.12GiB 13104k https │ av01.0.12M.08 13104k video only 2160p, mp4_dash)の2:00-3:00を切り出してエンコードし比較する。
お借りした動画:https://www.youtube.com/watch?v=1bQO0Df38XY
また、個人的な目安として平均SSIM 0.98 を求めることにする。
1.1 libx265
入力プロンプト
ffmpeg -i move.mp4 -c:v libx265 -crf 28 move265crf28.mp4
実行結果
frame= 1784 fps=5.0 q=32.7 Lsize= 106627KiB time=00:00:59.45 bitrate=14690.5kbits/s speed=0.167x
結果と所感
Ave. | 0.984775 |
Min. | 0.966337 |
有名な設定なだけあって特に数値上の問題は無く、視聴してみても違和感は覚えない。
1.2 AV1
入力プロンプト
ffmpeg -i move.mp4 -c:v libsvtav1 -crf 35 -preset 4 moveAV1crf35.mp4
実行結果
frame= 1784 fps=1.3 q=32.0 Lsize= 112585KiB time=00:00:59.49 bitrate=15502.6kbits/s speed=0.0437x
結果と所感
Ave. | 0.991088 |
Min. | 0.980459 |
この時点でコーデックとしてはとても優秀ですがビットレートが高い点が気になります。態々AV1でエンコードするからにはH.265よりも容量が小さくなって欲しい。
1.3 VVC
FFmpegにパッチがラッパーのパッチが当たっていたのでそのうち実装されると思います。実装されたらやろうかな。
2. 画像のエンコード設定を探す
こちらも、汎用的なエンコード設定を探すことを目的に検証します。個人的にはこっちを今回やりたかった。正直こちらは、圧縮の観点からみるとAVIF一強な気がするので比較しません。
今回お借りした画像は、https://www.photock.jp/detail/tourarea/4316/ です。いい感じに情報量が多いので使用しました。
2.1 AVIF
入力プロンプト
ffmpeg -i photo0000-4316.jpg -c:v libaom-av1 -crf 23 test23.avif
実行結果
frame= 1 fps=0.0 q=0.0 Lsize= 1532KiB time=00:00:00.04 bitrate=313787.2kbits/s speed=0.000863x
結果と所感
有効な比較手段をしらないので目視比較を行った。具体的には、人と手前の白い柱を拡大してみて納得のいく圧縮であるかどうかを調べた。基準として、人がぼやけておらず、柱はレンガの境目が塗りつぶされていなければ許容した。デフォルト(crf32)とcrf28ではこれらに納得がいかずcrf23で落ち着いた。
3. バッチファイルを書く
アップロードすることを考えると、大量に処理しかつメタデータを除去する必要があるので以下のようなバッチファイルを作成した。
for %%a in (%*) do (
ffmpeg -i "%%a" -c:v libx265 -crf 28 -c:a copy -map_metadata -1 "%%~na_265.mp4"
)
for %%a in (%*) do (
ffmpeg -i "%%a" -c:v libaom-av1 -crf 23 -map_metadata -1 "%%~na.avif"
)
パソコン内部に保管すると散らかるため一応私のGitHubにもアップロードしておいた。[2]
4. 感想
FFmpegがVVC対応する日を待ち望んでいます。(Fraunhoferがエンコーダーもデコーダーも公開しているとか言ってはいけない)
コメント
It’s the best time to make some plans for the future and it’s time to be happy. I’ve read this post and if I could I desire to suggest you few interesting things or suggestions. Maybe you could write next articles referring to this article. I want to read more things about it!
It’s the best time to make some plans for the future and it’s time to be happy. I’ve read this post and if I could I desire to suggest you few interesting things or suggestions. Maybe you could write next articles referring to this article. I want to read more things about it!
noreply