Направление конвертации
Конвертация MP4 в GIF
Преобразование MP4 → GIF на сервере, без установки программ
- Загрузить
- Выбрать формат
- Скачать
Загрузка файла
Область приёма файла
или
Файлы MP4. До 5 МБ. Изображение можно вставить из буфера обмена: Ctrl+V.
GIF хранит не больше 256 цветов на кадр, поэтому плавные переходы становятся ступенчатыми. Чтобы файл остался разумного размера, берутся первые 30 секунд, ширина ограничена 480 пикселями, частота — 12 кадрами в секунду. Звук в GIF не переносится.
Исходники и результаты хранятся 60 минут, затем стираются фоновым уборщиком. Предельный размер файла — 5 МБ, срок хранения — час.
MP4 и GIF: характеристики
| Характеристика | .mp4MP4 | .gifGIF |
|---|---|---|
| Полное название | MPEG-4 Part 14 | Graphics Interchange Format |
| Разработчик | ISO/IEC, рабочая группа MPEG | CompuServe (автор — Стив Уилхайт) |
| Год появления | 2001 | 1987 |
| Расширение | .mp4 | .gif |
| MIME-тип | video/mp4 | image/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
Вырезание фрагмента
В работу идут первые 30 секунд, поэтому нужный момент должен стоять в начале ролика. Обрежьте видео до загрузки в любом редакторе.
Шаг 2
Загрузка
За задание принимается один файл: сборка палитры и раскладка кадров занимают воркер целиком. Предел размера входа показан в форме загрузки.
Шаг 3
Два прохода
Первый проход считает статистику цветов и строит палитру из 256 записей, второй квантует кадры по этой палитре с рассеиванием ошибки.
Шаг 4
Оценка веса
Проверьте объём готового файла под требования площадки. Если он велик, сократите фрагмент по длительности — вес меняется почти линейно числу кадров.
Вопросы по работе сервиса
Почему GIF весит больше исходного видео?
Потому что в GIF нет межкадрового предсказания. H.264 хранит опорный кадр и дальше описывает движение блоков относительно него, а GIF упаковывает каждый кадр алгоритмом LZW внутри самого кадра и умеет лишь не перерисовывать неизменившиеся области. Тридцать секунд при 12 кадрах в секунду — это 360 самостоятельных изображений, поэтому анимация закономерно оказывается тяжелее исходного ролика.
Можно ли увеличить ширину или частоту кадров?
Нет, значения зафиксированы: 480 пикселей и 12 кадров в секунду. Ширина 720 означала бы в 2,25 раза больше пикселей в каждом кадре, а 24 кадра в секунду — вдвое больше кадров; в сумме файл вырос бы примерно в четыре с половиной раза и перестал приниматься большинством площадок.
Откуда полосы на градиентах и как они сглажены?
В палитре 256 записей, а плавный переход требует тысяч оттенков, поэтому цвета округляются до ближайших доступных. Ошибка округления рассеивается по соседним пикселям алгоритмом Sierra Lite — визуально полосы превращаются в мелкий шум. Полностью убрать ступенчатость в пределах формата нельзя.
Будет ли в результате звук?
Нет. Спецификация GIF описывает только последовательность изображений и задержки между ними, звуковых потоков в ней не предусмотрено. Если звук нужен, используйте короткое видео в MP4.
Как обрабатывается фрагмент из середины ролика?
Никак: берутся первые 30 секунд от начала файла. Вырезайте нужный отрезок до загрузки — подойдёт любой видеоредактор или встроенная обрезка в галерее телефона.