Libavif — это конкретная программа из экосистемы AVIF: библиотека libavif и консольные утилиты avifenc и avifdec. Она не заменяет графический редактор вроде GIMP, Paint.NET или просмотрщик изображений наподобие XnView MP. Ее задача уже: кодировать изображения в AVIF, декодировать AVIF обратно в привычные форматы, встраивать работу с AV1 Image File Format в приложения и автоматизировать обработку изображений в командной строке.
Что такое Libavif
Libavif — портативная C-библиотека для работы с AV1 Image File Format. Проект включает не только библиотеку для разработчиков, но и две прикладные утилиты: avifenc для сжатия изображений в AVIF и avifdec для декодирования AVIF в другие форматы. Libavif кодирует и декодирует поддерживаемые AV1 YUV-форматы и битовые глубины, включая изображения с alpha channel.
В обычном пользовательском сценарии Libavif выглядит как набор команд. Пользователь открывает терминал, указывает исходный файл PNG, JPEG или Y4M, задает параметры качества, скорости, цветовой схемы, метаданных и получает файл .avif. При обратной операции avifdec берет .avif и создает PNG, JPEG или YUV4MPEG2. Такой формат работы особенно полезен там, где нужно не вручную перетаскивать картинки в окно приложения, а обрабатывать десятки и сотни файлов повторяемыми командами.

