Перейти к содержимому

Направление конвертации

Конвертация MP4 в GIF

Преобразование MP4 → GIF на сервере, без установки программ

.mp4.gif

.mp4.gif
  1. Загрузить
  2. Выбрать формат
  3. Скачать

Загрузка файла

Область приёма файла

или

Файлы MP4. До 5 МБ. Изображение можно вставить из буфера обмена: Ctrl+V.

GIF хранит не больше 256 цветов на кадр, поэтому плавные переходы становятся ступенчатыми. Чтобы файл остался разумного размера, берутся первые 30 секунд, ширина ограничена 480 пикселями, частота — 12 кадрами в секунду. Звук в GIF не переносится.

Исходники и результаты хранятся 60 минут, затем стираются фоновым уборщиком. Предельный размер файла — 5 МБ, срок хранения — час.

MP4 и GIF: характеристики

Характеристики форматов MP4 и GIF рядом
Характеристика.mp4MP4.gifGIF
Полное названиеMPEG-4 Part 14Graphics Interchange Format
РазработчикISO/IEC, рабочая группа MPEGCompuServe (автор — Стив Уилхайт)
Год появления20011987
Расширение.mp4.gif
MIME-типvideo/mp4image/gif
СодержимоеДвоичноеДвоичное
СжатиеС потерямиLZW, без потерь
ТипКонтейнернет данных
ВидеокодекиH.264, H.265, AV1, MPEG-4 Part 2нет данных
АудиокодекиAAC, MP3, AC-3, ALACнет данных
ДорожкиНесколько видео, звуковых и субтитровыхнет данных
Потоковая отдачаДа, при индексе в начале файла (faststart)нет данных
Чем открытьVLC, MPV, Windows Media Player, QuickTime Player, Браузеры Chrome, Safari, Firefoxлюбой браузер, Просмотр фотографий Windows, GIMP, Adobe Photoshop, IrfanView, ScreenToGif
СпецификацияОписание форматаОписание формата
Прозрачностьнет данных1 бит: есть или нет
Несколько страниц в файленет данныхПоддерживается
Палитранет данныхдо 256 цветов на кадр
Анимациянет данныхпокадровая, с задержками
Слабое местонет данныхфотографии и длинные ролики

Преобразование MP4 → GIF

GIF — не видео, а последовательность индексированных кадров: каждый пиксель ссылается на запись в палитре, а палитра вмещает 256 цветов. Сборка выполняется в два прохода: первый строит палитру по самому фрагменту, второй раскладывает кадры по этой палитре с рассеиванием. Параметры зафиксированы, настраивать здесь нечего.

Зафиксировано следующее: первые 30 секунд ролика, ширина 480 пикселей (высота считается по пропорциям), 12 кадров в секунду, бесконечное повторение через расширение NETSCAPE2.0. Палитра строится в режиме diff — приоритет отдаётся цветам движущихся областей, а не статичного фона, потому что именно там ступенчатость заметна. Рассеивание выполняется алгоритмом Sierra Lite: он разбрасывает ошибку квантования по соседним пикселям и превращает полосы на градиенте в рассеянный шум.

Арифметика объёма выглядит так. Кадр 480 × 270 содержит 129 600 пикселей по одному байту индекса; 12 кадров в секунду на 30 секундах дают 360 кадров, то есть около 46 МБ до сжатия. Единственный доступный GIF механизм упаковки — LZW со словарём до 4096 записей, работающий внутри кадра; межкадрового предсказания в формате нет, есть лишь отбрасывание неизменившихся областей. На типичном сюжете остаётся 8–25 МБ.

Отсюда границы применимости. Съёмка с дрожащей камерой или мелкой листвой на фоне не даёт совпадающих областей между кадрами, и файл раздувается; статичный план с одним движущимся объектом упаковывается в разы плотнее. Звук в GIF не переносится вовсе — формат его не описывает. Направление работает по одному файлу за задание, на обработку отводится 900 секунд.

Порядок преобразования MP4 → GIF

  1. Шаг 1

    Вырезание фрагмента

    В работу идут первые 30 секунд, поэтому нужный момент должен стоять в начале ролика. Обрежьте видео до загрузки в любом редакторе.

  2. Шаг 2

    Загрузка

    За задание принимается один файл: сборка палитры и раскладка кадров занимают воркер целиком. Предел размера входа показан в форме загрузки.

  3. Шаг 3

    Два прохода

    Первый проход считает статистику цветов и строит палитру из 256 записей, второй квантует кадры по этой палитре с рассеиванием ошибки.

  4. Шаг 4

    Оценка веса

    Проверьте объём готового файла под требования площадки. Если он велик, сократите фрагмент по длительности — вес меняется почти линейно числу кадров.

Вопросы по работе сервиса

Почему GIF весит больше исходного видео?

Потому что в GIF нет межкадрового предсказания. H.264 хранит опорный кадр и дальше описывает движение блоков относительно него, а GIF упаковывает каждый кадр алгоритмом LZW внутри самого кадра и умеет лишь не перерисовывать неизменившиеся области. Тридцать секунд при 12 кадрах в секунду — это 360 самостоятельных изображений, поэтому анимация закономерно оказывается тяжелее исходного ролика.

Можно ли увеличить ширину или частоту кадров?

Нет, значения зафиксированы: 480 пикселей и 12 кадров в секунду. Ширина 720 означала бы в 2,25 раза больше пикселей в каждом кадре, а 24 кадра в секунду — вдвое больше кадров; в сумме файл вырос бы примерно в четыре с половиной раза и перестал приниматься большинством площадок.

Откуда полосы на градиентах и как они сглажены?

В палитре 256 записей, а плавный переход требует тысяч оттенков, поэтому цвета округляются до ближайших доступных. Ошибка округления рассеивается по соседним пикселям алгоритмом Sierra Lite — визуально полосы превращаются в мелкий шум. Полностью убрать ступенчатость в пределах формата нельзя.

Будет ли в результате звук?

Нет. Спецификация GIF описывает только последовательность изображений и задержки между ними, звуковых потоков в ней не предусмотрено. Если звук нужен, используйте короткое видео в MP4.

Как обрабатывается фрагмент из середины ролика?

Никак: берутся первые 30 секунд от начала файла. Вырезайте нужный отрезок до загрузки — подойдёт любой видеоредактор или встроенная обрезка в галерее телефона.