Libavif — специализированный инструмент для кодирования, декодирования и технической проверки изображений AVIF. Это не фоторедактор с привычным окном, кнопкой Открыть, панелью слоев и визуальным предпросмотром. Основной рабочий интерфейс Libavif — командная строка, а главные пользовательские утилиты проекта — avifenc, avifdec и вспомогательные диагностические инструменты. В практическом обзоре Libavif правильнее рассматривать не как еще один конвертер картинок, а как точную утилиту для тех, кому нужно управляемое AVIF-кодирование, AVIF-декодирование, работа с прозрачностью, цветом, глубиной, YUV-форматами и автоматизацией.
Выбор редакции
Скачать Libavif бесплатно
ФотоМАСТЕР
- Простой интерфейс
- Ретушь и замена фона
- Фильтры и автокоррекция
- Быстрая обработка фото
Libavif
- Сложнее простых редакторов
- Может быть избыточна для быстрых правок
- Нужно время на освоение
- Не все функции нужны новичку
Libavif реализует работу с AV1 Image File Format и предоставляет C-библиотеку вместе с консольными приложениями avifenc и avifdec. Проект кодирует и декодирует AV1-совместимые YUV-форматы и битовые глубины, включая изображения с альфа-каналом.

Главное отличие Libavif от графических AVIF-конвертеров — не в простоте, а в контроле. Пользователь задает параметры явно: качество цвета, качество альфа-канала, скорость кодирования, количество потоков, выходную YUV-схему, глубину, режим lossless, прогрессивную структуру, сетку, кадры, метаданные и ограничения декодирования. Такой формат работы не рассчитан на случайное нажатие сохранить как AVIF. Он рассчитан на повторяемый результат: одна команда, один набор параметров, одинаковое поведение в скриптах, сборочных процессах и серверной обработке.
Libavif особенно полезна там, где AVIF нужен не разово, а системно: подготовка изображений для сайта, автоматическое сжатие ассетов, тестирование поддержки AVIF в приложении, преобразование PNG/JPEG в AVIF, обратное декодирование AVIF в PNG/JPEG/Y4M, диагностика файлов через
avifdec --info, проверка метаданных, подбор профилей качества для изображений с прозрачностью и создание воспроизводимого пайплайна оптимизации.
Что представляет собой Libavif
Libavif состоит из двух уровней.
Первый уровень — библиотека. Она нужна разработчикам, которые встраивают AVIF-кодирование и AVIF-декодирование в собственные приложения. Через библиотеку можно программно создавать, читать и обрабатывать AVIF-файлы, работать с AVIF-контейнером, цветовой информацией, альфа-каналом и параметрами кодека.
Второй уровень — консольные утилиты. Именно с ними чаще сталкивается пользователь:
| Утилита | Назначение | Типичная задача |
|---|---|---|
avifenc | Кодирование изображения в AVIF | Преобразовать photo.jpg или image.png в image.avif |
avifdec | Декодирование AVIF | Получить output.png, output.jpg или output.y4m из AVIF |
avifdump | Технический разбор структуры AVIF | Посмотреть внутренние блоки и свойства файла |
avifgainmaputil | Работа с gain map-сценариями | Обработка HDR/SDR-связанных данных в специальных workflow |
В обычной работе основной акцент приходится на avifenc и avifdec. avifenc сжимает JPEG, PNG или Y4M в AVIF, а avifdec распаковывает AVIF в JPEG, PNG или Y4M. Синтаксис avifenc построен вокруг схемы avifenc [options] input.[jpg|jpeg|png|y4m] output.avif, а avifdec работает по схеме avifdec [options] input.avif output.[jpg|jpeg|png|y4m] или avifdec --info input.avif
.
Важная особенность: Libavif не редактирует изображение в бытовом смысле. В ней нет кистей, штампа, кривых, пластики, ретуши, кадрирования мышью, истории действий и холста. Она не заменяет GIMP, Krita, Photoshop или Affinity Photo. Ее задача другая: принять готовый входной файл, закодировать его в AVIF с заданными параметрами или декодировать AVIF обратно в удобный формат.
Для каких задач нужна программа
Libavif хорошо подходит для задач, где важны точность, повторяемость и управление параметрами.
Подготовка изображений для сайта
AVIF часто используют для уменьшения веса изображений на страницах. В таком сценарии Libavif берет исходные JPEG или PNG и создает .avif-версии для тега <picture>
, CDN, статического сайта или frontend-сборки.
Пример базового преобразования JPEG-фото:
avifenc --qcolor 75 --speed 6 photo.jpg photo.avif
Такой подход удобен тем, что одну и ту же команду можно запускать на сотнях файлов. Если качество и скорость подобраны правильно, результат легко воспроизводится при каждом обновлении проекта.
Конвертация PNG с прозрачностью
Для иконок, интерфейсных элементов, логотипов и стикеров важно отдельно контролировать прозрачность. В Libavif за это отвечает --qalpha.
avifenc --qcolor 80 --qalpha 100 icon.png icon.avif
Здесь цветовая часть кодируется с качеством 80, а альфа-канал сохраняется максимально аккуратно. Параметры --qcolor и --qalpha принимают значения от 0 до 100, где 100 соответствует lossless-режиму для соответствующей составляющей.
Обратное преобразование AVIF в PNG или JPEG
avifdec нужен, когда AVIF-файл требуется проверить, распаковать, передать в программу без AVIF-поддержки или использовать в пайплайне, где следующая стадия принимает PNG/JPEG/Y4M.
avifdec image.avif image.png
Для JPEG-выхода используется параметр качества:
avifdec --quality 92 image.avif image.jpg
Параметр --quality у avifdec относится к JPEG-выходу и задается в диапазоне 0..100. PNG-выход настраивается через --png-compress.
Диагностика AVIF-файлов
Libavif удобна не только для конвертации, но и для проверки. Команда avifdec --info декодирует кадры и выводит информацию о файле без сохранения результата на диск.
avifdec --info image.avif
Этот режим полезен, когда нужно понять, что внутри файла: какая глубина, какой формат, есть ли последовательность кадров, как ведет себя декодер, не упирается ли изображение в ограничения размера.
Автоматизация обработки
Поскольку Libavif работает через командную строку, она хорошо встраивается в Bash, PowerShell, Makefile, npm scripts, CI, backend-обработчики и batch-процессы. Графический интерфейс в таких сценариях только мешал бы: автоматизации нужны параметры, коды возврата и предсказуемые имена файлов.
Пример Bash-обработки всех PNG в каталоге:
for f in *.png; do
avifenc --qcolor 78 --speed 6 --jobs all "$f" "${f%.png}.avif"
done
Пример PowerShell:
Get-ChildItem *.png | ForEach-Object {
.avifenc.exe --qcolor 78 --speed 6 --jobs all $_.Name ($_.BaseName + ".avif")
}
Рабочий интерфейс Libavif
У Libavif нет графической оболочки, поэтому ее интерфейсом становится терминал. Это не недостаток, а базовая логика программы. Все действия выполняются через команды, а роль элементов интерфейса выполняют параметры.
Типичная команда состоит из нескольких частей:
avifenc --qcolor 75 --speed 6 input.png output.avif
Разбор команды:
| Часть команды | Что означает |
|---|---|
avifenc | Запускается кодировщик AVIF |
--qcolor 75 | Задается качество цветовой части |
--speed 6 | Выбирается скорость работы кодера |
input.png | Указывается исходное изображение |
output.avif | Указывается итоговый AVIF-файл |
Для avifdec логика обратная:
avifdec input.avif output.png
| Часть команды | Что означает |
|---|---|
avifdec | Запускается декодер AVIF |
input.avif | Указывается исходный AVIF |
output.png | Задается файл, который нужно получить |

