dotfiles/home/bin/mov_to_gif.sh

17 lines
602 B
Bash
Executable File

#!/bin/bash
NAME=$1
START=$2
# If duration is unset, use the full length of the video
if [[ $3 ]]; then
END=$3
else
END=$(ffprobe -loglevel error -show_streams $NAME | grep duration\= | cut -f2 -d=)
fi
END=$(echo -n $END | cut -d ' ' -f 1)
echo $END
echo "Making a gif of $NAME from $START seconds to $END seconds"
ffmpeg -y -ss $START -t $END -i $NAME -vf fps=24,scale=640:-1:flags=lanczos,palettegen temp_palette.png
ffmpeg -i $NAME -i temp_palette.png -ss $START -t $END -pix_fmt rgb24 -filter_complex "fps=12,scale=640:-1:flags=lanczos[x];[x][1:v]paletteuse" $NAME.gif
rm temp_palette.png