Making an animated gif
In my last post I wanted to lead off with a short animation of the 3D printer in action. I had a video I shot on my phone that looked nice, so I downloaded it and started looking at ffmpeg options. Eventually I stitched together a few snippets from others with some critical thinking of my own and came up with this:
#!/bin/sh vid=vid.mp4 start_time=00:00:01 duration=3 height=320 # input height halved , can replace with pixils . width=-2 # keeps aspect ratio . can replace with pixils . fps=10 # frames per a second . filters="fps=$fps,scale=$width:$height:flags=lanczos" ffmpeg -ss $start_time \ -t $duration \ -i "$vid" \ -vf "$filters,palettegen" \ -y palette.png && ffmpeg -ss $start_time \ -t $duration \ -i "$vid" \ -i palette.png \ -lavfi "$filters [x]; [x][1:v] paletteuse=dither=bayer:bayer_scale=5:diff_mode=rectangle" \ -y "$vid".gif && rm palette.png
It got the gif pretty small, but I still ran it through another web-based optimizer to get the size down more. I’m sure it’s possible to do that extra optimization here, but this is where good ideas run short on time, right?