Справка вызывается стандартно:
avifenc --help
avifdec --help
Версия утилиты:
avifenc --version
avifdec --version
Техническая информация о файле:
avifdec --info input.avif

В повседневном использовании удобнее думать о Libavif как о точном приборе. В графическом редакторе пользователь видит ползунок и примерно оценивает результат глазами. В Libavif пользователь прямо записывает, что именно нужно: --qcolor 80, --qalpha 100, --yuv 444, --speed 4, --jobs all, --lossless. Такой подход требует аккуратности, зато дает контроль.
Поддерживаемые операции
Libavif выполняет ограниченный, но хорошо очерченный набор задач.
Кодирование в AVIF
avifenc
принимает JPEG, PNG и Y4M и создает AVIF. Входные форматы кодировщика — JPEG, PNG и YUV4MPEG2/Y4M.
Примеры:
avifenc input.jpg output.avif
avifenc input.jpeg output.avif
avifenc input.png output.avif
avifenc input.y4m output.avif
Декодирование из AVIF
avifdec
принимает AVIF и сохраняет результат в JPEG, PNG или Y4M. Выходной формат определяется расширением итогового файла.
Примеры:
avifdec input.avif output.png
avifdec input.avif output.jpg
avifdec input.avif output.y4m
Проверка информации
avifdec --info input.avif
Режим --info удобен при диагностике файлов, сравнении результатов кодирования, проверке последовательностей и прогрессивных AVIF.
Управление качеством
Для avifenc основными параметрами качества являются --qcolor и --qalpha.
avifenc --qcolor 70 input.jpg output.avif
avifenc --qcolor 82 --qalpha 100 input.png output.avif
Цвет и прозрачность задаются отдельно, поэтому Libavif хорошо подходит для PNG с альфа-каналом: можно сжимать цветовую часть сильнее, но оставить прозрачность без заметных артефактов.
Управление скоростью
Скорость кодирования задается параметром --speed. Диапазон — от 0 до 10: 0 — самый медленный режим, 10 — самый быстрый. Значение по умолчанию — 6.
avifenc --speed 2 input.png output.avif
avifenc --speed 8 input.png output-fast.avif
Низкая скорость обычно выбирается для финальной оптимизации, высокая — для быстрых черновых прогонов или массовой обработки, где важнее время.
Многопоточность
--jobs задает количество рабочих потоков. Значение all позволяет использовать доступные ядра процессора.
avifenc --jobs all --qcolor 75 input.jpg output.avif
avifdec --jobs all input.avif output.png
На больших изображениях и пакетной обработке это один из самых практичных параметров.
Режим без потерь
--lossless переводит кодирование в режим, ориентированный на сохранение данных без потерь.
avifenc --lossless input.png output.avif
Lossless не означает всегда самый маленький файл. Для некоторых изображений без потерь AVIF может получиться крупнее, чем результат с разумным lossy-качеством. Особенно это заметно на шумных фотографиях, сложных текстурах и уже сжатых JPEG.
Глубина цвета
Параметр --depth задает выходную глубину на канал для JPEG/PNG-входа: 8, 10 или 12 бит. Для Y4M глубина должна соответствовать входному материалу.
avifenc --depth 10 input.png output.avif
avifenc --depth 12 input.png output.avif
Глубина важна для HDR, широких цветовых пространств, градиентов и сценариев, где 8 бит на канал дают заметные ступеньки.
YUV-формат
Параметр --yuv задает выходную схему:
avifenc --yuv 444 input.png output.avif
avifenc --yuv 420 input.jpg output.avif
avifenc --yuv 400 gray.png gray.avif
Доступны auto, 444, 422, 420 и 400; для Y4M формат сохраняется. При auto JPEG по возможности учитывает внутренний формат, grayscale PNG переходит в 400, а остальные случаи получают 444
.
Практический смысл:
| Формат | Что сохраняет | Где применять |
|---|---|---|
444 | Полную цветовую детализацию | Скриншоты, интерфейсы, текст, иконки |
422 | Промежуточный вариант | Видео-подобные материалы, отдельные workflow |
420 | Уменьшенную цветовую детализацию | Фотографии для веба |
400 | Только яркостный канал | Черно-белые изображения |
auto | Автоматический выбор | Базовое кодирование без ручной настройки |
Для фотографий 420 часто дает хороший баланс размера и качества. Для скриншотов интерфейса, мелкого текста, схем и UI-иконок лучше использовать 444, потому что цветовые контуры не будут размываться из-за субдискретизации.
avifenc: кодирование изображений в AVIF
avifenc — главный инструмент Libavif для создания AVIF-файлов. Он принимает готовое изображение, применяет заданные параметры и сохраняет результат в .avif.

