pull/2205/merge
Ira Abramov 2023-04-17 17:12:42 +00:00 committed by GitHub
commit a1347721ec
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 20 additions and 14 deletions

View File

@ -64,7 +64,7 @@ function v2gif() {
fi fi
# Parse the options # Parse the options
args=$("$getopt" -l "alert:" -l "lossy:" -l "width:" -l del,delete -l high -l tag -l "fps:" -l webm -o "a:l:w:f:dhmt" -- "$@") || { args=$("$getopt" -l "alert:" -l "lossy:" -l "width:" -l del,delete -l high -l help -l tag -l "fps:" -l webm -o "a:l:w:f:dhmt" -- "$@") || {
echo 'Terminating...' >&2 echo 'Terminating...' >&2
return 2 return 2
} }
@ -72,9 +72,9 @@ function v2gif() {
eval set -- "$args" eval set -- "$args"
local use_gifski="" local use_gifski=""
local opt_del_after="" local opt_del_after=""
local maxsize="" local maxsize=()
local lossiness="" local lossiness=()
local maxwidthski="" local maxwidthski=()
local giftagopt="" local giftagopt=""
local giftag="" local giftag=""
local defaultfps=10 local defaultfps=10
@ -82,6 +82,7 @@ function v2gif() {
local fps="" local fps=""
local make_webm="" local make_webm=""
local alert=5000 local alert=5000
local printhelp=""
while [[ $# -ge 1 ]]; do while [[ $# -ge 1 ]]; do
case "$1" in case "$1" in
--) --)
@ -94,6 +95,11 @@ function v2gif() {
opt_del_after="true" opt_del_after="true"
shift shift
;; ;;
--help)
# Print Help
printhelp="true"
shift
;;
-h | --high) -h | --high)
#High Quality, use gifski #High Quality, use gifski
gifski="$(type -p gifski)" gifski="$(type -p gifski)"
@ -106,8 +112,8 @@ function v2gif() {
shift shift
;; ;;
-w | --width) -w | --width)
maxsize="-vf scale=$2:-1" maxsize=(-vf "scale=$2:-1")
maxwidthski="-W $2" maxwidthski=(-W "$2")
giftag="${giftag}-w$2" giftag="${giftag}-w$2"
shift 2 shift 2
;; ;;
@ -118,7 +124,7 @@ function v2gif() {
;; ;;
-l | --lossy) -l | --lossy)
# Use giflossy parameter # Use giflossy parameter
lossiness="--lossy=$2" lossiness=("--lossy=$2")
giftag="${giftag}-l$2" giftag="${giftag}-l$2"
shift 2 shift 2
;; ;;
@ -141,7 +147,7 @@ function v2gif() {
esac esac
done done
if [[ -z "$*" ]]; then if [[ -z "$*" || "$printhelp" ]]; then
echo "$(tput setaf 1)No input files given. Example: v2gif file [file...] [-w <max width (pixels)>] [-l <lossy level>] $(tput sgr 0)" echo "$(tput setaf 1)No input files given. Example: v2gif file [file...] [-w <max width (pixels)>] [-l <lossy level>] $(tput sgr 0)"
echo "-d/--del/--delete Delete original vid if done suceessfully (and file not over the size limit)" echo "-d/--del/--delete Delete original vid if done suceessfully (and file not over the size limit)"
echo "-h/--high High Quality - use Gifski instead of gifsicle" echo "-h/--high High Quality - use Gifski instead of gifsicle"
@ -164,7 +170,7 @@ function v2gif() {
local del_after=$opt_del_after local del_after=$opt_del_after
if [[ -n "$make_webm" ]]; then if [[ -n "$make_webm" ]]; then
$ffmpeg -loglevel panic -i "$file" \ $ffmpeg -loglevel warning -i "$file" \
-c:v libvpx -crf 4 -threads 0 -an -b:v 2M -auto-alt-ref 0 \ -c:v libvpx -crf 4 -threads 0 -an -b:v 2M -auto-alt-ref 0 \
-quality best -loop 0 "${file%.*}.webm" || return 2 -quality best -loop 0 "${file%.*}.webm" || return 2
fi fi
@ -184,12 +190,12 @@ function v2gif() {
if [[ "$use_gifski" = "true" ]]; then if [[ "$use_gifski" = "true" ]]; then
# I trust @pornel to do his own resizing optimization choices # I trust @pornel to do his own resizing optimization choices
$ffmpeg -loglevel panic -i "$file" -r "$fps" -vcodec png v2gif-tmp-%05d.png \ $ffmpeg -loglevel warning -i "$file" -r "$fps" -vcodec png v2gif-tmp-%05d.png \
&& $gifski v2gif-tmp-*.png "$maxwidthski" --fps "$(printf "%.0f" "$fps")" -o "$output_file" || return 2 && $gifski "${maxwidthski[@]}" --fps "$(printf "%.0f" "$fps")" -o "$output_file" v2gif-tmp-*.png || return 2
else else
$ffmpeg -loglevel panic -i "$file" "$maxsize" -r "$fps" -vcodec png v2gif-tmp-%05d.png \ $ffmpeg -loglevel warning -i "$file" "${maxsize[@]}" -r "$fps" -vcodec png v2gif-tmp-%05d.png \
&& $convert +dither -layers Optimize v2gif-tmp-*.png GIF:- \ && $convert +dither -layers Optimize v2gif-tmp-*.png GIF:- \
| $gifsicle "$lossiness" --no-warnings --colors 256 --delay="$(echo "100/$fps" | bc)" --loop --optimize=3 --multifile - > "$output_file" || return 2 | $gifsicle "${lossiness[@]}" --no-warnings --colors 256 --delay="$(echo "100/$fps" | bc)" --loop --optimize=3 --multifile - > "$output_file" || return 2
fi fi
rm v2gif-tmp-*.png rm v2gif-tmp-*.png
@ -299,7 +305,7 @@ function any2webm() {
echo "$(tput setaf 2)Creating '$output_file' ...$(tput sgr 0)" echo "$(tput setaf 2)Creating '$output_file' ...$(tput sgr 0)"
$ffmpeg -loglevel panic -i "$file" \ $ffmpeg -loglevel warning -i "$file" \
-c:v libvpx -crf 4 -threads 0 -an -b:v "$bandwidth" -auto-alt-ref 0 \ -c:v libvpx -crf 4 -threads 0 -an -b:v "$bandwidth" -auto-alt-ref 0 \
-quality best "$fps" "$size" -loop 0 -pix_fmt yuva420p "$output_file" || return 2 -quality best "$fps" "$size" -loop 0 -pix_fmt yuva420p "$output_file" || return 2