nexryai/media-proxy-go

ffmpegやめる

Closed this issue · 11 comments

変換をffmpegでやるようになったため、vipsでやってることはもうサイズの確認くらいしかなくimageライブラリで十分なので要らない

ffmpegもやめたい

ffmpeg

  • 色々なフォーマットに対応しているが脆弱性が不安なのとvipsに比べパフォーマンスが微妙
  • ディストリビューションによってオプションが使えたり使えなかったりして面倒くさい

vips

  • パフォーマンスと信頼性はあるがgovipsを上手く扱う方法が謎すぎるのとコマンドで扱うのが難しすぎる

ImageMagick

  • セキュリティ問題はpolicy.xmlでなんとかなりそう
  • ただ恐らくパフォーマンスが最悪(←Mastodonで使われてるからサーバーサイドでも使えない訳でもなさそうだけどうーん)

正直png、jpg、webp、avif、gif、ico、svg辺りを読み込めてwebpとavifを吐ければいいので小規模ライブラリで頑張るとか

cwebpとcavif使うか

cavifはリサイズに対応していない

こういう細々したツール、やっぱり対応していないフォーマットが厳しいので普通にImageMagick使うべきかもしれない

nexryai@fedora:~/test$ /usr/bin/time -f %M:%e sh -c "cat './test.gif' | convert - -resize 500x500 -coalesce out.webp"
873752:3.40

ちょっとした絵文字通すだけでメモリ900MBは流石に...

ffmpegでなんとかするか or なんとかしてvipsを再起動させる方法を見つけるほうがたぶん楽

media-proxy-go/main.go

Lines 85 to 93 in 13ede4b

// vipsの初期化
log.ProgressInfo("Initializing vips ...")
vips.Startup(&vips.Config{
ConcurrencyLevel: 1,
MaxCacheMem: 8 * 1024 * 1024,
MaxCacheSize: 32,
MaxCacheFiles: 32,
})
defer vips.Shutdown()

imagorってやつ使うか?

govipsにShutdownThread()とかいう関数があるなんて学校じゃ教えてくれなかった