Merge 3334212944 into e38696a0ac
commit
a1347721ec
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue