Alex A. Naanou 6abcecb10b reworked how args are handled...
Signed-off-by: Alex A. Naanou <alex.nanou@gmail.com>
2025-06-27 19:14:11 +03:00

94 lines
1.4 KiB
Bash
Executable File

#!/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
}