Libavif относится к инструментам, которые ценят не за визуальный интерфейс, а за предсказуемость. Команда avifenc -q 75 input.[jpg|png|y4m] output.avif показывает базовую логику работы: качество задается параметром -q, входной файл передается перед выходным, результат сохраняется в .avif. Для обратного преобразования используется команда avifdec output.avif decoded.png.
Для каких задач нужна программа
Libavif применяется там, где AVIF нужен как рабочий формат, а не как пункт в меню экспорта. Программа закрывает несколько практических задач:
преобразование PNG в AVIF для уменьшения веса изображений на сайте;
преобразование JPEG в AVIF с настройкой качества и скорости кодирования;
сохранение прозрачности при обработке изображений с альфа-каналом;
декодирование AVIF в PNG или JPEG для проверки результата;
подготовка наборов изображений через скрипты;
интеграция AVIF-кодирования в собственные приложения;
тестирование цветовых профилей, CICP, ICC, Exif и XMP;
работа с HDR gain maps и Sample Transforms в сценариях, где важны расширенный динамический диапазон и совместимость.
Для веб-разработчика Libavif удобна тем, что не навязывает интерфейс. Команды легко вставляются в shell-скрипт, Makefile, CI-процесс, серверный обработчик изображений или локальную папку с ассетами. Для фотографа без опыта терминала программа сложнее, чем визуальные инструменты: в ней нет кнопок Открыть, Сохранить как, Экспорт, предпросмотра, ползунков яркости и панели истории. Для такой работы удобнее графические редакторы из раздела image editors, а Libavif стоит подключать на этапе финального кодирования.
Чем Libavif отличается от обычного конвертера
Обычный конвертер изображений часто скрывает детали: пользователь выбирает формат, двигает ползунок качества и получает файл. Libavif работает иначе. Она показывает техническую сторону AVIF-кодирования: качество цвета, качество альфа-канала, скорость кодирования, число потоков, YUV-формат, диапазон, цветовые координаты, метаданные, кодек, сетку, слои, progressive rendering и gain map.
Это не делает программу только для программистов. Простое преобразование выполняется одной строкой:
avifenc input.png output.avifНо сила Libavif раскрывается при точной настройке:
avifenc -q 80 --qalpha 90 -s 4 -j all input.png output.avifВ этой команде -q 80 задает качество цветовой части изображения, --qalpha 90 отдельно управляет качеством прозрачности, -s 4 выбирает скорость кодирования, а -j all задействует доступные рабочие потоки. Параметры -q, --qalpha, -s и -j присутствуют в документации avifenc: качество задается в диапазоне 0–100, где 100 соответствует lossless, скорость кодирования находится в диапазоне 0–10, а --jobs управляет числом worker threads.
Интерфейс Libavif: команды вместо окон
У Libavif нет графического окна с панелями, вкладками и кнопками. Интерфейс программы — это командная строка. Основные элементы управления:
| Элемент | Где используется | Что делает |
|---|---|---|
avifenc | терминал, PowerShell, скрипт | кодирует JPEG, PNG или Y4M в AVIF |
avifdec | терминал, PowerShell, скрипт | декодирует AVIF в PNG, JPEG или Y4M |
--help | обе утилиты | показывает синтаксис и параметры |
--version | обе утилиты | показывает номер версии и доступные компоненты |
-q, --qcolor | avifenc | управляет качеством цветовой части |
--qalpha | avifenc | управляет качеством альфа-канала |
-s, --speed | avifenc | задает скорость кодирования |
-j, --jobs | avifenc | задает число рабочих потоков |
-l, --lossless | avifenc | включает режим lossless |
-y, --yuv | avifenc | выбирает YUV-формат: auto, 444, 422, 420, 400 |
--cicp, --nclx | avifenc | задает CICP-значения |
--exif, --xmp, --icc | avifenc | подключает Exif, XMP или ICC-профиль |
--ignore-exif, --ignore-xmp, --ignore-profile, --ignore-alpha | avifenc | исключает отдельные данные из обработки |
--qgain-map | avifenc | задает качество gain map |
В графическом редакторе пользователь нажимает кнопку экспорта и выбирает формат. В Libavif ту же роль выполняет имя выходного файла и набор параметров. Когда нужно подготовить один файл для сайта, достаточно простой команды. Когда нужно сохранить цветовой профиль, прозрачность, управлять bit depth или работать с HDR gain maps, параметры становятся главным способом контроля.
avifenc: кодирование изображений в AVIF
avifenc сжимает изображение в AVIF. Синтаксис команды выглядит так:
avifenc [options] input.[jpg|jpeg|png|y4m] output.avifУтилита принимает JPEG, PNG и YUV4MPEG2. Это важно: Libavif не является универсальным конвертером всех графических форматов. Для TIFF, BMP, PSD, GIF и других исходников сначала нужен другой инструмент, например ImageMagick, графический редактор или пакетный конвертер. Для работы с широким набором форматов можно использовать XnView, IrfanView или Converseen, а затем передать подготовленные PNG/JPEG в avifenc.
Базовая команда:
avifenc input.png output.avifКоманда с качеством:
avifenc -q 75 input.png output.avifКоманда с отдельной настройкой прозрачности:
avifenc -q 80 --qalpha 90 input.png output.avifКоманда с управлением скоростью:
avifenc -q 80 -s 4 input.jpg output.avifЧем ниже значение -s, тем медленнее кодирование. Чем выше значение -s, тем быстрее выполняется обработка. Диапазон --speed — от 0 до 10, где 0 обозначает самый медленный режим, а 10 — самый быстрый. Значение default или d передает выбор внутренним настройкам кодека.
avifdec: декодирование AVIF
avifdec выполняет обратную задачу: берет файл AVIF и создает изображение в другом формате. Утилита декодирует AVIF в JPEG, PNG или YUV4MPEG2.
Базовая команда:
avifdec image.avif image.pngДекодирование в JPEG:
avifdec image.avif image.jpgДекодирование в Y4M:
avifdec image.avif image.y4mПрактический смысл avifdec не ограничивается обратной конвертацией. Утилита помогает проверять результат после кодирования. Когда AVIF-файл создан для сайта, его полезно декодировать обратно в PNG и сравнить с исходником визуально: проверить границы прозрачности, мелкий текст, градиенты, небо, кожу, тени, насыщенные участки и элементы интерфейса. Такой контроль особенно важен после сильного сжатия и при пакетной обработке, где один неудачный параметр влияет сразу на весь набор файлов.
Поддерживаемые форматы
Libavif не стоит описывать как конвертер любых изображений. Набор форматов конкретный и связан с задачей AVIF-кодирования.
| Операция | Утилита | Вход | Выход | Практическое применение |
| Кодирование | avifenc | JPEG, JPG, PNG, Y4M | AVIF | подготовка изображений для сайта, приложения, архива |
| Декодирование | avifdec | AVIF | PNG, JPEG, JPG, Y4M | проверка результата, обратное преобразование, тестирование |
| Работа с прозрачностью | avifenc | PNG с alpha channel | AVIF с alpha | иконки, интерфейсные элементы, изображения без фона |
| Работа с YUV | avifenc, avifdec | Y4M или AVIF | AVIF или Y4M | видеотехнические тесты, пайплайны кодирования |
| Метаданные | avifenc | файлы профилей и метаданных | AVIF с ICC/Exif/XMP | сохранение цветовой и описательной информации |
Для JPEG-источника avifenc в режиме --yuv auto учитывает внутренний формат JPEG, когда это возможно. Для grayscale PNG автоматический режим использует 400, а в остальных случаях — 444. Эти детали важны для изображений с текстом, интерфейсом, схемами, пиксель-артом и тонкими цветными границами.
Работа с качеством
Главный параметр для повседневного AVIF-кодирования — -q или --qcolor. Он задает качество цвета по шкале от 0 до 100. Значение 100 соответствует lossless.
Пример для умеренного сжатия:
avifenc -q 75 photo.jpg photo.avifДля фотографии значение качества обычно подбирают по видимому результату: важны кожа, небо, мелкая листва, вода, волосы, тени и плавные переходы. Для скриншота интерфейса важны другие зоны: мелкий текст, контрастные линии, иконки, границы кнопок, подсветка, курсор, диаграммы. Поэтому один параметр качества не переносится механически на все типы изображений.
Для PNG с прозрачностью полезно отделять качество цвета от качества альфа-канала:
avifenc -q 75 --qalpha 90 icon.png icon.avif--qalpha задает качество прозрачности в диапазоне 0–100. Для логотипов, иконок и интерфейсных элементов низкое качество alpha channel дает заметные дефекты по краям: полупрозрачные ореолы, грубые ступеньки, грязные контуры на темном или цветном фоне. Поэтому для таких файлов альфа-канал обычно сохраняют аккуратнее, чем цветовую часть.
Lossless-режим
Режим --lossless включает настройки для lossless-кодирования и выводит предупреждения, когда параметры или входные данные мешают получить полностью lossless-результат.
Команда:
avifenc --lossless input.png output.avifLossless нужен не всегда. Для фотографий чаще важнее баланс между размером и визуальным качеством. Для иконок, технических схем, интерфейсных скриншотов, карт с мелкими подписями и изображений с плоскими цветами lossless или близкие к нему настройки дают более предсказуемый результат. При этом AVIF lossless не обязан всегда быть меньше PNG: итог зависит от структуры изображения, палитры, прозрачности, детализации и выбранных параметров.
Bit depth, YUV и цветовые параметры
Libavif дает доступ к настройкам, которые отсутствуют во многих простых конвертерах. Параметр -d, --depth задает выходную битовую глубину на канал: 8, 10 или 12. Для JPEG и PNG он управляет выходной bit depth, а для Y4M должен соответствовать битовой глубине входного файла. Дополнительный аргумент EXTENSION применяется для схемы расширения битовой глубины при декодировании до 16-bit.
Пример:
avifenc -d 10 input.png output.avifПараметр -y, --yuv выбирает выходной YUV-формат:
avifenc -y 444 input.png output.avifДоступные значения: auto, 444, 422, 420, 400. Для изображений с мелким текстом, интерфейсом и четкими цветными границами 444 помогает избежать потери цветовой детализации, характерной для цветового субдискретизирования. Для фотографий 420 часто применяется в веб-сценариях, потому что снижает объем данных. Для grayscale PNG автоматический режим использует 400, что соответствует изображению без цветовых каналов.
Параметры --cicp и --nclx задают CICP-значения: color primaries, transfer characteristics и matrix coefficients. Параметр --range задает YUV range: limited или full. Эти настройки нужны не каждому пользователю, но важны для точной цветопередачи, HDR-процессов, тестовых изображений и цепочек, где AVIF должен одинаково интерпретироваться разными декодерами.
Метаданные: Exif, XMP и ICC
Libavif умеет работать с основными типами метаданных. В avifenc есть параметры:
--exif FILENAME
--xmp FILENAME
--icc FILENAMEОни добавляют к основному изображению Exif, XMP или ICC-профиль. Есть и обратные параметры:
--ignore-exif
--ignore-xmp
--ignore-profile
--ignore-icc
--ignore-alphaОни исключают соответствующие данные из обработки.
Для фотографий Exif содержит данные камеры, объектива, ориентации и съемки. XMP используется для расширенного описания и рабочих метаданных. ICC-профиль влияет на цветовое соответствие между приложениями и устройствами. При подготовке изображений для сайта метаданные часто удаляют ради меньшего размера и приватности. При архивировании, каталогизации и профессиональной обработке метаданные сохраняют, потому что без них теряется часть контекста изображения.
HDR gain maps и Sample Transforms
Libavif развивалась не только как обычный PNG/JPEG-to-AVIF encoder. Важное направление — HDR-изображения и совместимость с SDR-отображением. Libavif поддерживает HDR gain maps, позволяющие кодировать AVIF HDR-изображения, совместимые с SDR-дисплеями. Gain map хранит дополнительную информацию, которая помогает восстановить HDR-представление там, где устройство и программа это поддерживают.


