From 644e2637ccb7e02ff5590d7784970cf1f37bf959 Mon Sep 17 00:00:00 2001 From: yemou Date: Fri, 20 Feb 2026 19:29:07 -0500 Subject: [PATCH] vid2gif: add fps option and fix errors for missing start and duration --- scritps/vid2gif | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/scritps/vid2gif b/scritps/vid2gif index d5efdaa..464fa56 100755 --- a/scritps/vid2gif +++ b/scritps/vid2gif @@ -4,6 +4,7 @@ usage() { "\noptions:" \ "\t-S TIMESTAMP - timestamp to start the gif" \ "\t-d SECONDS - how long the gif should be" \ + "\t-f FPS - framerate of the gif" \ "\t-o FILE - output file (default: out.gif)" \ "\t-s SCALE - border size (default: 1)" } @@ -24,6 +25,7 @@ do case $arg in S ) VID2GIF_START=$1; shift ;; d ) VID2GIF_DURATION=$1; shift ;; + f ) VID2GIF_FPS=$1; shift ;; h ) usage; exit 0 ;; i ) VID2GIF_INPUT_FILE=$1; shift ;; o ) VID2GIF_OUTPUT_FILE=$1; shift ;; @@ -41,25 +43,21 @@ done usage 1>&2; exit 1 } -start= -duration= -[ -n "$VID2GIF_START" ] && start="-ss" -[ -n "$VID2GIF_DURATION" ] && duration="-t" +fps= +[ -n "$VID2GIF_FPS" ] && fps="fps=$VID2GIF_FPS," : "${VID2GIF_SCALE:=1}" : "${VID2GIF_OUTPUT_FILE:=out.gif}" -filters="scale=iw*${VID2GIF_SCALE}:-1:flags=lanczos" +filters="${fps}scale=iw*${VID2GIF_SCALE}:-1:flags=lanczos" palette_file=$(mktemp --tmpdir XXX.png) ffmpeg -hide_banner -loglevel warning \ - "$start" "$VID2GIF_START" \ - "$duration" "$VID2GIF_DURATION" \ + ${VID2GIF_START:+"-ss" "$VID2GIF_START"} ${VID2GIF_DURATION:+"-t" "$VID2GIF_DURATION"} \ -i "$VID2GIF_INPUT_FILE" -vf "$filters,palettegen" -update true \ - -y "$palette_file" + -y "$palette_file" && \ ffmpeg -hide_banner -loglevel warning \ - "$start" "$VID2GIF_START" \ - "$duration" "$VID2GIF_DURATION" \ + ${VID2GIF_START:+"-ss" "$VID2GIF_START"} ${VID2GIF_DURATION:+"-t" "$VID2GIF_DURATION"} \ -i "$VID2GIF_INPUT_FILE" -i "$palette_file" -filter_complex "$filters,paletteuse" \ "$VID2GIF_OUTPUT_FILE" -- 2.51.2