#!/usr/bin/env bash # XXX add help... # XXX add better options... FPS=${FPS:-8} PATTERN=${PATTERN:-'*.@(jpg|jpeg|png)'} while true ; do case "$1" in -h|--help) echo "Usage: $(basename $0) [OPTIONS] [PATTERN]" echo echo "Options:" echo " -h --help - print this message and exit" echo " -r --rate FPS - set framerate (default: $FPS)" echo " -p --pattern PATTERN" echo " - image pattern to use (default: '$PATTERN')" echo echo "NOTE: option defaults can bbe overriden by coresponding env variables." echo exit ;; -r|--rate) FPS="$2" shift 2 continue ;; -p|--pattern) PATTERN="%2" shift 2 continue ;; *) PATTERN="%1" shift exit ;; esac done ##if [ "$1" == "-r" ] ; then ## FPS="$2" ## shift 2 ##fi ##if ! [ -z "$1" ] ; then ## PATTERN="$1" ##fi LST=($PATTERN) # generate name... A=${LST[0]} A=${A%.*} B=${LST[$(( ${#LST[@]} - 1 ))]} B=${B%.*} NAME=${NAME:-${A}-${B}} PALETTE=${PALETTE:-.palette.png} # generate... { set -o noglob # gif palette... ffmpeg \ -pattern_type glob \ -i $PATTERN \ -vf palettegen \ "$PALETTE" # gif... ffmpeg \ -r $FPS \ -pattern_type glob \ -i $PATTERN \ -i "$PALETTE" \ -filter_complex paletteuse=dither=none \ "${NAME}".gif # cleanup... rm "$PALETTE" # mkv... ffmpeg \ -r $FPS \ -pattern_type glob \ -i $PATTERN \ "${NAME}".mkv #set +o noglob }