Open tamaina opened 1 year ago
Mastodon v4はあまり普及してないので後回しかな
Mastodon v4はあまり普及してないので
これに関してなにかデータとかありますか?ただ気になるだけですが
まず大きなインスタンス(fedibird, mstdn.jp)あたりが対応しないことには…
よしんばMastodon v4が普及したとしてもImageMagick 7が必要なので対応するインスタンスは限られそう(v6が広く使われているようなので)
ImageMagick supports AVIF. As ofversion 7.0.25, it supports AVIF compression natively. https://avif.io/blog/tutorials/imagemagick/#imagemagicksupportsavif
FedibirdはまだMastodon 3.4.1使っているし、時間かかりそうですね
Mastodonや他のソフトウェアが問題なので、高互換と圧縮優先の2種類を用意して使い分けるというのはどうだろう
(ただ2種類をストレージに保存するのは微妙、片方をプロキシにする?)
AVIFを検討するならJPEG XLも検討して良さそうだけど、ブラウザの対応が全滅している
Sharp.jsの対応も面倒 https://github.com/lovell/sharp/issues/2731#issuecomment-1349856411
片方をプロキシにする?
圧縮優先低互換の方をストレージに保存するのがサーバーのCPU的にもストレージ的にも無難そう
avifは重たすぎるし、jpeg xlはブラウザ対応の見込みがわからないためnot planned
AVIF 重いのは昔の話では
avifは重たすぎるし
WebPに比べてどのくらい重たいのか数字をみたいですね
なんなら WebP (VP8) エンコーダー (libwebp) の方が wasm に持ち込むのが高コストという事象などがある
WebPに比べてどのくらい重たいのか数字をみたい
sharp.jsで試してみるか
なんなら WebP (VP9) エンコーダーの方が wasm に持ち込むのが高コストという事象
ならサーバーで圧縮するのはwebp, クライアントではavifにするとかの対応もありうる
WebPってVP9サポートします?
WebPってVP9サポートします?
すみません VP8 です
effort 0, smartSubsample false
effort: 0だと、avifは写真は得意だがイラストがかなりノイズが多くなる
effort: 1
もかなりノイズありますね。rav1e使うとどうなるかなと調べてみましたがsharpはlibvipsからencoder選べる機能がなかったです。https://github.com/lovell/sharp/issues/3582
wasm-vipsも試して見たかったですがAVIFサポートがなかったです https://github.com/kleisauke/wasm-vips/issues/44
avifの個人的な指針
写真:
quality: 50, lossless: false, effort: 1
イラストlossy:
quality: 80, lossless: false, effort: 1
※qualityを上げるだけでかなり改善する
イラストロスレス: webpを用いる [webpより遅い割に、圧縮率はほぼ差がない]
でも写真とイラスト区分ができないですね
lossyだと圧縮の結果のサイズの違いが大きいのでオプションで両方できるようにするのはどうでしょう。
写真とイラスト区分ができない
sharp.jsのstats()のentropyを見てなんとなく判断できないかな
7以上は写真とみなすとか
この映像のentropy 7.023でました
sharpnessもほぼ違いないような…ううん
じゃ、じゃあ7.1で(超適当
原神のスクショってどうなんだろう(たまにベンチマークとかこういった用事で開くんだけど5GBのダウンロードが…
7.3328
これをresize 1024x1024 insideしてquality: 50, lossless: false, effort: 1でavifにしたら悲惨なことになってしまった
ただ写真もディティールが低下したので、quality設定はターゲットとなる解像度によって変えるべきという感じがする
写真的なエフェクトだせたイラストのentropyって本物の写真より高く、7.6まで出てきました
これ7.8
わー、これを写真品質をターゲットにして圧縮したら大変厳しいことになりそう
イラストロスレス: webpを用いる [webpより遅い割に、圧縮率はほぼ差がない]
2048x2048にリサイズするとavifの方が有利になってくる
写真的なエフェクトだせたイラストのentropyって本物の写真より高く、7.6まで出てきました
逆に写真にテキスト加える場合とかも考えたいです
文字がデカすぎたかも
文字がデカすぎたかも
あれはそうですね
avifらしく?人間の目で見るとなんとかなっている
え、思ったより悪くありません
でもmisskey.artの方々からは不満があるかも?🤔
その場合には運営から調整できるようにオプション作ったら何とかなりそうです
ふむ
なーーーんか色がちょっと違いませんか?気のせい?
空の色は薄くなっている気がする
今すぐできるsharp.jsで比較してるけど、よく考えたら実装の際はブラウザサイドでの圧縮が主になると思うので、これ意味ないかも
なーーーんか色がちょっと違いませんか?
元画像のpngがDisplay P3なので、何も指定しないとsharpはsrgbに変換するので色は若干淡くなる
今すぐできるsharp.jsで比較してるけど、よく考えたら実装の際はブラウザサイドでの圧縮が主になると思うので、これ意味ないかも
言われてみればFirefoxもChromeもAVIFエンコードなんてサポートしてなかったです
await new OffscreenCanvas(1,1).convertToBlob({ type: "image/avif" })
実行したらPNGが出てきます
canvas.toBlobでavif吐けるブラウザあるの
(そうだとしてもtoBlobは細かい司令できない
ブラウザはwasm前提で
photon-rs を呼び出すサブセット Rust モジュールを wasm にすればよさそう
Summary
Related to #6626, #9275
Mastodon v4からAVIFに対応したらしいので
https://caniuse.com/avif