ffgif() { p="fps=10,scale=${4:-320}:-1:flags=lanczos"; ffmpeg -y -ss ${2:-0} -t ${3:-0} -i "$1" -vf ${p},palettegen .p.png && ffmpeg -ss ${2:-0} -t ${3:-0} -i "$1" -i .p.png -filter_complex "${p}[x];[x][1:v]paletteuse" "${1%.*}".gif && rm .p.png; }
Команда ffgif() создает высококачественный GIF из видеофайла. Команда использует утилиту ffmpeg для обработки видео и создания гиф-анимации.
Аргументы:
— $1 — исходный видеофайл;
— ${2:-0} — начальное время в формате hh:mm:ss (необязательный параметр, по умолчанию — 0);
— ${3:-0} — продолжительность в формате hh:mm:ss (необязательный параметр, по умолчанию — 0);
— ${4:-320} — ширина GIF в пикселях (необязательный параметр, по умолчанию — 320).
В результате работы команды создается файл GIF с тем же именем, что и исходный видеофайл, в той же директории. Время начала и продолжительность гиф-анимации определяются аргументами $2 и $3 соответственно. Если эти аргументы не указаны, то гиф-анимация будет создана на всю продолжительность видеофайла.
Кроме того, GIF будет масштабироваться до указанной ширины ${4:-320} и будет иметь качество, близкое к оригиналу благодаря фильтру flags=lanczos.
