diff --git a/src/const.lisp b/src/const.lisp index 08eb7dc..da7d535 100644 --- a/src/const.lisp +++ b/src/const.lisp @@ -33,3 +33,9 @@ (defparameter +gif-scale+ "640:-1") +(defparameter +gif-fps-divider+ 2.0 + "Divider for GIF frame rate (output fps = source fps / divider)") + +(defparameter +min-file-size+ 4096 + "Minimum file size in bytes to consider a file valid (not corrupt/incomplete)") + diff --git a/src/ffmpeg.lisp b/src/ffmpeg.lisp index 2cb881d..0ffb943 100644 --- a/src/ffmpeg.lisp +++ b/src/ffmpeg.lisp @@ -24,7 +24,7 @@ :if-does-not-exist nil) (when stream (file-length stream))))) ;; Delete empty or very small files (header-only, etc.) - (when (and file-size (< file-size 1024)) + (when (and file-size (< file-size +min-file-size+)) (delete-file output) (format t "~a Cleaned up incomplete output file: ~a~%" (log-tag "info") output))))) @@ -55,7 +55,7 @@ "Construct the ffmpeg command list for GIF mode using input filename and target fps." (let* ((input (visp-options-input opts)) (cmd (list "ffmpeg" "-i" input)) - (half-fps (/ fps 2.0)) + (half-fps (/ fps +gif-fps-divider+)) (scale-str (format nil "scale=~a" +gif-scale+)) (fps-str (format nil "fps=~2,2f" half-fps)) (filter-complex diff --git a/src/package.lisp b/src/package.lisp index 00207a6..b71d74e 100644 --- a/src/package.lisp +++ b/src/package.lisp @@ -9,6 +9,8 @@ :+pixfmt-name-map+ :+allowed-input-extensions+ +gif-scale+ + +gif-fps-divider+ + +min-file-size+ ;; main.lisp :main