Базовая конвертация PNG в AVIF
Самый простой сценарий:
avifenc input.png output.avif
Команда берет input.png, кодирует изображение и создает output.avif
. Такой запуск подходит для быстрой проверки, но для реальной оптимизации обычно задают качество и скорость явно.
Более контролируемый вариант:
avifenc --qcolor 78 --speed 6 input.png output.avif
Здесь сразу видно, с какими параметрами создан файл. Через месяц или на другой машине команду можно повторить без угадывания настроек.
Конвертация JPEG в AVIF
avifenc --qcolor 72 --speed 6 photo.jpg photo.avif
JPEG уже является форматом с потерями. Если исходная фотография содержит JPEG-артефакты, Libavif не восстановит детали. Она закодирует то изображение, которое получила на входе. Поэтому для максимального качества лучше кодировать AVIF из исходников высокого качества, а не из уже сильно пережатых JPEG.
Для веб-фотографий разумный стартовый профиль:
avifenc --qcolor 70 --speed 6 --jobs all photo.jpg photo.avif
Для более аккуратного результата:
avifenc --qcolor 82 --speed 4 --jobs all photo.jpg photo.avif
Для быстрого массового прогона:
avifenc --qcolor 65 --speed 8 --jobs all photo.jpg photo.avif
Работа с PNG и прозрачностью
PNG часто используют для графики с прозрачностью: логотипы, кнопки, иконки, элементы интерфейса. В таких файлах альфа-канал важен не меньше цвета. Если прозрачность будет сжата слишком грубо, вокруг объекта появятся рваные края, грязные ореолы и ступеньки.
Практичный вариант:
avifenc --qcolor 80 --qalpha 100 --yuv 444 icon.png icon.avif
Что здесь происходит:
| Параметр | Значение |
|---|---|
--qcolor 80 | Цветовая часть сжимается достаточно аккуратно |
--qalpha 100 | Альфа-канал сохраняется без потерь |
--yuv 444 | Цветовая детализация не режется |
icon.png | Входной PNG с прозрачностью |
icon.avif | Итоговый AVIF |
Для простых иконок без полутонов можно попробовать lossless:
avifenc --lossless icon.png icon.avif
Но lossless нужно проверять по размеру. Иногда lossy-цвет с безупречной альфой дает меньший файл без видимой потери.
Качество цвета: --qcolor
--qcolor
— основной параметр визуального качества цветовой части. Диапазон 0..100, где 100 соответствует lossless для цвета.
Примеры:
avifenc --qcolor 55 input.jpg output.avif
avifenc --qcolor 75 input.jpg output.avif
avifenc --qcolor 90 input.jpg output.avif
Практическая логика:
| Диапазон | Характер результата |
|---|---|
| 50–60 | Агрессивное сжатие, подходит не для всех изображений |
| 65–75 | Часто удобный веб-диапазон для фотографий |
| 80–88 | Аккуратный результат для важных изображений |
| 90+ | Высокое качество, файл заметно крупнее |
| 100 | Lossless для цветовой части |
Нет универсального значения, которое подходит всем изображениям. Фото, скриншот интерфейса, градиент, логотип и текстовая схема реагируют на сжатие по-разному.
Качество альфа-канала: --qalpha
--qalpha задает качество прозрачности. Диапазон такой же: 0..100, где 100 соответствует lossless для альфа-канала.
avifenc --qcolor 76 --qalpha 100 badge.png badge.avif
На практике альфу часто оставляют выше, чем цвет. Для веб-иконок и логотипов плохая прозрачность заметнее, чем небольшая потеря цветовой детализации.
Скорость кодирования: --speed
--speed влияет на время кодирования и эффективность сжатия. Диапазон 0..10: чем меньше число, тем медленнее кодирование; чем больше число, тем быстрее.
avifenc --speed 0 input.png output.avif
avifenc --speed 6 input.png output.avif
avifenc --speed 10 input.png output.avif
Рабочие ориентиры:
| Значение | Когда использовать |
|---|---|
| 0–2 | Финальная оптимизация, когда время не критично |
| 3–5 | Качественная обработка важных изображений |
| 6 | Сбалансированный режим |
| 7–8 | Быстрая пакетная обработка |
| 9–10 | Черновики, превью, быстрые тесты |
Для большого сайта не всегда разумно кодировать все изображения на --speed 0: экономия размера может не оправдать затраты времени. Лучше протестировать несколько профилей на реальном наборе изображений.
Потоки: --jobs
--jobs управляет количеством рабочих потоков. Значение all использует доступные ядра процессора.
avifenc --jobs all --qcolor 75 --speed 6 input.jpg output.avif
При обработке больших изображений и каталогов этот параметр существенно влияет на общее время. Для сервера или CI можно ограничить число потоков, чтобы не забивать машину полностью:
avifenc --jobs 4 --qcolor 75 --speed 6 input.jpg output.avif
Запрет перезаписи: --no-overwrite
--no-overwrite защищает существующий выходной файл.
avifenc --no-overwrite input.png output.avif
Это полезно в пакетных скриптах, где ошибка в имени файла может случайно уничтожить уже подготовленный результат. Параметр особенно важен при обработке каталогов, где выходные имена строятся автоматически.
Выходной файл через --output
Обычно выходной файл указывается последним аргументом:
avifenc input.png output.avif
Но можно задать его явно:
avifenc input.png --output output.avif
Этот вариант удобен в скриптах, где проще формировать параметр --output, чем переставлять аргументы.
Lossless-кодирование
avifenc --lossless input.png output.avif
Режим без потерь лучше всего подходит для:
- графики с плоскими областями;
- технических изображений;
- изображений, где нельзя допускать искажения пикселей;
- архивных копий;
- промежуточных файлов в рабочем процессе.
Для фотографий lossless часто дает слишком большой файл. Если задача — веб-оптимизация, чаще выигрывает аккуратный lossy-профиль:
avifenc --qcolor 78 --speed 5 photo.png photo.avif
Глубина: --depth
avifenc --depth 8 input.png output.avif
avifenc --depth 10 input.png output.avif
avifenc --depth 12 input.png output.avif
Для обычной веб-графики чаще достаточно 8 бит. Для градиентов, HDR-подготовки и сложных цветовых материалов нужны 10 или 12 бит. Параметр --depth у avifenc принимает 8, 10 или 12 для JPEG/PNG-входа.
Цветовой диапазон и YUV
Параметр --yuv
— один из ключевых при подготовке изображений разного типа.
Для фотографии:
avifenc --qcolor 72 --yuv 420 photo.jpg photo.avif
Для скриншота интерфейса:
avifenc --qcolor 85 --yuv 444 screenshot.png screenshot.avif
Для grayscale:
avifenc --qcolor 80 --yuv 400 gray.png gray.avif
420 уменьшает цветовую информацию и хорошо подходит для фото, где глаз хуже замечает цветовое прореживание. 444 сохраняет цветовую детализацию и лучше подходит для текста, схем, пиктограмм, UI и изображений с резкими цветными границами.
Premultiply alpha: --premultiply
avifenc --premultiply icon.png icon.avif
--premultiply предварительно умножает цвет на альфа-канал и сигнализирует это в AVIF. Такой режим нужен не всегда. Он имеет смысл в пайплайнах, где последующая обработка ожидает premultiplied alpha и где важно согласованное смешивание цвета и прозрачности.
Метаданные
avifenc умеет игнорировать отдельные типы метаданных:
avifenc --ignore-exif input.jpg output.avif
avifenc --ignore-xmp input.jpg output.avif
avifenc --ignore-profile input.png output.avif
avifenc --ignore-alpha input.png output.avif
Практическое значение:
| Параметр | Что делает |
|---|---|
--ignore-exif | Не переносит Exif |
--ignore-xmp | Не переносит XMP |
--ignore-profile / --ignore-icc | Не использует встроенный цветовой профиль |
--ignore-alpha | Игнорирует альфа-канал |
Эти флаги нужны, когда файл должен быть максимально компактным или когда метаданные мешают корректной обработке. Но удаление цветового профиля может изменить внешний вид изображения в некоторых workflow, поэтому для важных материалов это проверяют глазами.
Поворот, отражение и чистая область
avifenc поддерживает запись свойств, связанных с трансформациями и областью отображения:
avifenc --irot 1 input.png output.avif
avifenc --imir 1 input.png output.avif
avifenc --crop 0,0,800,600 input.png output.avif
Назначение:
| Параметр | Что задает |
|---|---|
--irot | Поворот с шагом 90 градусов |
--imir | Отражение |
--crop | Чистую область через прямоугольник |
--clap | Clean aperture через точные дробные значения |
Это не замена визуальному кадрированию. Параметры записывают свойства контейнера, а не превращают Libavif в графический редактор.
Прогрессивный AVIF
--progressive включает progressive AVIF-кодирование.
avifenc --progressive --qcolor 75 input.jpg output.avif
Прогрессивная структура полезна там, где изображение должно проявляться слоями или где важен постепенный вывод. Поддержка такого поведения зависит от декодера и окружения, поэтому progressive AVIF обязательно проверяют в целевом просмотрщике или браузере.
Layered AVIF
--layered используется для layered AVIF.
avifenc --layered input1.png input2.png output.avif
Layered-подход связан с несколькими слоями/кадрами внутри AVIF-структуры. В обычной веб-оптимизации он нужен редко, но важен для продвинутых сценариев, где файл должен содержать не одну простую статичную картинку.
Grid AVIF
Grid AVIF позволяет собирать изображение как сетку. В avifenc для этого используется --grid MxN.
avifenc --grid 2x2 tile1.png tile2.png tile3.png tile4.png output.avif
Сетка полезна для крупных изображений, где внутреннее разбиение облегчает кодирование, хранение или декодирование. Это не то же самое, что вручную склеить картинку в редакторе: grid — контейнерная структура AVIF.
Расширенные параметры кодека: --advanced
--advanced KEY[=VALUE] передает низкоуровневый параметр в кодек.
avifenc --advanced cq-level=24 --advanced end-usage=q input.png output.avif
Этот режим предназначен для пользователей, которые понимают поведение конкретного AV1-кодека. Для обычной оптимизации достаточно --qcolor, --qalpha, --speed, --jobs, --yuv и --lossless.
avifdec: декодирование и проверка AVIF
avifdec выполняет обратную задачу: берет AVIF и создает PNG, JPEG или Y4M. Он также показывает техническую информацию о файле.

