gifsicleで超速アニメーションGif生成
「みなさん元気に大量のgifアニ生成してますか!!!!!(超小声)」*1
gifsicleを知った
TLに流れてきたんですが、gifsicleというGif<>アニメーションGifコンバータを知りました
gifsicle
http://www.lcdf.org/gifsicle/
個人的に把握した特徴は以下の通り
・速い
・入力はGifのみサポート
・速い
・ビルドが楽だった
・速い
・OSXはBrewからはいるらしいけど、XQuartzが必要(なのでやってみてない)
・速い
・詳しくは上のURL見た方が速い
速い
100枚ほどの、1280x720pxなGif連番画像を、さくらの980円でAnimation Gifにくみたてた場合のベンチマークです。
対抗馬のConvertはImageMagickよりも3倍速いと評判のYoyaMagick(http://labs.gree.jp/blog/date/2013/05/ 、 http://uzulla.hateblo.jp/entry/2013/06/23/200936)。
$ time gifsicle --delay=10 --loop *.gif > ../anim1.gif
real 0m4.702s
user 0m4.502s
sys 0m0.192s$ time convert *.gif ../anim2.gif
real 0m19.337s
user 0m5.768s
sys 0m4.068s
- rw-rw-r-- 1 yancha yancha 25262804 10月 4 20:16 2013 anim1.gif
- rw-rw-r-- 1 yancha yancha 25697225 10月 4 20:17 2013 anim2.gif
4倍速い。
つまりImageMagickの10倍以上は速い(ホントか?)
そして、ファイルサイズもちょっとだけちいさい。
早速Pyazo対応させました
Gifzoサーバとしてもつかえたり、iPhoneからウェブブラウザで動画を送信するとGifアニメに変換できたりするPyazoをgifsicleに対応させました。
https://github.com/uzulla/pyazo
(作った時のエントリ http://uzulla.hateblo.jp/entry/2013/06/16/011657)
マジで速くなりました、今なら変換速度はGifzoに勝てる。
生成されるファイルサイズも半分位になりました。
…「速度は」?
いままでは品質の為に「FFmpegでPNGに変換、ImageMagickでアニメーションgifに変換」していましたが*2、今回gifsicle対応のために中間ファイルをgifにしてみました*3。
実は、中間ファイルをGifにするとIMでもファイルサイズは良い感じになります*4、中間がPNGとGIFで大体二倍くらい差が生まれるみたいですね*5。
そして、FFMpegでの変換自体もpngよりもgifが数倍高速で、今回ffmpegの処理+gifsicleの処理で10倍以上速くなりました。
判りづらいのでまとめてみますか
中間ファイル | アニGif生成プログラム | 画質 | ファイルサイズ | 速度 |
png | Imagemagick | 高 | 大 | 低速 |
gif | Imagemagick | 低 | 小 | ほどほど |
png | gifsicle | n/a | n/a | n/a |
gif | gifsicle | 低 | 小 | 高速 |
勝手に本家Gifzoとくらべてみる
本家Gifzoは画質優先っぽいですね。
本家に大変失礼ながら、勝手な条件で勝手に比べると、たとえばこういう画質差があります。
グレーバックの所など、あきらかに本家の方が良いですね。
ただ、かなり「単色」「アニメ絵」に特化した感じがあり、ディザで処理したほうがマッハバンドが出ない分、体感画質が上がるケースも有ります。
fpsを増やしてもおなじようなファイルサイズにおさまっているので、現実世界の動画ならば、こちらのほうが良いケースも多いかなと思いますね。
ま、ここらへんは趣味の問題です。
PyazoはiPhoneのSafariブラウザから動画をUlしてGif動画をつくる、という変わった使い方をするのが楽しいので、こっちの方が直近個人的には良い感じになっております。
オプションで切り替えはできますので、皆様お好きな方をどうぞ。
ということで
gifsicle速い!最高!!
ところで…
ffmpegってカラーパレットを良い感じにしてくれるオプションないんですかね…っておもって早数年、やっぱりまだないのか〜〜。
*1:Gifアニみたいな帯域を超消費するものを生成していると、インフラ屋から抹消されても文句が言えない
*2:FFmpegでGifに変換すると、パレットが固定になってしまって品質がおちるのでPNG経由にしています
*3:ImageMagick利用時は、オンオフ設定可能です
*4:勿論速度は全然gifsicleの方が速い
*5:減色工夫すれば、差が埋まるらしいが…
*6:ちなみに、右端がぶっこわれているのは、多分ffmpegの問題ですが、まだよくわからぬ(このエントリ書いていたら気付いたので、調査していない)-> うーん、雑なマジックをつかった https://github.com/uzulla/Pyazo2/issues/5#issuecomment-32692277