Skip to content

Instantly share code, notes, and snippets.

What would you like to do?
how to make a nice GIF from png frames

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 -r 2/1 frames/%03d.png

Optional: crop the frames to 600x400px using 824,690 as top/left

mkdir cropped
convert ??.png -crop 600x400+824+690 cropped/

Create the pallete.gif

ffmpeg -i cropped/%02d.png -vf palettegen palette.png

Aaaand create the GIF. The 6*PTS is added to slow down the GIF frames.

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.

copy 20.png 21.png
copy 20.png 22.png
copy 20.png 23.png
copy 20.png 24.png



This comment has been minimized.

Copy link

varoon commented Apr 5, 2018

How to Add Transparent of the GIF ?
The PNG images have transparency and the output GIF does not have transparent. Any fix ?


This comment has been minimized.

Copy link

kkevlar commented Aug 22, 2018


This comment has been minimized.

Copy link

samdivaio commented Nov 28, 2018

They do.


This comment has been minimized.

Copy link

doczoidberg commented May 5, 2020

my parameters:

-framerate 10 -i _frame%d.png -i palette.png -lavfi paletteuse=alpha_threshold=128 -gifflags -offsetting result.gif

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.