tl;dr;
modify Discourse container yaml's run block.
run:
- exec: echo "Beginning of custom commands"
- exec: sudo apt-get install zstd
- exec: wget https:
- exec: tar xf /var/www/discourse/public/images/emoji/noto.tar.zst -C /var/www/discourse/public/images/emoji/
- exec: mv /var/www/discourse/public/images/emoji/noto-animated-emojis-discourse-names-72x72-avif/* /var/www/discourse/public/images/emoji/noto/
- exec: echo "End of custom commands"
經過管理員 2 晚上的努力,將 451 個 Goole Noto Animated Emojis 導入到你站,標誌著你站正式全面進入動態 Emoji 時代。

如何實現?
Discourse 的 emoji 文件都保存在 /var/www/discourse/public/images/emoji/twemoji/ 目錄下
Noto Animated Emojis 網站提供 Lottie/GIF/WebP 下載,但存在文件大小過大的問題。
例如 Pig 🐖 的 Webp 440 KiB, GIF 482 KiB(512x512),而常規靜態 Emoji(72x72)大小往往 $ \lessapprox $ 1 KiB,所以需要轉碼減少文件大小。
ffmpeg -i pig.gif -c:v libsvtav1 -s 72x72 pig-svtav1.avif
可以獲得 11KiB 的 AVIF 格式動圖。但 ffmpeg AV1 相關的編碼器都不支持不夠明度,獲得的圖片背景變成了白色。

諮詢了高人(Claude),可以用 avifenc 這個工具保留 GIF 的透明背景。
ffmpeg -i gifs/pig.gif -s 72x72 -vf "format=yuva444p" -f yuv4mpegpipe -strict -1 - | avifenc --stdin --fps 33.33 -q 40 -c rav1e -s 0 /tmp/pig-yuva.avif
經過試驗,僅 rav1e/libaom 支持透明度(yuva444p),rav1e 速度較快。-s 0設置速度為最慢以獲得更好的壓縮效果,但不明顯:17K vs 16K。
在 q=40 的質量參數下,圖片大小為 16KiB(相较于 ffmpeg svtav1 的方式体积略大)

以下為所有壓縮後的 Animated Emoji 合集(AVIF 後綴被重命名為了 PNG)
noto-animated-emojis-discourse-names-72x72-avif.tar.zst|attachment (2.5 MB)