В avifenc для gain map есть отдельные параметры. --ignore-gain-map исключает встроенную gain map из входного файла, а --qgain-map задает качество gain map по шкале 0–100. Это дает контроль над HDR-сценариями: базовое изображение и карта яркости не обязаны кодироваться одинаково.
В развитии Libavif появилась и поддержка Sample Transforms из AVIF specification v1.2.0. Эта возможность связана с расширением битовой глубины изображений до 16 бит и выше через alternate version изображения, при этом базовая версия сохраняет совместимость со старыми AVIF-декодерами. Для обычного пользователя это звучит сложно, но практический смысл простой: AVIF используется не только для легких веб-картинок, но и для более точных цветовых и HDR-процессов.
Пакетная обработка
Libavif особенно удобна при массовой обработке. В графическом интерфейсе пакетная конвертация зависит от того, есть ли в программе специальный режим, насколько удобно выбирать папки и сохраняются ли настройки. В командной строке это решается циклом.
Для Linux и macOS:
for file in *.jpg; do
avifenc -q 75 "$file" "${file%.*}.avif"
doneДля PNG:
for file in *.png; do
avifenc -q 80 --qalpha 90 "$file" "${file%.*}.avif"
doneДля PowerShell:
Get-ChildItem *.jpg | ForEach-Object {
avifenc -q 75 $_.FullName ($_.BaseName + ".avif")
}Для обработки без перезаписи уже готовых файлов используется --no-overwrite:
avifenc -q 75 --no-overwrite input.jpg output.avifПараметр --no-overwrite запрещает перезаписывать существующий выходной файл. Параметр -o, --output позволяет задать выходной файл отдельно от последнего имени в команде.
Инструкция: как подготовить AVIF-файл через Libavif
Шаг 1. Подготовить исходник
Для первой конвертации лучше взять один файл PNG или JPEG. Не стоит сразу запускать пакетную обработку всей папки: сначала нужно подобрать параметры качества и проверить результат. Исходники сохраняют отдельно, потому что AVIF — это конечный формат доставки, а не замена рабочему архиву.
Подходящие исходники:
photo.jpg— фотография без прозрачности;banner.png— изображение с текстом или графикой;icon.png— иконка с прозрачностью;frame.y4m— YUV4MPEG2-файл для видеотехнического сценария.
Шаг 2. Проверить доступность команды
В терминале выполняют:
avifenc --helpДля проверки декодера:
avifdec --help--help показывает синтаксис и доступные параметры, --version показывает номер версии. Эти элементы есть у avifenc; аналогичная логика используется и в avifdec.
Шаг 3. Выполнить простое кодирование
Для PNG:
avifenc input.png output.avifДля JPEG:
avifenc input.jpg output.avifДля Y4M:
avifenc input.y4m output.avifНа этом этапе Libavif уже создает AVIF-файл. Без дополнительных параметров программа использует настройки по умолчанию, а пользователь оценивает размер и видимое качество.
Шаг 4. Настроить качество
Для фотографии:
avifenc -q 75 -s 6 input.jpg output.avifДля скриншота интерфейса:
avifenc -q 85 -y 444 input.png output.avifДля изображения с прозрачностью:
avifenc -q 80 --qalpha 95 input.png output.avifДля lossless:
avifenc --lossless input.png output.avifШаг 5. Проверить результат через avifdec
avifdec output.avif decoded.pngПосле декодирования результат сравнивают с исходником. Проверяют:
мелкий текст;
края логотипов;
прозрачность;
плавные градиенты;
однотонные заливки;
насыщенные красные и синие участки;
тени и темные зоны;
резкие контуры на контрастном фоне;
соответствие цветового профиля.

