Here’s a little script I wrote to avoid copy-pasting the ffmpeg command from superuser every time I needed it.
It converts a video to a GIF file by pre-calculating a good palette, then using that palette.
Usage:
./to_gif input.mp4 output.gif
The file to_gif (which should be executable):
#!/bin/bash set -e set -u # Credit: https://superuser.com/questions/556029/how-do-i-convert-a-video-to-gif-using-ffmpeg-with-reasonable-quality INPUT="$1" OUTPUT="$2" PALETTE=$(mktemp --suffix=.png) ffmpeg -y -i "${INPUT}" -vf palettegen "${PALETTE}" ffmpeg -y -i "${INPUT}" -i "${PALETTE}" \ -filter_complex "fps=15,paletteuse" "${OUTPUT}" rm -f "${PALETTE}"
Note: you might want to modify the number after fps= to adjust how fast the video plays.
Update: changed to use mktemp instead of tempfile.
Update: and here is how I add it to the context menu in Caja:
Place the above file in $HOME/bin/to_gif.
Create a file ~/.config/caja/scripts/to_gif (don’t forget to make it executable):
#!/bin/bash mate-terminal -x "${HOME}/bin/to_gif" "$1" "$1".gif