#!/usr/bin/env bash if [ $# -ne 3 ]; then echo -e "\033[31;1merror:\033[0m this script expects three arguments, the file, the starting time and the duration." exit 1 fi if [ ! -f "$1" ]; then echo -e "\033[31;1merror:\033[0m couldn't open $1: no such file." exit fi palette_dir=$(mktemp -d) ffmpeg -y -ss $2 -to $3 -i $1 \ -vf fps=30,scale=320:-1:flags=lanczos,palettegen $palette_dir/palette.png > /dev/null 2>&1 ffmpeg -ss $2 -to $3 -i $1 -i $palette_dir/palette.png -filter_complex \ "fps=30,scale=640:-1:flags=lanczos[x];[x][1:v]paletteuse" -y output.gif > /dev/null 2>&1 rm -rf $palette_dir