Шаг 6. Зафиксировать параметры для папки
Когда качество выбрано, ту же команду используют для всей папки. Для сайта обычно создают отдельную директорию, чтобы не смешивать исходники и готовые AVIF-файлы:
mkdir avif
for file in *.jpg; do
avifenc -q 75 "$file" "avif/${file%.*}.avif"
doneДля PNG с прозрачностью:
mkdir avif
for file in *.png; do
avifenc -q 80 --qalpha 95 "$file" "avif/${file%.*}.avif"
doneНастройки для разных типов изображений
| Тип изображения | Что важно | Подход Libavif |
| Фотография | плавные переходы, кожа, небо, детализация | подбирать -q, проверять темные зоны и мелкую фактуру |
| Скриншот интерфейса | текст, линии, пиксельная четкость | повышать качество, рассматривать -y 444 |
| Логотип | контуры, прозрачность, плоские цвета | использовать высокий --qalpha, проверять края |
| Иконка | alpha channel, малый размер, резкие границы | кодировать из PNG, сравнивать на светлом и темном фоне |
| HDR-изображение | gain map, цвет, совместимость | использовать параметры gain map и проверять целевые приложения |
| Архивный файл | сохранность исходных данных | хранить исходник отдельно, AVIF использовать как производный формат |
Такой подход лучше, чем один универсальный пресет. AVIF хорошо сжимает многие типы изображений, но разные исходники по-разному реагируют на YUV-субдискретизацию, скорость кодирования, качество альфа-канала и lossless-режим.
Плюсы и минусы
Плюсы:
Libavif работает напрямую с AVIF и не прячет параметры кодирования за упрощенным интерфейсом.
В комплект входят две понятные утилиты:
avifencдля кодирования иavifdecдля декодирования.Поддерживаются JPEG, PNG и Y4M на входе для
avifenc.avifdecвыводит PNG, JPEG или Y4M.Качество цвета, прозрачность, скорость, потоки и YUV-формат настраиваются отдельными параметрами.
Есть режим lossless.
Поддерживаются ICC, Exif и XMP.
Доступны параметры для HDR gain maps.
Инструмент легко включается в пакетную обработку и автоматические сборочные процессы.
BSD License упрощает использование в собственных проектах и сборках.
Минусы:
Нет графического интерфейса с предпросмотром.
Для комфортной работы нужно понимать командную строку.