Декодирование AVIF в PNG
avifdec input.avif output.png
PNG-выход подходит, когда нужно получить изображение без дополнительного JPEG-сжатия. Это лучший вариант для проверки пикселей, прозрачности, интерфейсной графики и последующей обработки в редакторе.
Декодирование AVIF в JPEG
avifdec --quality 92 input.avif output.jpg
JPEG-выход удобен, когда целевая система не принимает AVIF или PNG, но принимает JPEG. Параметр --quality относится только к JPEG.
Декодирование в Y4M
avifdec input.avif output.y4m
Y4M нужен в технических workflow, связанных с видеокодеками, тестированием, сравнением и анализом YUV-данных. Для обычного пользователя этот формат редко нужен, но для разработчиков и специалистов по кодированию он полезен.
Просмотр информации: --info
avifdec --info input.avif
--info
декодирует кадры и выводит сведения об изображении вместо сохранения файла.
Этот режим применяют, когда нужно:
- проверить, читается ли файл;
- понять структуру AVIF;
- увидеть параметры изображения;
- проверить последовательность кадров;
- диагностировать проблемы с декодированием;
- убедиться, что файл не поврежден;
- сравнить результаты разных настроек
avifenc.
Выбор кадра или слоя: --index
avifdec --index 0 input.avif frame0.png
avifdec --index all input.avif frame.png
--index выбирает кадр в последовательности или progressive AVIF. Первый кадр имеет индекс 0; значение all позволяет декодировать все кадры.
Progressive-декодирование
avifdec --progressive --index 1 input.avif layer.png
При работе с progressive AVIF параметр --progressive позволяет использовать --index для выбора слоя в прогрессивном порядке.
PNG-сжатие: --png-compress
avifdec --png-compress 9 input.avif output.png
--png-compress задает уровень PNG-сжатия от 0 до 9: 0 — без сжатия, 9 — максимальное сжатие. Параметр относится только к PNG-выходу.
Глубина PNG-выхода: --depth
avifdec --depth 16 input.avif output.png
У avifdec глубина выходного PNG может быть 8 или 16 бит. Для Y4M глубина сохраняется, JPEG всегда остается 8 бит на канал.
Chroma upsampling: --upsampling
avifdec --upsampling best input.avif output.png
Параметр --upsampling управляет восстановлением цветовой информации для 4:2:0 и 4:2:2. Доступны automatic, fastest, best, nearest, bilinear
.
Практически:
| Значение | Когда использовать |
|---|---|
automatic | Обычный режим |
fastest | Быстрое декодирование |
best | Максимально аккуратное восстановление |
nearest | Простое ближайшее значение |
bilinear | Билинейная интерполяция |
Ограничения безопасности: --size-limit и --dimension-limit
avifdec --size-limit 100000000 input.avif output.png
avifdec --dimension-limit 12000 input.avif output.png
--size-limit ограничивает общее число пикселей, а --dimension-limit — максимальную ширину или высоту. Значения по умолчанию: 268435456 пикселей для общего размера и 32768
для максимального измерения.
Эти параметры важны для серверов и автоматической обработки пользовательских файлов: они не дают декодеру бездумно обрабатывать слишком большие изображения.
Практические инструкции
Быстро сжать фотографию для сайта
Команда:
avifenc --qcolor 72 --speed 6 --jobs all photo.jpg photo.avif
Что делает команда:
| Элемент | Значение |
|---|---|
--qcolor 72 | Умеренное качество для веб-фото |
--speed 6 | Баланс скорости и сжатия |
--jobs all | Использование доступных потоков |
photo.jpg | Исходная фотография |
photo.avif | Итоговый AVIF |
После кодирования результат нужно проверять не только по размеру, но и по изображению. Если на лице, небе, градиентах или мелких деталях появились заметные дефекты, поднимают --qcolor или снижают --speed
.
Более качественный вариант:
avifenc --qcolor 82 --speed 4 --jobs all photo.jpg photo.avif
Более быстрый вариант:
avifenc --qcolor 68 --speed 8 --jobs all photo.jpg photo.avif
Сжать PNG-скриншот интерфейса
Для скриншотов важны резкие границы, текст, тонкие линии и цветные элементы интерфейса. Поэтому лучше использовать --yuv 444.
avifenc --qcolor 85 --yuv 444 --speed 4 screenshot.png screenshot.avif
Почему именно так:
--qcolor 85сохраняет мелкие детали;--yuv 444не прореживает цветовую детализацию;--speed 4дает более аккуратный результат, чем быстрые режимы;- PNG-вход не несет JPEG-артефактов.
Для скриншотов с большим количеством текста слишком низкий --qcolor быстро портит читаемость. Это видно на цветных буквах, иконках, тонких линиях и границах окон.
Сжать иконку с прозрачностью
avifenc --qcolor 80 --qalpha 100 --yuv 444 icon.png icon.avif
В иконках обычно важнее чистые края, чем максимальная экономия нескольких килобайт. --qalpha 100 защищает прозрачность, а --yuv 444
помогает сохранить цветные контуры.
Если иконка простая и состоит из плоских цветов, стоит проверить lossless:
avifenc --lossless icon.png icon.avif
Если lossless оказался слишком крупным, возвращаются к lossy-цвету и lossless-альфе:
avifenc --qcolor 78 --qalpha 100 --yuv 444 icon.png icon.avif
Получить AVIF без потерь
avifenc --lossless source.png source.avif
Такой режим подходит для изображений, где важна точная пиксельная сохранность. Но для веба lossless не всегда выгоден. Хорошая практика — сравнить два результата:
avifenc --lossless source.png source-lossless.avif
avifenc --qcolor 85 --qalpha 100 --yuv 444 source.png source-q85.avif
Затем сравнить размер и визуальную разницу.
Проверить AVIF перед публикацией
avifdec --info output.avif
Затем можно сделать контрольное декодирование:
avifdec output.avif check.png
Если check.png выглядит корректно, файл декодируется без ошибок и отображается в целевом окружении, AVIF можно использовать дальше.
Вернуть AVIF в PNG
avifdec output.avif restored.png
Это удобно, когда исходник потерян, а нужно получить файл для редактора или системы, не принимающей AVIF.
Вернуть AVIF в JPEG
avifdec --quality 95 output.avif restored.jpg
JPEG-выход всегда добавляет дополнительное JPEG-сжатие. Если нужен промежуточный файл для дальнейшей обработки, лучше выбрать PNG.
Декодировать AVIF с высоким PNG-сжатием
avifdec --png-compress 9 output.avif restored.png
Этот вариант уменьшает размер PNG, но тратит больше времени на сохранение. Для временных файлов можно использовать меньший уровень:
avifdec --png-compress 1 output.avif temp.png
Защититься от слишком больших файлов
avifdec --size-limit 100000000 --dimension-limit 12000 input.avif output.png
Такой запуск уместен на сервере или в автоматическом обработчике, где пользователь может загрузить файл с огромными размерами.
Настройки качества и их практическое влияние
Libavif дает много параметров, но в повседневной работе основные решения сводятся к нескольким вопросам:
- Это фотография, скриншот или графика?
- Есть ли прозрачность?
- Нужно ли сохранять мелкий текст?
- Важнее размер файла или качество?
- Кодирование разовое или массовое?
- Где файл будет отображаться?
Фото
Для фотографий обычно важны плавные переходы, кожа, небо, тени, фактура и отсутствие грубых блоков.
Стартовая команда:
avifenc --qcolor 72 --speed 6 --yuv 420 --jobs all photo.jpg photo.avif
Качественный профиль:
avifenc --qcolor 82 --speed 4 --yuv 420 --jobs all photo.jpg photo.avif
Архивный или почти максимальный профиль:
avifenc --qcolor 92 --speed 2 --yuv 444 --jobs all photo.png photo.avif
Для обычного веба --yuv 420 часто уместен. Для репродукций, графики, макросъемки с цветными деталями и материалов с тонкими цветными линиями лучше тестировать 444.
Скриншоты
Скриншоты хуже переносят агрессивное цветовое прореживание, чем фотографии. В них много текста, прямых линий и резких границ.
avifenc --qcolor 85 --yuv 444 --speed 4 --jobs all screen.png screen.avif
Если размер слишком велик:
avifenc --qcolor 78 --yuv 444 --speed 5 --jobs all screen.png screen.avif
Лучше снижать --qcolor, чем сразу переходить на --yuv 420, потому что 420 может испортить цветные буквы и UI-контуры.
Логотипы и иконки
avifenc --qcolor 82 --qalpha 100 --yuv 444 logo.png logo.avif
Если логотип содержит ровные плоскости и четкие края:
avifenc --lossless logo.png logo.avif
Для логотипов нельзя ориентироваться только на вес. Артефакты по краям и изменение фирменных цветов могут быть неприемлемы.
Градиенты
Градиенты чувствительны к битовой глубине и качеству. Если 8-битный результат дает полосы, стоит тестировать 10 или 12 бит:
avifenc --depth 10 --qcolor 86 --speed 4 gradient.png gradient.avif
Для градиентов нежелательно слишком сильно снижать --qcolor.
Черно-белые изображения
avifenc --yuv 400 --qcolor 78 gray.png gray.avif
400 хранит только яркостный канал и подходит для grayscale-материалов.
Профили команд для разных задач
| Задача | Команда |
|---|---|
| Фото для сайта | avifenc --qcolor 72 --speed 6 --yuv 420 --jobs all input.jpg output.avif |
| Качественное фото | avifenc --qcolor 84 --speed 4 --yuv 420 --jobs all input.jpg output.avif |
| Скриншот интерфейса | avifenc --qcolor 85 --speed 4 --yuv 444 --jobs all input.png output.avif |
| Иконка с прозрачностью | avifenc --qcolor 80 --qalpha 100 --yuv 444 input.png output.avif |
| Lossless PNG | avifenc --lossless input.png output.avif |
| Быстрый тест | avifenc --qcolor 65 --speed 9 input.jpg output.avif |
| Проверка файла | avifdec --info output.avif |
| Декодирование в PNG | avifdec output.avif output.png |
| Декодирование в JPEG | avifdec --quality 92 output.avif output.jpg |
Эти команды не являются магическими настройками. Это рабочие стартовые профили, которые затем проверяются на реальных изображениях.
Пакетная обработка
Libavif не содержит графической очереди файлов, но именно в пакетной обработке раскрывается сильнее большинства GUI-конвертеров. Команда работает одинаково для одного файла и для сотен файлов.
Bash: все JPEG в AVIF
for f in *.jpg; do
avifenc --qcolor 72 --speed 6 --jobs all "$f" "${f%.jpg}.avif"
done
Bash: все PNG в AVIF с сохранением прозрачности
for f in *.png; do
avifenc --qcolor 80 --qalpha 100 --yuv 444 --speed 5 --jobs all "$f" "${f%.png}.avif"
done
PowerShell: обработка PNG
Get-ChildItem -Filter *.png | ForEach-Object {
.avifenc.exe --qcolor 80 --qalpha 100 --yuv 444 --speed 5 --jobs all $_.FullName ($_.BaseName + ".avif")
}
PowerShell: обработка JPEG
Get-ChildItem -Filter *.jpg | ForEach-Object {
.avifenc.exe --qcolor 72 --speed 6 --jobs all $_.FullName ($_.BaseName + ".avif")
}
Безопасная обработка без перезаписи
for f in *.png; do
avifenc --no-overwrite --qcolor 80 --qalpha 100 "$f" "${f%.png}.avif"
done
--no-overwrite защищает уже созданные AVIF-файлы. Это полезно, если каталог обрабатывается повторно.
Работа с метаданными и цветом
AVIF-файл — это не только пиксели. В нем могут быть цветовые профили, CICP/nclx-информация, Exif, XMP, ориентация, чистая область, альфа-канал, gain map и другие свойства. Libavif дает доступ к части этих параметров через опции.
Когда метаданные стоит сохранить
Метаданные полезны, если:
- изображение должно сохранять корректный цвет;
- важна ориентация фотографии;
- файл используется в профессиональном workflow;
- изображение содержит встроенный ICC-профиль;
- нужно сохранить сведения о съемке;
- файл участвует в тестировании декодеров.
Когда метаданные стоит удалить
Удаление метаданных оправдано, если:
- изображение публикуется на сайте и важен минимальный вес;
- Exif содержит лишнюю приватную информацию;
- XMP не нужен;
- цветовой профиль мешает единообразному отображению;
- требуется максимально предсказуемый файл без дополнительных блоков.
Примеры:
avifenc --ignore-exif --ignore-xmp input.jpg output.avif
avifenc --ignore-profile input.png output.avif
Удалять ICC-профиль следует аккуратно. Если исходное изображение не в sRGB или использует специфический профиль, внешний вид может измениться.
AVIF для веб-разработки
Libavif хорошо подходит для подготовки AVIF-версий изображений в проекте. Типичный workflow:
- Хранить исходники в
src/images. - Генерировать AVIF в
public/imagesилиdist/images. - Оставлять fallback в JPEG или WebP.
- Проверять результат в браузерах и на целевых устройствах.
- Не заменять все изображения механически без визуального контроля.
Пример HTML:
<picture>
<source srcset="hero.avif" type="image/avif">
<source srcset="hero.webp" type="image/webp">
<img src="hero.jpg" alt="Описание изображения">
</picture>
Libavif в этом сценарии отвечает только за создание hero.avif. Решения о fallback, HTML-разметке, CDN и lazy loading относятся уже к веб-проекту, а не к самой программе.
Пример структуры проекта
project/
assets/
original/
hero.jpg
card-1.jpg
logo.png
avif/
hero.avif
card-1.avif
logo.avif
Команда для генерации фото:
for f in assets/original/*.jpg; do
base=$(basename "$f" .jpg)
avifenc --qcolor 72 --speed 6 --jobs all "$f" "assets/avif/$base.avif"
done
Команда для PNG с прозрачностью:
for f in assets/original/*.png; do
base=$(basename "$f" .png)
avifenc --qcolor 80 --qalpha 100 --yuv 444 --jobs all "$f" "assets/avif/$base.avif"
done
История версий программы
История Libavif показывает, как проект прошел путь от ранней реализации AVIF до стабильной библиотеки и набора утилит для продвинутого AVIF-кодирования.
| Период / версия | Что изменилось |
|---|---|
| 0.1.0, 2019 | Первая версия: появились базовые константы версии, функция avifVersion() и основа проекта. |
| 0.1.4, 2019 | Появились приложения avifenc и avifdec для базового двустороннего преобразования в Y4M. |
| 0.2.0, 2019 | Добавлены avifEncoder и avifDecoder, проект переименован в CMake в libavif, приложения и примеры переведены на новую модель encoder/decoder. |
| 0.8.x, 2020 | Развивалась поддержка gdk-pixbuf, libyuv, SVT-AV1, многопоточности в avifdec, streaming helper-функций и новых CMake-опций. |
| 0.11.0, 2022 | Внесены несовместимые ABI-изменения, добавлены новые поля и ограничения декодера, изменены сигнатуры ряда функций. |
| 1.0.0, 2023 | ABI стал более стабильным; в avifenc добавлен --no-overwrite, расширены структуры encoder/decoder и настройки качества. |
| 1.1.0, 2024 | Появились экспериментальные gain map-возможности, поддержка JPEG с gain map в AVIF, --qgain-map, C++-заголовок и дополнительные API. |
| 1.4.0, 2026 | Добавлено чтение PNG/JPEG через stdin с --stdin-format, поддержка Sample Transform-сценариев, расширения --depth, работа с Apple-style gain maps и --sato для avifdec. |
| 1.4.1, 2026 | Исправлены сборка с CMake 3.22, длинные пути Windows, CICP-управление и утечки памяти в gain map-инструменте; с --progressive, --layered и --scaling-mode снят экспериментальный статус. |

Важный вывод из истории: Libavif развивалась не как простая оболочка для одной кнопки convert, а как библиотечная и CLI-инфраструктура для всего AVIF-направления. Поэтому в ней много параметров, связанных с контейнером, цветом, глубиной, декодированием, потоками, gain maps и совместимостью.
Сравнение с аналогами
ImageMagick
ImageMagick сильнее как универсальный инструмент обработки изображений. Он умеет ресайз, кадрирование, поворот, наложение текста, композицию, изменение цветовых каналов, пакетные операции, фильтры и десятки форматов. Для пользователя, которому нужно не только получить AVIF, но и предварительно изменить изображение, ImageMagick шире.
Libavif выигрывает там, где нужен прямой контроль AVIF-кодирования через параметры
avifenc: --qcolor, --qalpha, --speed, --yuv, --depth, --lossless, progressive/layered/grid-сценарии и AVIF-специфичная диагностика через avifdec --info.
| Критерий | ImageMagick |
|---|---|
| Сильная сторона | Универсальная обработка изображений |
| AVIF-сценарии | Зависят от сборки и делегатов |
| Удобство пакетной обработки | Высокое |
| Контроль AVIF-специфичных параметров | Менее прямой |
| Лучший сценарий | Изменить изображение и затем экспортировать |
FFmpeg
FFmpeg удобен для мультимедиа: видео, кадров, последовательностей, контейнеров, фильтров, извлечения кадров, перекодирования и автоматизации. Если AVIF является частью видеопайплайна, FFmpeg часто логичен.
Для одиночных изображений и точного AVIF-кодирования
avifenc проще: команда короче, параметры относятся прямо к изображению, а поведение не смешивается с видеологикой.
| Критерий | FFmpeg |
|---|---|
| Сильная сторона | Видео, кадры, мультимедиа-пайплайны |
| AVIF-сценарии | Возможны, но зависят от сборки и параметров |
| Удобство для одиночных изображений | Среднее |
| Лучший сценарий | Извлечь кадр, обработать последовательность, связать с видео |
libheif
libheif близка по области: это библиотека и набор инструментов для HEIF/AVIF-сценариев. Она часто используется там, где важна поддержка HEIF/HEIC и связанных контейнерных возможностей. Для работы с HEIF-экосистемой libheif выглядит естественно.
Libavif более сфокусирована на AVIF и на инструментальной работе с AVIF через
avifenc/avifdec. Если задача — именно AVIF, контроль кодирования и диагностика AVIF-файлов, Libavif выглядит более прямым выбором.
| Критерий | libheif |
|---|---|
| Сильная сторона | HEIF/HEIC/AVIF-экосистема |
| CLI-инструменты | Есть |
| Фокус | Шире контейнерно, не только AVIF |
| Лучший сценарий | Работа с HEIF/HEIC и AVIF в одном workflow |
Squoosh
Squoosh удобен для ручной оптимизации: пользователь видит изображение, меняет параметры, сравнивает результат до/после и быстро понимает, как меняется вес. Это хороший вариант для одного или нескольких изображений.
Libavif сильнее в автоматизации. Когда нужно обработать каталог, встроить AVIF-конвертацию в сборку или получить одинаковый результат на сервере, CLI-подход надежнее визуального интерфейса.
| Критерий | Squoosh |
|---|---|
| Сильная сторона | Визуальное сравнение качества |
| Подходит новичкам | Да |
| Массовая обработка | Ограничена |
| Лучший сценарий | Ручная оптимизация отдельных изображений |
cavif
cavif — более узкая CLI-утилита для конвертации в AVIF. Она проще в базовом сценарии и может быть удобна пользователю, которому нужен минималистичный инструмент без большого набора параметров.
Libavif шире: это библиотека,
avifenc, avifdec, диагностика, поддержка разных AVIF-сценариев, работа с глубиной, форматами, потоками, контейнерными свойствами и декодированием.
| Критерий | cavif |
|---|---|
| Сильная сторона | Простая AVIF-конвертация |
| Глубина настройки | Ниже |
| Библиотечная роль | Не основной сценарий |
| Лучший сценарий | Быстро создать AVIF без сложной настройки |
Итоговая таблица
| Инструмент | Тип | Сильная сторона | Когда выбирать |
|---|---|---|---|
| ImageMagick | CLI/библиотека | Универсальная обработка | Нужно менять изображение перед экспортом |
| FFmpeg | CLI | Видео и последовательности | AVIF связан с видео или кадрами |
| libheif | Библиотека + CLI | HEIF/HEIC/AVIF | Нужна широкая HEIF-экосистема |
| Squoosh | Web/GUI | Визуальное сравнение | Нужно вручную подобрать качество |
| cavif | CLI | Простота | Нужно быстро получить AVIF |
| sharp | Node.js-библиотека | Серверная обработка изображений | AVIF нужен в JS/backend-пайплайне |
Сильные стороны
Libavif сильна не количеством кнопок, а качеством контроля.
Точный CLI-интерфейс
Все параметры задаются явно. Команду можно сохранить, повторить, встроить в скрипт, отправить коллеге или использовать в CI.
avifenc --qcolor 78 --qalpha 100 --yuv 444 --speed 5 --jobs all input.png output.avif
Такая команда полностью описывает способ получения файла.
Раздельное качество цвета и альфы
Для PNG с прозрачностью это критически важно. Многие простые конвертеры прячут альфу за общим ползунком качества, а в Libavif прозрачность настраивается отдельно.
Поддержка lossless
Lossless нужен не каждый день, но в технических и архивных сценариях он важен.
avifenc --lossless input.png output.avif
Управление YUV
Возможность явно задать 444, 420, 400 делает Libavif удобной для разных типов изображений. Фото, скриншот и логотип нельзя сжимать одним и тем же профилем.
Многопоточность
--jobs all делает пакетную обработку практичной. Это особенно важно при обработке больших каталогов.
Диагностика через avifdec --info
Встроенная проверка информации о файле экономит время. Не нужно использовать отдельный просмотрщик только для базовой диагностики.
Подходит для автоматизации
Libavif хорошо работает там, где графический интерфейс неудобен: сборка сайта, серверная обработка, тесты, скрипты, пакетная оптимизация.
Открытая библиотечная основа
Libavif полезна не только конечным пользователям, но и разработчикам. Ее можно использовать как библиотеку для интеграции AVIF-поддержки в приложения.
Ограничения
Libavif не стоит идеализировать. Это мощный инструмент, но не универсальный редактор.
Нет графического интерфейса
Пользователь не увидит привычных кнопок, панелей и предпросмотра. Нужно работать в терминале.
Нет встроенного сравнения до/после
Качество нужно проверять внешним просмотрщиком, браузером или собственным сравнительным workflow.
Нет редактирования изображения
Libavif не выполняет художественную обработку:
- не ретуширует;
- не кадрирует мышью;
- не меняет экспозицию;
- не работает со слоями;
- не рисует;
- не удаляет фон;
- не делает цветокоррекцию через визуальные инструменты.
Порог входа выше
Параметры --qcolor, --qalpha, --yuv, --depth, --speed требуют понимания. Новичок может получить плохой результат просто из-за неверной команды.
AVIF-кодирование может быть медленным
Высокое качество и низкая скорость кодирования требуют времени. На больших изображениях это заметно.
Результат зависит от исходника
JPEG с артефактами, шумное фото, скриншот с мелким текстом и прозрачный PNG требуют разных настроек. Одна универсальная команда не заменяет проверку.
Совместимость нужно проверять
AVIF широко поддерживается, но конкретные progressive, layered, gain map и глубинные сценарии нужно проверять в целевом окружении.
Частые ошибки при работе
Использовать один профиль для всех изображений
Фотография и скриншот требуют разных настроек. Для фото можно начать с --yuv 420, для скриншота лучше --yuv 444
.
Плохо:
avifenc --qcolor 60 --yuv 420 screenshot.png screenshot.avif
Лучше:
avifenc --qcolor 85 --yuv 444 screenshot.png screenshot.avif
Ставить слишком высокий --speed
--speed 10
ускоряет кодирование, но не всегда дает хороший размер и качество.
Плохо для финального файла:
avifenc --qcolor 75 --speed 10 input.jpg output.avif
Лучше:
avifenc --qcolor 75 --speed 5 input.jpg output.avif
Забывать про альфа-канал
Плохо для прозрачной иконки:
avifenc --qcolor 70 icon.png icon.avif
Лучше:
avifenc --qcolor 80 --qalpha 100 --yuv 444 icon.png icon.avif
Ожидать от lossless маленький файл
Lossless сохраняет данные без потерь, но не гарантирует минимальный размер. Для веба часто лучше lossy-профиль с визуальной проверкой.
Перезаписывать результат
В пакетных сценариях безопаснее использовать:
avifenc --no-overwrite input.png output.avif
Декодировать в JPEG без необходимости
Если нужен промежуточный файл для дальнейшей обработки, PNG лучше:
avifdec input.avif output.png
JPEG стоит выбирать только тогда, когда именно JPEG нужен как конечный формат.
Безопасная и аккуратная работа
Libavif часто используют в автоматизации, поэтому важно выстроить безопасный workflow.
Не обрабатывать оригиналы в единственном экземпляре
Лучше хранить исходники отдельно:
images/
source/
photo.jpg
avif/
photo.avif
Команды должны писать результат в отдельный каталог, а не смешивать исходники и производные файлы.
Использовать --no-overwrite
avifenc --no-overwrite --qcolor 75 input.jpg output.avif
Это снижает риск случайной потери результата.
Проверять декодирование
avifdec --info output.avif
avifdec output.avif check.png
Если файл важный, недостаточно увидеть, что он создался. Нужно убедиться, что он корректно декодируется.
Ограничивать размер при серверной обработке
avifdec --size-limit 100000000 --dimension-limit 12000 input.avif output.png
Это защищает обработчик от чрезмерно больших изображений.
Хранить команды вместе с проектом
Для сайта или приложения лучше не кодировать изображения вручную каждый раз. Команды стоит записать в скрипт:
#!/usr/bin/env bash
set -e
mkdir -p public/img-avif
for f in assets/img/*.jpg; do
name=$(basename "$f" .jpg)
avifenc --qcolor 72 --speed 6 --jobs all "$f" "public/img-avif/$name.avif"
done
Такой подход делает результат воспроизводимым.
Разбор параметров в таблице
| Параметр | Утилита | Назначение | Практическое применение |
|---|---|---|---|
--help | avifenc, avifdec | Показ справки | Быстро посмотреть синтаксис |
--version | avifenc, avifdec | Показ версии | Проверить доступную сборку |
--qcolor | avifenc | Качество цвета | Главная настройка качества |
--qalpha | avifenc | Качество альфы | PNG с прозрачностью |
--qgain-map | avifenc | Качество gain map | HDR/gain map workflow |
--speed | avifenc | Скорость кодирования | Баланс времени и размера |
--jobs | avifenc, avifdec | Количество потоков | Пакетная обработка |
--lossless | avifenc | Кодирование без потерь | Архивы, точная графика |
--depth | avifenc, avifdec | Битовая глубина | Градиенты, HDR, 16-bit PNG-выход |
--yuv | avifenc | YUV-формат | Фото, скриншоты, grayscale |
--premultiply | avifenc | Premultiplied alpha | Специальные alpha-workflow |
--ignore-exif | avifenc | Игнорировать Exif | Удаление лишних метаданных |
--ignore-xmp | avifenc | Игнорировать XMP | Уменьшение файла |
--ignore-profile | avifenc | Игнорировать ICC | Контроль цветовых данных |
--ignore-alpha | avifenc | Игнорировать прозрачность | Когда альфа не нужна |
--no-overwrite | avifenc | Не перезаписывать файл | Безопасные скрипты |
--output | avifenc | Задать выходной файл | Удобство в автоматизации |
--grid | avifenc | Grid AVIF | Большие изображения, тайлы |
--progressive | avifenc, avifdec | Progressive AVIF | Слойное проявление |
--layered | avifenc | Layered AVIF | Продвинутые AVIF-структуры |
--quality | avifdec | JPEG-качество | Декодирование AVIF в JPEG |
--png-compress | avifdec | PNG-сжатие | Размер PNG-выхода |
--upsampling | avifdec | Восстановление chroma | Качество декодирования 420/422 |
--index | avifdec | Выбор кадра/слоя | Последовательности и progressive |
--info | avifdec | Информация о файле | Диагностика |
--size-limit | avifdec | Лимит пикселей | Защита от огромных файлов |
--dimension-limit | avifdec | Лимит ширины/высоты | Серверная безопасность |
Рекомендации по подбору настроек
Начинать с типа изображения
Не нужно начинать с вопроса какой --qcolor самый лучший. Сначала определяется тип изображения.
| Тип | Базовая стратегия |
|---|---|
| Фото | --yuv 420, --qcolor 70–80 |
| Скриншот | --yuv 444, --qcolor 80–88 |
| Иконка | --qalpha 100, часто --yuv 444 |
| Grayscale | --yuv 400 |
| Архивная графика | --lossless |
| Градиент | Проверять --depth 10 или --depth 12 |
Проверять результат в целевом размере
Не всегда нужно рассматривать изображение на 400% увеличения. Если картинка будет показана на сайте шириной 600 px, проверять ее нужно и в этом размере. Но мелкий текст, интерфейсные скриншоты и логотипы стоит дополнительно смотреть с увеличением.
Сравнивать размер и качество вместе
Плохой подход:
Самый маленький файл = лучший результат
Правильный подход:
Минимальный файл при приемлемом качестве = хороший результат
Не злоупотреблять --speed 0
--speed 0 полезен для финальной выжимки, но на больших каталогах может быть слишком медленным. Для большинства рабочих задач диапазон 4–7 практичнее.
Для прозрачности держать --qalpha высоким
Если изображение содержит альфа-канал, прозрачность лучше не портить. Типичный вариант:
avifenc --qcolor 78 --qalpha 100 --yuv 444 input.png output.avif
Кому подойдет Libavif
Libavif хорошо подходит:
- веб-разработчикам;
- специалистам по оптимизации изображений;
- администраторам сайтов;
- разработчикам приложений;
- DevOps-инженерам;
- пользователям, которые умеют работать с терминалом;
- тем, кто хочет воспроизводимое AVIF-кодирование;
- тем, кому важно управлять цветом, альфой, глубиной и YUV-форматом;
- тем, кто обрабатывает изображения пакетно.
Libavif не лучший выбор:
- если нужен простой визуальный конвертер;
- если пользователь не хочет работать с командной строкой;
- если нужно редактирование изображения;
- если нужен предпросмотр до/после внутри самой программы;
- если нужен инструмент открыл файл — подвигал ползунок — сохранил.
Для ручной разовой оптимизации одного изображения удобнее визуальный инструмент. Для автоматизации, повторяемых команд и AVIF-специфичных настроек Libavif заметно сильнее.
Итоговая оценка
Libavif — технически сильная программа для работы с AVIF, построенная вокруг библиотеки и консольных утилит. Ее главный практический инструмент — avifenc, который кодирует JPEG, PNG и Y4M в AVIF. Второй ключевой инструмент — avifdec, который декодирует AVIF в PNG, JPEG или Y4M и показывает информацию о файле через --info
.
Сильная сторона Libavif — точный контроль. Пользователь управляет качеством цвета, качеством прозрачности, скоростью, потоками, YUV-форматом, глубиной, lossless-режимом, метаданными, progressive/layered/grid-структурами и параметрами декодирования. Это делает программу особенно полезной для веб-оптимизации, серверной обработки, пакетных скриптов, разработки и тестирования AVIF.
Главное ограничение — отсутствие графического интерфейса. Libavif не подойдет тем, кто ожидает визуальный редактор с кнопками и предпросмотром. Это инструмент командной строки, и его ценность раскрывается тогда, когда пользователь точно понимает, какой результат ему нужен и какими параметрами его получить.
Для подготовки AVIF на постоянной основе Libavif — один из наиболее рациональных вариантов: компактная логика, понятные команды, отдельная работа с альфа-каналом, поддержка разных глубин и форматов, диагностика через
avifdec --info и хорошая пригодность для автоматизации.

