Все статьи

Конвертировать видео в GIF через CLI

ffmpeg: собрать палитру и закодировать зацикленный анимированный GIF.

Открыть онлайн-конвертер

Какие пакеты установить

Нужен только ffmpeg. palettegen и paletteuse сохраняют цвета ближе к исходному видео.

ffmpeg
apt install
sudo apt-get update
sudo apt-get install -y ffmpeg

Как вызвать команду

Обрежьте отрезок флагами -ss start и -to end перед -i. В -vf задайте fps, scale, palettegen и paletteuse. Флаг -loop 0 зацикливает GIF, -loop -1 проигрывает один раз.

ffmpeg
ffmpeg -y -i input.mp4 -vf "fps=10,scale=480:-1:flags=lanczos,split[s0][s1];[s0]palettegen[p];[s1][p]paletteuse" -loop 0 output.gif

Пример Dockerfile

Соберите минимальный образ Ubuntu с нужными пакетами и запускайте конвертацию в контейнере.

Dockerfile
FROM ubuntu:24.04

RUN apt-get update && \
    apt-get install -y --no-install-recommends \
        ffmpeg && \
    rm -rf /var/lib/apt/lists/*

WORKDIR /work
docker build && docker run
docker build -t video-to-gif .
docker run --rm -v "$PWD:/work" -w /work video-to-gif \
  ffmpeg -y -i input.mp4 -vf "fps=10,scale=480:-1:flags=lanczos,split[s0][s1];[s0]palettegen[p];[s1][p]paletteuse" -loop 0 output.gif

Примеры команд

Команды ниже можно запускать локально после установки пакетов или внутри контейнера из Dockerfile.

Пример 1
ffmpeg -y -i input.mp4 -vf "fps=10,scale=480:-1:flags=lanczos,split[s0][s1];[s0]palettegen[p];[s1][p]paletteuse" -loop 0 output.gif
Пример 2
ffmpeg -y -ss 1.5 -to 4 -i input.mp4 -vf "fps=10,scale=480:-1:flags=lanczos,split[s0][s1];[s0]palettegen[p];[s1][p]paletteuse" -loop 0 clip.gif
Пример 3
ffmpeg -y -i input.webm -vf "fps=15,scale=480:-1:flags=lanczos,split[s0][s1];[s0]palettegen[p];[s1][p]paletteuse" -loop 0 output.gif
Пример 4
ffmpeg -y -i input.avi -vf "fps=10,scale=320:-1:flags=lanczos,split[s0][s1];[s0]palettegen[p];[s1][p]paletteuse" -loop -1 output.gif