Программа не открывает произвольные графические форматы на входе: базовый набор для
avifenc— JPEG, PNG и Y4M.Настройки качества приходится подбирать под тип изображения.
Для точной работы с цветом, HDR и bit depth нужно понимать параметры CICP, YUV, gain map и profiles.
Результат желательно проверять в целевых браузерах, просмотрщиках или через обратное декодирование.
Для пользователей, которым нужен визуальный каталог, сортировка и пакетная обработка через окно, удобнее FastStone Image Viewer, XnView или Converseen.
Системные требования
Системные требования Libavif зависят от сценария: запуск готовых утилит, установка пакета в ОС, сборка библиотеки или подключение к собственному приложению.
| Сценарий | Что требуется |
Использование avifenc и avifdec | ОС с доступной сборкой Libavif, терминал или PowerShell |
| macOS через пакетный менеджер | поддерживаемая версия macOS, доступ к Terminal |
| Linux через пакет ОС | дистрибутив с пакетом Libavif или пакетами для сборки |
| Windows через vcpkg/MSYS2 | среда, где доступны avifenc.exe и avifdec.exe |
| Сборка из исходного кода | CMake, компилятор C/C++, включенные codec dependencies |
| Разработка приложения | заголовки Libavif, библиотека, выбранные зависимости кодеков |
Libavif написана на C99, а большая часть тестов — на C++14. Для сборки требуется CMake. Зависимости кодеков управляются через CMake-флаги, например AVIF_CODEC_AOM, AVIF_LIBYUV и другие; значения OFF, SYSTEM и LOCAL отключают зависимость, используют системную библиотеку или собирают локальную копию.
Для кодирования AVIF нужно включить хотя бы один AV1-кодек. В документации для avifenc среди возможных вариантов кодека указаны aom, rav1e и svt; доступный набор зависит от того, какие кодеки включены при сборке.
Сравнение с аналогами
Libavif стоит сравнивать не с фоторедакторами, а с инструментами, которые реально применяются для конвертации, сжатия и автоматизации изображений.
| Инструмент | Тип | Где сильна Libavif | Где удобнее аналог |
| Libavif | библиотека и CLI-утилиты | точный контроль AVIF, avifenc, avifdec, alpha, metadata, gain maps | нет визуального интерфейса |
| ImageMagick | универсальный CLI-набор для изображений | Libavif глубже в AVIF-специфике | ImageMagick шире по операциям: resize, crop, blur, draw, flip, join, resample |
| FFmpeg | мультимедийный CLI-инструмент | Libavif проще для статичных AVIF-файлов | FFmpeg удобнее для видео, контейнеров и AV1-видеопроцессов |
| Squoosh | веб-приложение для сжатия изображений | Libavif лучше для скриптов и повторяемых процессов | Squoosh проще для ручного сравнения и визуального подбора |
| libheif / heif-enc | библиотека и CLI для HEIF/AVIF | Libavif сфокусирована именно на AVIF | libheif полезнее при работе с HEIF, HEIC и несколькими HEIF-вариантами |
| XnView MP | просмотрщик и менеджер изображений | Libavif точнее для кодирования AVIF через параметры | XnView MP удобнее для просмотра, сортировки и ручного экспорта |
| Converseen | пакетный графический конвертер | Libavif удобнее для CLI и серверной автоматизации | Converseen удобнее тем, кто хочет работать через окно |
ImageMagick использует программу magick для преобразования форматов и операций вроде resize, blur, crop, despeckle, dither, draw, flip, join и resample. Поэтому ImageMagick шире Libavif как графический комбайн, но уступает ей в прямом AVIF-контроле.
Squoosh — веб-приложение для сжатия изображений, которое выполняет обработку локально в браузере и не отправляет изображение на сервер. Оно удобно для разовой ручной оптимизации: пользователь видит исходник и результат, меняет параметры и сравнивает размер. Libavif сильнее там, где один и тот же процесс нужно повторять на сотнях файлов без браузера.
libheif поддерживает HEIF и AVIF через единый API, а heif-enc читает JPEG, PNG, TIFF и Y4M и записывает варианты HEIF, включая HEIC и AVIF. Поэтому libheif логичнее при смешанной работе с HEIF/HEIC/AVIF, а Libavif — при фокусе на AVIF.
Отзывы пользователей и профильных изданий
Профильные материалы о Libavif обычно оценивают не удобство интерфейса, а развитие AVIF-стека. Phoronix описывает Libavif 1.4 как релиз, продвигающий AVIF image support: в нем отмечены Apple-style gain maps, Sample Transform schemes из AVIF v1.2, PNG cICP chunks, чтение Sample-Transform-based 16-bit AVIF files и другие улучшения.
AOMedia уделяет внимание качеству кодирования: tune IQ ориентирован на perceptual quality, более стабильное качество внутри изображения и более близкое соответствие заданной цели качества. Для пользователей это проявляется не как новая кнопка, а как изменение поведения кодера: при близком размере файл сохраняет больше полезных деталей на сложных участках.
Google web.dev разбирал использование AVIF для сжатия изображений на сайте и отдельно объяснял параметры avifenc, включая quantizer-настройки. Это подтверждает практическую нишу Libavif: инструмент востребован не как домашний просмотрщик, а как часть веб-оптимизации.
В пользовательских обсуждениях вокруг Libavif чаще повторяются четыре темы:
как подобрать качество для AVIF, чтобы файл был меньше WebP или JPEG при приемлемой детализации;
какую скорость кодирования выбирать для больших партий изображений;
как работать с
avifenc.exeна Windows;почему lossless AVIF не всегда меньше исходного PNG.
Такой профиль обсуждений хорошо показывает аудиторию программы. Пользователи не жалуются на отсутствие красивого интерфейса как на баг: они выбирают Libavif именно за командную строку, контроль и совместимость со скриптами. Для визуальной ручной работы чаще выбирают Squoosh, XnView MP, ImageMagick с готовыми командами или графические редакторы.
Безопасность и лицензирование
Libavif распространяется под BSD License. Лицензия разрешает использование исходного и бинарного кода с модификациями и без них при сохранении уведомления об авторских правах, списка условий и отказа от гарантий.
С практической точки зрения это удобно для разработчиков: библиотеку можно включать в коммерческие и открытые проекты при соблюдении условий лицензии. Для обычного пользователя важнее другое: Libavif обрабатывает локальные файлы через командную строку, не требует загрузки изображений в браузерный сервис и хорошо подходит для обработки приватных наборов изображений на своем компьютере или сервере.
При серверной обработке важно обновлять компонент вместе с остальными библиотеками. Libavif работает с входными файлами, метаданными, цветом, кодеками и сторонними зависимостями; такие инструменты должны получать исправления, особенно в системах, где пользователи загружают изображения самостоятельно.
Практические сценарии использования
Подготовка изображений для сайта
Типовой процесс:
Исходники хранятся в PNG или JPEG.
Для каждой группы изображений подбирается качество.
Libavif создает
.avif.Результат декодируется через
avifdecдля выборочной проверки.Готовые файлы добавляются в веб-проект вместе с fallback-изображениями там, где это нужно.
Команда для фотографий:
avifenc -q 75 -s 6 photo.jpg photo.avifКоманда для интерфейсных скриншотов:
avifenc -q 85 -y 444 screenshot.png screenshot.avifКоманда для прозрачной графики:
avifenc -q 80 --qalpha 95 logo.png logo.avifВ связке с сайтом Libavif полезна тем, что результат легко пересоздается. При изменении исходников не нужно вспоминать настройки в графическом окне: достаточно заново выполнить сохраненную команду.
Подготовка изображений для приложения
Разработчики используют Libavif как библиотеку или как внешний CLI-инструмент. В первом случае приложение вызывает API и работает с AVIF напрямую. Во втором — сборочный процесс запускает avifenc для ассетов. Такой подход подходит для приложений, где графика должна быть оптимизирована заранее: иконки, обучающие экраны, иллюстрации, фоновые изображения, статичные элементы интерфейса.
Архивирование производных файлов
AVIF подходит для хранения производных изображений, но не заменяет исходники. Файл PSD, TIFF, RAW, исходный PNG без потерь или оригинальный JPEG лучше хранить отдельно. AVIF удобен как компактная версия для просмотра, сайта или приложения. При удалении исходников теряется гибкость: нельзя вернуться к слоям, профилям обработки, оригинальной цветовой глубине и материалам без компрессии.
Проверка совместимости
После кодирования файл проверяют в целевых приложениях. Для сайта это браузеры и устройства, для приложения — встроенный декодер, для архива — просмотрщик, которым будут пользоваться дальше. avifdec помогает выявить проблемы раньше: когда файл не декодируется корректно в Libavif, его не стоит отправлять дальше без разбирательства.
Типичные ошибки
Ожидание графического интерфейса
Libavif не показывает окно редактора. В ней нет панели слоев, инструментов выделения, кистей, ползунка яркости и кнопки экспорта. Работа идет через команды. Пользователям, которым нужен визуальный процесс, лучше рассмотреть GIMP, Paint.NET или просмотрщики из раздела image viewers.
Слишком сильное сжатие без проверки
Команда с низким качеством может заметно испортить небо, кожу, мелкую листву, текст и градиенты. Для одной фотографии дефект виден сразу, а при пакетной обработке ошибка распространяется на всю папку. Поэтому параметры подбирают на нескольких типичных файлах, затем запускают массовую обработку.
Игнорирование alpha channel
PNG с прозрачностью требует отдельной проверки. Низкое качество альфа-канала портит края, даже когда цветовая часть выглядит нормально. Для логотипов и иконок стоит использовать --qalpha и смотреть результат на разных фонах.
Неверный YUV-формат для скриншотов
Для фотографий цветовое субдискретизирование часто незаметно. Для скриншотов интерфейса и текста оно дает цветные ореолы и потерю четкости. В таких случаях стоит рассмотреть -y 444 и более высокое качество.
Удаление исходников
AVIF-файл не должен быть единственной копией рабочего изображения. Это особенно важно для фотографий, дизайна, интерфейсных макетов и архивов. Исходники сохраняют отдельно, а AVIF считают итоговой версией для доставки.
Смешивание задач Libavif и универсального редактора
Libavif не кадрирует, не ретуширует, не рисует, не меняет фон и не собирает коллажи. Она кодирует и декодирует AVIF. Для подготовки исходного изображения используют редактор или пакетный графический инструмент; Libavif подключают после этого.
Частые вопросы
Libavif — это программа или библиотека?
Libavif — библиотека и набор консольных утилит. Для пользователя главные программы внутри проекта — avifenc и avifdec. Первая кодирует изображения в AVIF, вторая декодирует AVIF в PNG, JPEG или Y4M.
Есть ли у Libavif графический интерфейс?
Графического интерфейса у Libavif нет. Управление идет через командную строку, параметры и имена файлов.
Чем отличаются avifenc и avifdec?
avifenc создает AVIF из JPEG, PNG или Y4M. avifdec выполняет обратную операцию: декодирует AVIF в PNG, JPEG или Y4M.
Подходит ли Libavif для новичка?
Для первой команды — да: avifenc input.png output.avif достаточно проста. Для точной настройки качества, прозрачности, цвета, HDR и пакетной обработки нужно освоить параметры командной строки.
Можно ли конвертировать PNG в AVIF?
Да. avifenc принимает PNG на вход и создает .avif.
Можно ли конвертировать JPEG в AVIF?
Да. avifenc принимает .jpg и .jpeg.
Как проверить результат?
Самый прямой способ — декодировать AVIF обратно:
avifdec output.avif decoded.pngЗатем сравнить decoded.png с исходником.
Что выбрать для ручной разовой конвертации?
Для разового визуального подбора удобнее Squoosh или графический конвертер. Для повторяемой обработки, серверного процесса и точной настройки AVIF лучше Libavif.
Что выбрать для обработки разных форматов?
Для разных входных форматов и операций вроде resize, crop, rotate, draw и batch editing удобнее ImageMagick или графические менеджеры изображений. Libavif стоит использовать на этапе финального AVIF-кодирования.
Итог
Libavif подходит пользователям, которым нужен точный AVIF encoder и decoder без лишнего графического слоя. Ее выбирают для веб-оптимизации, пакетной обработки, серверных процессов, разработки приложений и тестирования AVIF-возможностей. В программе нет визуального редактора, но есть то, что важно для технической работы: avifenc, avifdec, управление качеством, alpha channel, YUV, bit depth, метаданными, gain maps, кодеками и потоками.
Для новичка правильный старт — одна команда avifenc input.png output.avif, затем проверка через avifdec output.avif decoded.png. Для регулярной работы стоит подобрать отдельные параметры для фотографий, скриншотов, логотипов и прозрачной графики. Для визуального редактирования перед кодированием лучше использовать графический редактор, а Libavif оставлять на финальный этап, где важны размер, качество и повторяемость результата.
Список изменений
Формирование проекта:
- Libavif выросла как реализация AV1 Image File Format для кодирования и декодирования .avif . Ранние версии постепенно закрывали базовые задачи: чтение и запись AVIF, подключение AV1-кодеков, поддержка YUV-форматов, работа с alpha channel, развитие командных утилит avifenc и avifdec .
Libavif 1.0.0:
- Версия 1.0.0 стала важной точкой для библиотеки: она была выпущена как open-source software и стала первым релизом Libavif со стабильным API и гарантией обратной совместимости. Для разработчиков это означало, что Libavif можно увереннее включать в приложения и сборочные процессы, не опасаясь постоянных изменений публичного API.
Libavif 1.0.4:
- Ветка 1.0.x развивалась через патч-релизы. Libavif 1.0.4 была patch update и включала исправления, перенесенные в стабильную ветку. Такие релизы важны не из-за новых функций, а из-за устойчивости: библиотека используется в приложениях, пакетах ОС и автоматических обработчиках изображений, поэтому исправления в стабильной ветке влияют на надежность всего пайплайна.
- Ссылка на изображение:
Libavif 1.1.1:
- Libavif 1.1.1 усилила тестовое покрытие, security coverage через oss-fuzz и build coverage за счет поддержки большего числа платформ. В этой ветке появились experimental features, включая ISO gain map support for HDR. Команда avifenc получила поддержку layered AVIF images с progressive decoding, а сборочная система стала проще: параметры сборки упрощены, внешние зависимости можно автоматически получать и собирать.
- Ссылка на изображение:
Libavif 1.2.0:
- Libavif 1.2.0 развивала HDR-направление. В этой версии добавлена поддержка HDR gain maps, которые позволяют кодировать AVIF HDR-изображения с обратной совместимостью для SDR-дисплеев. Также появилась YCgCo-Re color space для улучшения lossless compression performance и tune=iq для оптимизации image quality при кодировании изображений с libaom v3.12.0.
- Для пользователя это означает, что Libavif перестала быть только простым AVIF-конвертером. Она стала инструментом для более сложных изображений, где важны HDR, цветовые параметры, gain map и совместимость отображения.
Libavif 1.4.0:
- Libavif 1.4.0 принесла крупные изменения в encoder technology. В этой ветке tune IQ стал стандартным режимом настройки качества для изображений; он ориентирован на улучшение perceptual quality, более стабильное качество внутри изображения и более точное попадание в целевое качество. Также появилась поддержка Sample Transforms из AVIF specification v1.2.0, улучшена работа с color space и gain map.
- Визуальные примеры AOMedia показывают, что tune IQ особенно заметен на сложных фрагментах: вода, небо, деревья, экранный контент и мелкие детали. Для владельца сайта это практически выражается в меньшем количестве компромиссов между размером и видимым качеством.
- Ссылка на изображение:
Libavif 1.4.2:
- В ветке 1.4.2 появились изменения вокруг avifgainmaputil , C11 для компиляции, обновления зависимостей, исправления decoding layered image with multiple scaled alpha layers, gain map tone mapping и обработки ошибок при копировании изображений. Также avifenc стал отклонять несовпадающий --depth для Y4M input.
- Эти изменения показывают направление развития Libavif: проект не ограничивается базовым кодированием PNG/JPEG в AVIF, а закрывает сложные случаи — слои, gain maps, глубину цвета, зависимости кодеков, надежность декодирования и корректность обработки нестандартных входных данных.


Оставте свой отзыв о Libavif