I tried a few different techniques to make a GIF via command-line and the following gives me the best control of quality and size. Once you're all setup, you'll be pumping out GIFs in no time!
Install FFmpeg
- $ brew install ffmpeg [all your options]
- Example: $ brew install ffmpeg --with-fdk-aac --with-ffplay --with-freetype --with-frei0r --with-libass --with-libvo-aacenc --with-libvorbis --with-libvpx --with-opencore-amr --with-openjpeg --with-opus --with-rtmpdump --with-schroedinger --with-speex --with-theora --with-tools
Install ImageMagick
- $ brew install imagemagick
Grab screenshot from Quicktime (or what you want. I like Screenflow)
- Open Quicktime > File > New Screen Recordering > After recording 'Save'
Use ffmpeg to slice .mov into high quality .png's
- $ ffmpeg -i screencast.mov -vf scale=320:-1 -r 10 output/ffout%3d.png
- 'screencast.mov' location of .mov
- 'scale=320' set scale to what you want
- '-r 10' set framerate
- 'output/ffout%3d.png' output pngs in output folder
Use Convert from ImageMagick
- $ convert -delay 8 -loop 0 output/ffout*.png output/animation.gif
- 'convert' is the command-line tool from ImageMagick
- '-dalay' is the delay of 8, you would get a FPS=100/8=12.5
- '-loop' adds Netscape loop extension to your GIF animation
- 'output/ffout*.png' is the directory and file names going into the GIF
- 'output/animation.gif' is the final location and GIF output
I found that for a screencast, using the above
convert
command resulted in the white background of the window in the screencast flickering between different shades of white.From http://www.imagemagick.org/Usage/anim_opt/#colortables:
This fixed it right up!