Видео в GIF

Видео в GIF — онлайн-создатель анимированных GIF — Превратите видеоклип в зацикленный анимированный GIF с выбранной вами частотой кадров, шириной и качеством палитры. GIF — давний открытый формат, который понимает практически каждое устройство и чат-платформа. Всё обрабатывается локально в вашем браузере, файлы никогда не загружаются на сервер.
Поддерживаемый вход: WebM, OGV (Ogg Video), MKV, AVI, GIF, WebP, APNG и другие распространённые видеоформаты. Всё конвертируется локально в вашем браузере; файлы никогда не загружаются на сервер.
При первом использовании в текущий браузер загружается движок обработки видео примерно на 30 МБ. Он кэшируется и затем используется повторно, поэтому, пожалуйста, наберитесь терпения.
🎥
Нажмите, чтобы выбрать, или перетащите видеофайл
Поддерживаются WebM, OGV, MKV, AVI, GIF и другие распространённые форматы; рекомендуется до 500 МБ
Частота кадров: выше = плавнее, но файл больше
Макс. ширина: масштабируется автоматически с сохранением соотношения сторон
Цвета палитры: меньше цветов = меньше файл, небольшая потеря качества
Конвертация в анимированный GIF: извлекает кадры с выбранной частотой, масштабирует до максимальной ширины и строит оптимизированную палитру цветов для цикла. Аудиодорожка (если есть) отбрасывается.
Почему GIF такие большие? Палитры, дизеринг и формат 1987 года, выполняющий роль видео

GIF (Graphics Interchange Format, 1987) был задуман как формат неподвижных изображений с небольшим бонусом анимации, и это видно. Два свойства определяют всё на этой странице: каждый кадр ограничен 256 цветами, выбранными из сохранённой палитры, а кадры сжимаются с помощью LZW — универсального байтового компрессора эпохи zip, который понятия не имеет, что хранится видео. Здесь нет компенсации движения и арифметики «этот кадр почти как предыдущий», как у настоящих видеокодеков; каждый кадр — по сути, отдельно сжатая картинка. Понимание палитры — ключ к получению маленьких и хорошо выглядящих GIF.

Пять фактов, на которые опирается остальная часть страницы:
• каждый кадр несёт не более 256 цветов (28) из палитры; цветное видео должно быть квантовано до этого
• дизеринг имитирует недостающие цвета, рассыпая точки соседних записей палитры — файлы больше, градиенты плавнее
• тайминг кадров хранится в единицах по 10 мс: 10 кадров/с → задержка 10 (100 мс); практический минимум — задержка 2 (20 мс = 50 кадров/с)
• кадры сжимаются LZW независимо — отсутствие межкадрового сжатия — главный убийца размера
• меньше цветов, меньше кадров, меньшие размеры: каждая ручка уменьшает вход LZW, и эффект перемножается
Палитра из 256 цветов и полосы

Пиксель цветного видео требует 24 бит (16,7 миллиона возможностей); пиксель GIF — это 8-битный индекс в таблице не более чем из 256 цветов. Поэтому конвертация видео в GIF выполняет квантование палитры: выбрать 256 цветов, которые лучше всего представляют содержимое, и привязать каждый пиксель к ближайшему. Градиенты платят за это цену — небо, которому нужны 4000 слегка различных синих, получает 30, и плавный переход схлопывается в видимые полосы, называемые бандингом. Контрастная плоская графика (логотипы, спрайты, диаграммы) почти не замечает этого; фотографии и видео страдают сильнее всего. Качество палитры конвертера — большая часть качества его вывода.

Дизеринг: обмен шума на плавность

Дизеринг — классическое средство от бандинга: вместо привязки каждого пикселя к ближайшему цвету палитры рассыпать смесь двух ближайших цветов, так что среднее по небольшой области совпадает с исходным тоном. Градиенты выглядят заметно плавнее — полосы растворяются в мелкий шум, который глаз сливает при обычном расстоянии просмотра. Цена — размер файла: шум — это высокочастотная детализация, а LZW сжимает регулярные полосы гораздо лучше, чем рассыпанные точки. Это фундаментальный компромисс GIF, который показывает эта страница: отключите дизеринг для меньших файлов с бандингом, включите его для плавных градиентов ценой размера.

Тайминг кадров: порог 20 мс

GIF хранит задержку между кадрами в единицах 1/100 секунды. 10 кадров/с означает задержку 10 (100 мс на кадр); 20 кадров/с — задержку 5 (50 мс). Наименьшее полезное значение — 2 (20 мс, то есть 50 кадров/с), а на практике большинство браузеров поднимают всё, что ниже, до 100 мс — запрос 60 кадров/с тихо даёт более медленное воспроизведение. За пределом каждое увеличение fps умножает число кадров: 15 кадров/с → 50 кадров/с для того же клипа означает более чем втрое больше кадров, а размер GIF примерно линейно растёт с числом кадров. 10-секундный клип при 15 кадрах/с — это 150 кадров; при 50 кадрах/с было бы 500.

Почему GIF раздуваются по сравнению с настоящим видео

Современные видеокодеки тратят большую часть битов на описание изменения между кадрами — неподвижная камера означает, что последующие кадры почти ничего не стоят. LZW в GIF видит каждый кадр как свежее изображение (его единственный межкадровый трюк — флаг прозрачности, пропускающий пиксели, совпадающие с предыдущим кадром, что помогает гораздо меньше, чем настоящая компенсация движения). Эмпирическое правило: для того же клипа ожидайте, что GIF будет во много раз больше хорошо закодированного WebM того же разрешения. Если назначение принимает настоящее видео, предпочитайте его; GIF выигрывает только там, где важны его универсальность и поведение автовоспроизведения с циклом.

Распространённые заблуждения
  • «GIF сжат, значит, он эффективен для видео». LZW — байтовый компрессор 1987 года без модели движения; для движущегося материала это наименее эффективный широко используемый в вебе формат.
  • «Мой исходник 60 кадров/с, значит, и GIF должен быть таким». Порог задержки 20 мс ограничивает GIF 50 кадрами/с, а браузеры поднимают задержки ниже порога. Точная покадровая передача — то, что GIF не может обеспечить.
  • «Дизеринг — это просто шум, который стоит выключить». Это осознанный компромисс качества и размера: выключено — меньше файлы с бандингом, включено — плавные градиенты, которые стоят байтов.
  • «Меньше цветов всегда выглядит ужасно». Для плоской графики и контрастной анимации даже 64 цвета могут выглядеть так же, как 256 — и ещё уменьшить файл.

Связанные инструменты: Видео в WebP/APNG для цветной анимации с настоящим сжатием, GIF в видео для обратного направления (палитра в цвет), Видео в WebM для того же клипа как настоящего видео, и Видеорезак, чтобы обрезать исходник перед конвертацией.