home ~ socials ~ projects ~ rss

Remove Black Borders When Making A GIF In ffmpeg

May 2021

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

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

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

which will give you something like:

Output:
crop=2912:1696:52:196

which you use like this:

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.

end of line
Share link:
https://www.alanwsmith.com/en/01/f6/qg/d5/?remove-black-borders-when-making-a-gif-in-ffmpeg