Make sure ffmpeg is up-to-date: ``` brew update brew upgrade ffmpeg ``` Convert a MOV into frames. Tweak the `2/1` if you want more or fewer frames. ``` mkdir frames ffmpeg -i screen-recording.mov -r 2/1 frames/%03d.png ``` Optional: crop the frames to 600x400px using 824,690 as top/left ```sh mkdir cropped convert ??.png -crop 600x400+824+690 cropped/ ``` Create the pallete.gif ```sh ffmpeg -i cropped/%02d.png -vf palettegen palette.png ``` Aaaand create the GIF. The `6*PTS` is added to slow down the GIF frames. ```sh ffmpeg -v warning -i cropped/%02d.png -i palette.png -lavfi "paletteuse,setpts=6*PTS" -y out.gif ``` Bonus tip: if you want the last frame to have a longer duration, just copy your last frame image a bunch of times and use new frame numbers as filename. ```sh copy 20.png 21.png copy 20.png 22.png copy 20.png 23.png copy 20.png 24.png ``` Sources: http://blog.pkh.me/p/21-high-quality-gif-with-ffmpeg.html