Remove Black Borders When Making A GIF In ffmpeg

This is a one liner that finds the area to crop and then does it:

code

ffmpeg -i "input.mp4" -t 1 \
-vf cropdetect -f null - 2>&1 | \
awk '/crop/ { print $NF }' | \
tail -1 | xargs -I{} ffmpeg \
-ss 25 -t 9.2 -i "input.mp4" \
-vf "{},fps=11,scale=380:-2:flags=lanczos,split[s0][s1];[s0]palettegen=max_colors=52[p];[s1][p]paletteuse" \
-y "output.gif"
            

Old notes

code

ffmpeg -i input.mp4 -t 1 -vf cropdetect -f null - 2>&1 | awk '/crop/ { print $NF }' | tail -1
            

which will give you something like:

crop=2912:1696:52:196
        

which you use like this:

code

ffmpeg -ss 0 -i input.mp4 -vf "crop=2912:1696:52:196,fps=30,scale=800:-2:flags=lanczos,split[s0][s1];[s0]palettegen[p];[s1][p]paletteuse" -loop 0 -hide_banner -loglevel warning -y output.gif
            

This works for .webp too - not sure how the color stuff works with it though if it's the best way to do the pallet stuff or not.