2024-07-21 14:28:19 +03:00
|
|
|
#!/usr/bin/env bash
|
|
|
|
|
|
|
|
|
|
|
2024-07-21 15:26:04 +03:00
|
|
|
# XXX add help...
|
|
|
|
|
# XXX add better options...
|
|
|
|
|
|
|
|
|
|
FPS=${FPS:-8}
|
2025-06-27 19:14:11 +03:00
|
|
|
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
|
2024-07-21 15:26:04 +03:00
|
|
|
|
2025-06-17 04:37:14 +03:00
|
|
|
LST=($PATTERN)
|
2024-07-21 15:26:04 +03:00
|
|
|
|
|
|
|
|
# generate name...
|
|
|
|
|
A=${LST[0]}
|
2025-06-17 04:37:14 +03:00
|
|
|
A=${A%.*}
|
2024-07-21 15:26:04 +03:00
|
|
|
B=${LST[$(( ${#LST[@]} - 1 ))]}
|
2025-06-17 04:37:14 +03:00
|
|
|
B=${B%.*}
|
2024-07-21 15:26:04 +03:00
|
|
|
|
|
|
|
|
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
|
2024-07-28 11:27:06 +03:00
|
|
|
# cleanup...
|
|
|
|
|
rm "$PALETTE"
|
2024-07-21 15:26:04 +03:00
|
|
|
|
|
|
|
|
# mkv...
|
|
|
|
|
ffmpeg \
|
|
|
|
|
-r $FPS \
|
|
|
|
|
-pattern_type glob \
|
|
|
|
|
-i $PATTERN \
|
|
|
|
|
"${NAME}".mkv
|
|
|
|
|
#set +o noglob
|
|
|
|
|
}
|
2024-07-21 14:28:19 +03:00
|
|
|
|