Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
34 changes: 20 additions & 14 deletions plugins/available/gif.plugin.bash
Original file line number Diff line number Diff line change
Expand Up @@ -64,24 +64,25 @@ function v2gif() {
fi

# 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
return 2
}

eval set -- "$args"
local use_gifski=""
local opt_del_after=""
local maxsize=""
local lossiness=""
local maxwidthski=""
local maxsize=()
local lossiness=()
local maxwidthski=()
local giftagopt=""
local giftag=""
local defaultfps=10
local infps=""
local fps=""
local make_webm=""
local alert=5000
local printhelp=""
while [[ $# -ge 1 ]]; do
case "$1" in
--)
Expand All @@ -94,6 +95,11 @@ function v2gif() {
opt_del_after="true"
shift
;;
--help)
# Print Help
printhelp="true"
shift
;;
-h | --high)
#High Quality, use gifski
gifski="$(type -p gifski)"
Expand All @@ -106,8 +112,8 @@ function v2gif() {
shift
;;
-w | --width)
maxsize="-vf scale=$2:-1"
maxwidthski="-W $2"
maxsize=(-vf "scale=$2:-1")
maxwidthski=(-W "$2")
giftag="${giftag}-w$2"
shift 2
;;
Expand All @@ -118,7 +124,7 @@ function v2gif() {
;;
-l | --lossy)
# Use giflossy parameter
lossiness="--lossy=$2"
lossiness=("--lossy=$2")
giftag="${giftag}-l$2"
shift 2
;;
Expand All @@ -141,7 +147,7 @@ function v2gif() {
esac
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 "-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"
Expand All @@ -164,7 +170,7 @@ function v2gif() {
local del_after=$opt_del_after

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 \
-quality best -loop 0 "${file%.*}.webm" || return 2
fi
Expand All @@ -184,12 +190,12 @@ function v2gif() {

if [[ "$use_gifski" = "true" ]]; then
# I trust @pornel to do his own resizing optimization choices
$ffmpeg -loglevel panic -i "$file" -r "$fps" -vcodec png v2gif-tmp-%05d.png \
&& $gifski v2gif-tmp-*.png "$maxwidthski" --fps "$(printf "%.0f" "$fps")" -o "$output_file" || return 2
$ffmpeg -loglevel warning -i "$file" -r "$fps" -vcodec png v2gif-tmp-%05d.png \
&& $gifski "${maxwidthski[@]}" --fps "$(printf "%.0f" "$fps")" -o "$output_file" v2gif-tmp-*.png || return 2
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:- \
| $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

rm v2gif-tmp-*.png
Expand Down Expand Up @@ -299,7 +305,7 @@ function any2webm() {

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 \
-quality best "$fps" "$size" -loop 0 -pix_fmt yuva420p "$output_file" || return 2

Expand Down