rav1e — подробный обзор консольного AV1-кодировщика и библиотеки

rav1e сжимает видеокадры в формат AV1 и предоставляет два способа работы: самостоятельную программу командной строки и библиотеку для включения в другие приложения. Его выбирают для управляемого кодирования, автоматизированной обработки и разработки собственных медиапроцессов. Это не видеоредактор: здесь нет монтажной шкалы, цветокоррекции, титров и окна предпросмотра. Для обычного MP4 нужен внешний декодер либо приложение, которое само читает ролик, декодирует его и передаёт библиотеке готовые кадры.

Скачать rav1e бесплатно

Исходная программа

rav1e

Программа для работы с видео или аудио на русском языке

Оценка8.5

  • Меньше инструментов для точной локальной коррекции
  • Часть расширенных функций доступна только платно
  • Набор инструментов зависит от версии и платформы
  • Может не подойти для сложного профессионального монтажа
Скачать rav1e

Полностью бесплатно — без СМС и регистрации

Задать вопрос фотографу
Андрей Фёдоров
Как вы могли заметить, здесь есть ТОП-ы на все случаи жизни, причём, их список постоянно пополняется. Кроме того, каждый год они обновляются, ведь я включаю в рейтинги реально лучшие аппараты из всех имеющихся в текущий момент на рынке. Именно мой опыт и знания помогли создать ресурс ТОП Фотограф, который, я надеюсь, приносит вам что-то полезное.
Задать вопрос

Для фотографа или видеографа этот инструмент находится в конце производственной цепочки — после обработки и монтажа. Его задача состоит в подготовке сжатой копии. Контроль над AV1 требует понимания форматов пикселей, параметров кодирования и устройства итогового файла. Режим одиночного изображения также не превращает утилиту в готовый конвертер фотографий в AVIF.

Что представляет собой rav1e

rav1e — открытый проект сообщества Xiph.Org. В числе его разработчиков — Thomas Daede и другие участники проекта. Основная реализация написана на Rust, для процессорных архитектур предусмотрены ассемблерные оптимизации. Название содержит цифру 1. Библиотечное обозначение librav1e относится к тому же кодировщику, а не к расширенной платной редакции.

По состоянию на 8 сентября 2026 года последний стабильный выпуск — 0.8.1 от 16 июня 2025 года. Для него доступны исходный код и готовые сборки. В проекте отдельно публиковались предварительные выпуски: их нельзя считать взаимозаменяемыми со стабильной версией только потому, что дата у них новее. Описанные ниже параметры самостоятельной программы относятся к 0.8.1; набор возможностей конкретного приложения с librav1e дополнительно зависит от его сборки и интерфейса интеграции.

Параметр Характеристика
Тип продукта Программный AV1-кодировщик: консольная утилита и библиотека
Разработка Сообщество Xiph.Org и участники проекта rav1e
Стабильная версия 0.8.1, выпущена 16 июня 2025 года
Готовые сборки Windows, Linux, macOS; варианты для разных процессорных архитектур
Интерфейс Командная строка, англоязычная справка и текстовый журнал
Вход самостоятельной утилиты Несжатые кадры YUV4MPEG2, обычно файл Y4M или стандартный ввод
Основной выход утилиты Видео AV1 в контейнере IVF
Разрядность и цветность 8, 10 и 12 бит; субдискретизация 4:2:0, 4:2:2 и 4:4:4
Управление сжатием Квантизатор, целевой битрейт, один или два прохода, 11 пресетов скорости
Интеграция Rust API, C-совместимый API, кодировщик librav1e в подходящей сборке FFmpeg
Оплата и доступ Бесплатное открытое ПО, лицензия BSD-2-Clause; без регистрации и активации
Место обработки Локальный компьютер или сервер, на котором запущена программа

AV1 обозначает формат сжатого видео, а IVF, MP4 и MKV — способы размещения медиаданных в файле. Библиотека кодирует изображение, но не становится проигрывателем или средством записи звука. Установка rav1e также не добавляет поддержку AV1 автоматически во все приложения системы.

Распространение, платформы и требования

Как выбрать готовую сборку

Самостоятельная утилита распространяется в архивах. Для Linux опубликованы варианты aarch64, i686 и сборки x86-64 с разной процессорной оптимизацией. Для macOS доступны отдельные архивы для Intel и aarch64, то есть Apple Silicon. В наборе Windows есть варианты GNU и MSVC, а внутри этих направлений — generic, SSE4 и AVX2. Это технические варианты одного продукта, а не уровни лицензии.

Выбор начинается с системы и архитектуры, затем — с поддерживаемых процессором инструкций. Архив AVX2 на неподходящем CPU не запустится корректно. Для переносимости между компьютерами разумнее начинать с подходящего generic-варианта. GNU и MSVC обозначают окружение сборки Windows; они не меняют формат создаваемого видео.

Архив библиотеки librav1e и архив программы rav1e решают разные задачи. Первый нужен разработчику или сборочной системе другого приложения; второй содержит инструмент для запуска команд. Для повседневного кодирования не требуется устанавливать среду Rust только ради уже собранного исполняемого файла. Саму утилиту удобно разместить в постоянной папке и либо запускать по полному пути, либо добавить эту папку в PATH.

Нагрузка зависит от разрешения, разрядности, анализа соседних кадров, параллелизма и количества одновременных задач. Успешный вызов –help подтверждает запуск утилиты, но не её производительность при кодировании. Пригодность компьютера для длинного проекта оценивают на характерном фрагменте с настройками будущей обработки.

Что важно при самостоятельной компиляции

Для исходного пакета 0.8.1 в Cargo.toml задана минимальная версия Rust 1.83.0. Требования ветки разработки и старые примеры установки нельзя автоматически переносить на выбранный релиз. Ассемблерные оптимизации x86-64 используют NASM 2.14.02 или новее; для aarch64 предусмотрена работа с подходящим ассемблером, включая вариант через clang. Эти зависимости относятся к сборке, а не к перечню программ, которые каждый зритель должен установить для просмотра результата.

Обычная команда сборки оптимизированной программы — cargo build –release. Сборка с target-cpu=native разрешает компилятору использовать возможности текущего процессора, но уменьшает переносимость исполняемого файла. Поэтому файл, собранный для одной рабочей станции, нельзя без проверки распространять на парк разнородных машин. Для диагностики имеет значение не только номер rav1e, но и параметры компиляции.

Команда rav1e –version выводит сведения о версии, компиляторе, целевой платформе, процессорных возможностях, ассемблерной поддержке, потоках и экспериментальных функциях. По этой записи можно сопоставить две сборки и выяснить различия в доступных режимах.

Интерфейс: справка, параметры запуска и журнал

Интерфейс самостоятельного rav1e складывается из команды запуска, справки и сообщений терминала. Пользователь задаёт источник, выход и параметры; программа сообщает характеристики входа, выбранный режим и ход обработки. Изображение оценивается в отдельном проигрывателе или инструменте сравнения.

Команда rav1e –help показывает синтаксис и группы настроек. В INPUT/OUTPUT находятся вход, выход и разрешение перезаписи; THREADING объединяет потоки и тайлы; ENCODE SETTINGS содержит управление сжатием и структурой кадров. VIDEO METADATA отвечает за описание цвета и времени, LEVEL — за целевой уровень AV1, DEBUGGING — за журнал, метрики и реконструкцию. Это смысловые группы текстовой справки, а не вкладки окна.

Справка и имена параметров англоязычные, переключателя русского интерфейса нет. Регистр коротких обозначений важен: -I задаёт максимальный интервал между ключевыми кадрами, а -i — минимальный. В сохранённых рабочих командах длинные названия лучше показывают назначение параметров.

После запуска журнал сообщает разрешение, частоту кадров, субдискретизацию, разрядность Y4M, уровень процессорных оптимизаций, настройки и число тайлов. Неожиданный формат входа нужно исправить до подбора качества: квантизатор не устраняет ошибку подготовки пикселей.

Строка состояния содержит количество обработанных кадров, скорость кодирования в fps, текущую оценку битрейта и прошедшее время. Когда задан ненулевой –limit, появляется известное целевое число кадров, а вместе с ним — оценки оставшейся работы и размера. Без такого ограничения утилита не обязана показывать процент завершения: поток Y4M сам по себе не предоставляет ей готовый счётчик всей последовательности.

Показатель fps в строке состояния — скорость обработки, а не частота кадров результата. Значение 8 fps при входе 25 fps означает кодирование медленнее воспроизведения. Изменение –speed не ускоряет движение объектов и не сокращает ролик.

Для подробного разбора предназначен –verbose: он выводит сведения по отдельным кадрам. Параметр –quiet подавляет сообщения состояния; одновременно включать его с подробным журналом нельзя. Диагностический вывод идёт в стандартный поток ошибок. Это позволяет сохранять журнал отдельно от медиаданных, особенно когда стандартный вывод используется для передачи результата следующей программе.

Как устроено управление качеством

Что именно делает кодировщик с кадрами

rav1e использует внутрикадровое и межкадровое предсказание. В первом случае изображение описывается через закономерности внутри кадра, во втором — с использованием связей с другими кадрами. Кодировщик выбирает разбиение изображения на блоки, способы предсказания и преобразования, а затем сохраняет сжатое представление. Поддерживаются суперблоки 64 × 64 и более мелкие квадратные и прямоугольные блоки, используемые в зависимости от режима поиска.

Нужно разделять три цели: уменьшить объём копии, выдержать визуальное качество и уложиться во время обработки. Пресет регулирует вычислительные усилия, квантизатор — степень сжатия, целевой битрейт — бюджет данных. Один из этих параметров не заменяет остальные.

Пресеты скорости от 0 до 10

–speed принимает значения от 0 до 10, по умолчанию используется 6. Меньшие числа соответствуют более тщательной обработке, большие — более быстрому режиму. Крайние 0 и 10 не предназначены для автоматического выбора в каждом проекте. Штатное значение 6 удобно как отправная точка сравнения, но не гарантирует оптимального результата.

Пресеты меняют реальную конфигурацию поиска. Например, в 0.8.1 при переходе к speed 6 используются сокращённый набор преобразований и менее затратные решения поиска, а глубина предварительного анализа кадров, RDO lookahead, составляет 20 кадров. При speed 8 она уменьшается до 10 кадров и отключается фильтр loop restoration, обрабатывающий реконструированное изображение. Поэтому увеличение числа способно изменить не только время, но и характер артефактов: это не один линейный регулятор «быстрее на столько-то процентов».

Квантизатор и визуальное качество

Без целевого битрейта –quantizer задаёт базовый квантизатор, по умолчанию 100. Уменьшение положительного значения направлено на более высокое качество и больший объём данных, увеличение — на более сильное сжатие. Это не проценты качества: значение 100 не означает полное сохранение изображения.

В справке диапазон обозначен как 0–255, но lossless-режим при –quantizer 0 в самостоятельной версии 0.8.1 не реализован: запуск доходит до соответствующей ошибки. Для обычного кодирования следует использовать положительные значения. Значение 1 также не является обещанием математически обратимого сохранения. Поэтому rav1e нельзя выбирать для единственной архивной копии на основании предположения, что минимальный квантизатор равен отсутствию потерь.

Базовый квантизатор не выравнивает сложность кадров. Статичная заставка, вода, листва и тёмный концертный план требуют разного объёма данных. Один параметр на двух роликах означает одинаковую настройку, но не одинаковое визуальное качество или размер.

Переносить числовое значение CRF из x264, SVT-AV1 или другого кодировщика нельзя: шкалы и алгоритмы различаются. Для перехода на rav1e нужен новый сравнительный прогон на материале собственной съёмки, а не арифметическая формула пересчёта привычного CRF.

Psychovisual и Psnr

Параметр –tune выбирает направление оптимизации. По умолчанию действует Psychovisual; альтернативный вариант — Psnr. Первый предназначен для настройки с учётом визуального восприятия, второй ориентирует оценку искажений на PSNR. Переключение имеет смысл при определённой цели сравнения: просмотр человеком и максимизация конкретной численной метрики — разные критерии.

Больший PSNR не означает автоматически более приятное изображение. Для обычной видеокопии логично начинать со штатной настройки восприятия; Psnr полезен для технических сравнений, где именно эта метрика сознательно выбрана критерием оптимизации.

Битрейт, проходы и временная структура

Режим целевого объёма данных

Параметр –bitrate задаёт целевой видеобитрейт в килобитах в секунду. Например, –bitrate 3000 означает 3000 кбит/с, а не 3000 байт/с. Этот режим уместен, когда существует ограничение на полосу передачи или планируемый размер выдаваемого файла. Общий размер контейнера дополнительно включает звук, субтитры и служебные данные, поэтому бюджет только видеодорожки нельзя приравнивать к размеру всего фильма.

Сочетание битрейта и квантизатора требует внимания: в самостоятельной утилите при заданном –bitrate параметр –quantizer становится верхней границей допустимого квантизатора, то есть ограничивает ухудшение качества. Если его не задавать, используется граница 255. Отдельный –min-quantizer ограничивает нижнюю границу в режиме битрейта. Слишком тесные ограничения мешают свободно распределять данные; это уже не тот же смысл, что у одного –quantizer без битрейта.

Для предварительного планирования объём видеоданных можно оценивать по формуле «битрейт × длительность / 8». При 3000 кбит/с и 60 секундах получается около 22,5 МБ в десятичном исчислении, без звука и контейнерных накладных расходов. Это расчёт бюджета, а не измеренный размер результата rav1e и не гарантия точного попадания любого фрагмента в указанное число.

Зачем нужны два прохода

В двухпроходном режиме –first-pass сохраняет статистику, а –second-pass использует её для следующего кодирования. В обоих проходах должен быть задан положительный целевой битрейт. Смысл схемы — дать распределению битов сведения о последовательности целиком, а не только о текущем участке. Плата за это — дополнительная обработка и отдельный файл статистики.

Статистика относится к конкретному входу. Между проходами нельзя незаметно изменить обрезку, частоту кадров, фильтры, размер или порядок кадров. Для нескольких заданий нужны отдельные имена статистики, иначе одна задача перезапишет данные другой. Сохранять разные выходные IVF для первого и второго прохода также удобнее: это исключает путаницу между промежуточным и итоговым результатом.

Два прохода нужны прежде всего для распределения бюджета данных. Для подбора степени сжатия короткого материала режим базового квантизатора проще интерпретировать; статистический проход уместнее при заданном видеобитрейте.

Ключевые кадры, смена сцен и задержка

–min-keyint и –keyint управляют минимальным и максимальным интервалом между ключевыми кадрами; штатные значения — 12 и 240 кадров. Интервалы измеряются именно в кадрах. Например, 240 кадров при 25 fps соответствуют 9,6 секунды, но автоматическое обнаружение смены сцен способно приводить к более ранним границам. Перемотка и сегментация требуют продуманной структуры, а не только малого размера файла.

Значение –keyint 0 отключает ключевые кадры с фиксированным интервалом, а не обещает полное отсутствие таких кадров в потоке. Отдельный –no-scene-detection отключает обнаружение смены сцен. Он нужен в специальных схемах, в том числе при заранее подготовленных фрагментах; без причины переносить его в обработку полного фильма не стоит. Это удаление части анализа, а не бесплатное ускорение без последствий.

–low-latency отключает переупорядочивание кадров. Режим предназначен для задач, в которых задержка важна, но сам по себе не создаёт прямую трансляцию и не гарантирует обработку в реальном времени. Источник, декодирование, накопление данных, упаковка, доставка и воспроизведение остаются отдельными звеньями. Для обычного файла без требований к задержке его включение должно иметь измеримую причину.

Lookahead — анализ будущих кадров — управляется в том числе через –rdo-lookahead-frames. Большее окно требует хранения и анализа дополнительного материала. Это не число потоков: окно определяет временной контекст, а потоки — предел параллельной работы.

Многопоточность и нагрузка на компьютер

–threads задаёт размер пула потоков. Нулевое значение означает использование числа логических процессоров для определения его размера. Это верхняя граница доступного параллелизма, а не обещание постоянно загрузить каждое ядро. Часть операций зависит от результатов предыдущей работы, а степень параллельности дополнительно связана с разбиением кадра и выбранными настройками.

Тайлы делят изображение на области, пригодные для параллельной обработки. В самостоятельной программе используются –tile-cols и –tile-rows; положительное число столбцов или строк должно быть степенью двойки. Ноль оставляет автоматическое определение. Запрошенное разбиение корректируется с учётом разрешения, поэтому окончательное количество нужно смотреть в журнале запуска.

Вместо двух направлений можно задать –tiles — желаемое минимальное количество тайлов, для которого кодировщик подбирает разбиение. Этот способ нельзя одновременно смешивать с явными –tile-cols и –tile-rows в одной консольной команде. Указанные значения обозначают количество, а не логарифм по основанию два. Например, два столбца задаются числом 2, а не числом 1.

Больше тайлов расширяет параллелизм, но их границы ограничивают использование связей при сжатии и добавляют накладные расходы. Поэтому нужно сопоставлять время, размер и качество на одном фрагменте. Более высокая загрузка CPU сама по себе не является целью.

rav1e кодирует на центральном процессоре. Ассемблерные оптимизации CPU не являются аппаратным AV1-кодировщиком видеокарты. Ускорение декодирования или фильтров в соседнем приложении не означает, что финальное сжатие librav1e перенесено на GPU.

Для расчёта ресурсов нужно учитывать и временные данные. Один кадр 1920 × 1080 в несжатом 8-битном 4:2:0 содержит 3 110 400 байт пиксельных данных. Десять секунд при 25 fps — около 778 МБ плюс заголовки Y4M. В 10-битном Y4M компоненты хранятся в двухбайтовых значениях, поэтому при таком же разрешении и субдискретизации объём пиксельных данных удваивается. Размер промежуточного файла принципиально отличается от размера исходного MP4.

Импорт, экспорт и работа с цветом

Границы самостоятельной программы

CLI принимает YUV4MPEG2, обычно файл .y4m: несжатые кадры с заголовком параметров последовательности. Размер и формат пикселей читаются из входа. Масштабирование, кадрирование и преобразование источника выполняются до кодирования; отдельного окна изменения разрешения нет.

MP4, MOV и MKV с уже сжатым видео не являются прямым входом самостоятельной утилиты. То же относится к JPEG, PNG и фотографическим RAW. Переименование файла в .y4m не меняет его содержимого: нужен декодер или конвертер, который действительно сформирует подходящую последовательность пикселей. Именно эту подготовительную роль обычно выполняет FFmpeg.

Основной результат CLI — AV1 в IVF. Встроенный модуль вывода не превращается в MP4-мультиплексор при смене расширения: указание неподдерживаемого расширения вызывает ошибку. Для фильма с аудио результат помещают в подходящий контейнер отдельной операцией. При этом уже сжатое видео можно скопировать без повторного кодирования, а звуковую дорожку взять из исходного материала.

–reconstruction создаёт дополнительный Y4M с реконструированными кадрами для сравнения. Это не компактный экспорт и не восстановленный оригинал без потерь. Для публикации нужен основной сжатый поток, для анализа — реконструкция и подходящий эталон.

Разрядность и субдискретизация — разные параметры

Разрядность определяет точность представления компонентов, а субдискретизация — пространственную детализацию цветовой информации. 10-битный 4:2:0 и 8-битный 4:4:4 различаются сразу по двум критериям; их нельзя ранжировать одним словом «качественнее». Для градиентов важна разрядность, для цветных тонких линий и текста — в том числе разрешение цветовых компонентов. Решение принимают с учётом исходника и назначения копии.

Преобразование 4:4:4 в 4:2:0 убирает часть цветовой детализации ещё до работы кодировщика. Уменьшением –quantizer её уже не вернуть. Аналогично, получение 10-битного входа из 8-битного источника не восстанавливает отсутствующие исходные уровни. Для материала, который действительно снят и обработан в повышенной разрядности, важна непрерывность всей цепочки, а не только поддержка 10 бит последним инструментом.

Поддержка 12 бит или 4:4:4 не гарантирует аппаратного воспроизведения на любом устройстве. Для выдачи проверяют фактическое сочетание профиля, разрядности, субдискретизации, разрешения и контейнера в целевом проигрывателе.

Цветовые метаданные и HDR

Для описания цвета CLI предоставляет –range, –primaries, –transfer и –matrix. Они обозначают диапазон значений, основные цвета, передаточную характеристику и матрицу. В программе предусмотрены Limited и Full, описание BT.709 и BT.2020, а среди передаточных характеристик — SMPTE2084 для PQ и HLG. Выбирать их нужно по реально подготовленному материалу, а не по разрешению или названию камеры.

Установка метки не является преобразованием изображения. Если ограниченный диапазон объявить полным или наоборот, интерпретация яркости изменится без корректного пересчёта значений. Аналогично, запись BT.2020 не преобразует автоматически изображение BT.709. Корректная цепочка отдельно выполняет нужное цветовое преобразование и отдельно указывает правдивое описание полученных пикселей.

CLI по умолчанию использует ограниченный диапазон. Y4M не является универсальным носителем всех сведений камеры: диапазон, цветовые характеристики и HDR-данные нужно контролировать отдельно. Набор меток для SDR BT.709 нельзя механически переносить на HDR.

–mastering-display позволяет задать координаты первичных цветов, белой точки и яркостные характеристики мастеринг-дисплея; –content-light — максимальную яркость контента и максимальную среднюю яркость кадра. Наличие полей не означает автоматического извлечения всех HDR-сведений из исходного MP4. rav1e не выполняет здесь тональное преобразование HDR в SDR и не восстанавливает недостающие метаданные по изображению.

Параметр –level выбирает целевой уровень AV1, включая автоматический режим. При этом реализация не гарантирует соблюдения всех ограничений уровня по скорости потока. Поэтому один выставленный уровень не заменяет проверку требований площадки или устройства. Для материала с формальной спецификацией приёмки нужен контроль фактического потока и итогового контейнера.

Зерно, одиночные изображения и границы «улучшения»

Функция –photon-noise использует синтез зерна AV1 и принимает интенсивность от 0 до 64; ноль отключает добавление. Это способ задать синтезируемую шумовую составляющую при декодировании. Он не является шумоподавителем и не анализирует автоматически исходный шум камеры, чтобы заменить его точной моделью. Уже существующее зерно не удаляется простым включением этого параметра.

Для высокочувствительной съёмки цепочка «шумоподавление, кодирование основного изображения, синтез зерна» состоит из разных операций. Первый шаг выполняется внешним инструментом. Добавление photon noise к уже шумному источнику не равнозначно замене исходного зерна моделью и не обещает уменьшения файла.

Для более определённого управления предусмотрен –film-grain-table: он читает таблицу параметров синтеза в формате, используемом также aomenc и SVT-AV1. Таблица и –photon-noise — альтернативные способы задания, а не два эффекта, которые нужно обязательно складывать. После изменения зерна результат следует оценивать в декодированном виде: именно там видна конечная текстура.

Синтез зерна не восстанавливает реальные детали и не является ИИ-ретушью. У rav1e нет удаления объектов, генерации изображений и увеличения разрешения с восстановлением деталей. Его алгоритмы относятся к сжатию и представлению сигнала.

–still-picture включает режим одиночного изображения; ограничение на число кадров в этом режиме не должно превышать одного. Однако стандартный выход утилиты остаётся IVF, а загрузка PNG или JPEG напрямую не появляется. Для практического получения AVIF требуется приложение, которое подготовит пиксели и сформирует именно контейнер изображения. Эта граница особенно важна при выборе инструмента для оптимизации фотографий сайта.

Пример рабочего процесса: короткая копия ролика в AV1

Пример показывает место rav1e между подготовкой кадров и сборкой готового файла. Исходные условия: source.mp4 — прогрессивный SDR-ролик длительностью не менее 10 секунд, с постоянной частотой 25 fps, квадратными пикселями, 8-битным изображением 4:2:0, цветом BT.709 и ограниченным диапазоном. Звук, при наличии, — AAC. Это сознательно узкий сценарий: для HDR, переменной частоты кадров и другого цветового описания параметры подготовки должны быть другими.

Потребуются rav1e, FFmpeg и ffprobe, доступные из терминала. Все приведённые имена обозначают файлы в текущей рабочей папке; команды выполняются по очереди. Вход не перезаписывается. Перед повторением примера следует выбрать новые имена результатов либо осознанно разрешить перезапись: для rav1e используется -y.

Подготовка и сжатие видеокадров

Сначала нужно посмотреть характеристики источника, включая дорожки и цветовые поля:

ffprobe -v error -show_streams -show_format “source.mp4”

После подтверждения исходных условий FFmpeg извлекает первые 10 секунд видеоряда в несжатый Y4M. Аудио в этот промежуточный файл не передаётся:

ffmpeg -i “source.mp4” -t 10 -map 0:v:0 -an -pix_fmt yuv420p -f yuv4mpegpipe “sample.y4m”

Затем запускается самостоятельный кодировщик со штатными отправными значениями скорости и квантизатора. Цветовое описание указано явно именно для выбранного SDR-источника:

rav1e “sample.y4m” -o “sample.ivf” –speed 6 –quantizer 100 –limit 250 –range Limited –primaries BT709 –transfer BT709 –matrix BT709

При заданных условиях десятисекундная последовательность содержит 250 кадров. Значение –limit делает этот объём явным и позволяет сопоставить счётчик обработки с ожидаемым. Оно не исправляет недостаток кадров во входе и не дополняет короткий файл. Параметры 6 и 100 служат начальной точкой, а не заранее выбранным стандартом качества для коммерческой выдачи.

Сборка файла со звуком

Полученный IVF содержит только видеоряд. Для удобной выдаваемой копии FFmpeg помещает его в MKV и берёт первую аудиодорожку из начала исходного ролика:

ffmpeg -i “sample.ivf” -i “source.mp4” -map 0:v:0 -map “1:a:0?” -map_chapters -1 -c copy -t 10 “sample-av1.mkv”

Параметр -c copy означает копирование выбранных сжатых дорожек без нового кодирования. Знак вопроса в выборе аудио допускает отсутствие звука в исходнике. Команда выбирает одну видеодорожку и не более одной аудиодорожки, без субтитров; -map_chapters -1 отдельно отключает перенос глав. При работе с материалом сложнее этого примера карту потоков нужно задавать отдельно.

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

Контроль результата

Первую проверку выполняет ffprobe с декодирующим подсчётом кадров:

ffprobe -v error -select_streams v:0 -count_frames -show_entries stream=codec_name,width,height,pix_fmt,avg_frame_rate,nb_read_frames -of default=noprint_wrappers=1 “sample-av1.mkv”

Ожидаются codec_name=av1, исходные ширина и высота, yuv420p, частота 25/1 и 250 прочитанных кадров. Размер файла и скорость обработки заранее не задаются: они зависят от содержимого и компьютера. Следующая команда проходит по файлу с декодированием, не создавая ещё одну видеокопию:

ffmpeg -v error -i “sample-av1.mkv” -f null –

Отсутствие сообщений об ошибках декодирования не заменяет просмотр. Нужно проверить начало и конец, синхронность звука, плавность движения, градиенты и цвет. Только после этого имеет смысл уменьшать квантизатор ради детализации или увеличивать его ради меньшего объёма, сохраняя прочие условия сравнения.

Использование librav1e внутри FFmpeg

Вместо отдельного Y4M и запуска утилиты можно использовать сборку FFmpeg с включённой библиотекой librav1e. Тогда FFmpeg читает исходный контейнер, декодирует видео, передаёт кадры кодировщику и упаковывает результат. Пригодность сборки проверяется командой ffmpeg -hide_banner -h encoder=librav1e. Сообщение об отсутствии кодировщика означает, что нужен FFmpeg с этой библиотекой; соседний файл rav1e.exe сам по себе её не подключает.

Это другой интерфейс к той же технологии, поэтому параметры нельзя копировать без перевода. Для оболочки FFmpeg важно не только имя, но и смысл настройки:

Задача Самостоятельный rav1e FFmpeg с librav1e
Базовый квантизатор –quantizer 100 без битрейта -qp 100
Пресет скорости –speed 6 -speed 6
Целевые 3000 кбит/с –bitrate 3000 -b:v 3000k
Число столбцов тайлов –tile-cols 2 -tile-columns 2
Число строк тайлов –tile-rows 2 -tile-rows 2
Низкая задержка –low-latency -rav1e-params low_latency=true

Особенно существенно сочетание -qp и -b:v: оболочка FFmpeg при явном -qp выбирает режим квантизатора и предупреждает, что битрейт не используется для выбора режима. Это не повторяет поведение самостоятельной программы, где квантизатор при битрейте задаёт верхнюю границу. Для ограничения квантизатора в режиме битрейта у оболочки предусмотрены общие параметры -qmin и -qmax; смешивать оба подхода в надежде получить «максимальное качество при точном размере» нельзя.

Через -rav1e-params передаются пары имя=значение, разделённые двоеточиями. Они относятся к строковым параметрам C API, а не ко всему перечню консольных опций. Например, low_latency пишется с подчёркиванием. Наличие в CLI –photon-noise или –film-grain-table не означает, что одноимённую функцию можно включить произвольной строкой в этом словаре. Неизвестные или неверные параметры следует искать в предупреждениях запуска.

Интеграция устраняет отдельный несжатый файл на диске и объединяет управление дорожками. Однако доступные параметры зависят от FFmpeg и подключённой библиотеки. Цвет, HDR-данные и выбор потоков по-прежнему требуют проверки: меньше команд не означает полного сохранения структуры исходника.

Автоматизация, пакетные задания и встраивание

CLI обрабатывает один входной поток, без встроенной очереди заданий для папки с фильмами. Пакетную работу организует внешний сценарий: перечисляет источники, формирует индивидуальные команды и имена результатов, проверяет завершение и ведёт журнал. Логика очереди и обработка ошибок остаются вне rav1e.

Для каждого задания следует сохранять команду, версию, сведения об исходнике и отдельную статистику проходов. При нескольких параллельных процессах нужно ограничивать не только их количество, но и число потоков внутри каждого. Иначе несколько задач одновременно претендуют на все логические процессоры и память. Завершённый файл лучше отмечать как готовый только после успешного декодирования, а не по факту его появления в папке.

Стандартный ввод поддерживается через имя источника «-». Это позволяет передавать Y4M напрямую от FFmpeg, не сохраняя большой промежуточный файл. Такой конвейер сокращает дисковые операции, но связывает жизненный цикл двух процессов: завершение отправителя, ошибка декодера или обрыв канала становятся проблемой входа rav1e. Для отладки отдельный короткий Y4M удобнее, поскольку его можно повторно подавать в разные режимы без нового декодирования.

В группе advanced имеются сохранение и загрузка конфигурации через –save-config и –load-config. Они требуют сборки с возможностью serialize, которая не входит в стандартный набор Cargo features. Без неё программа сообщает о необходимости соответствующей пересборки. Конфигурация хранит настройки кодировщика, но не заменяет проект с исходниками, звуковыми дорожками и монтажом. Доступна также генерация сценариев автодополнения для командной оболочки.

Разработчику библиотека предоставляет создание контекста, передачу кадров, получение сжатых пакетов и завершение очереди. Rust API удобен для приложений на Rust, C-совместимый API — для интеграции с кодом на других языках и существующими медиасистемами. Экспериментальный Channel API и связанный с ним rav1e-ch нужно отделять от обычного интерфейса: для них используются специальные возможности сборки, а совместимость интерфейса между версиями не гарантируется.

Вариант компиляции wasm относится к встраиванию, а не к готовому онлайн-конвертеру. Аналогично, запуск на арендованном сервере — способ развёртывания обычного программного компонента, а не отдельный облачный тариф проекта. В рассматриваемой поставке нет мобильного интерфейса для обработки роликов на телефоне, совместной монтажной комнаты или облачной медиатеки.

Стоимость, лицензия и приватность

rav1e бесплатен и распространяется под BSD-2-Clause. Нет редакций Free и Pro, подписки, пробного периода, активации, платного снятия водяного знака и квоты минут. Сборки различаются платформой, оптимизациями и включёнными возможностями, а не покупкой функций.

Лицензия разрешает использование и распространение кода при соблюдении её условий, включая сохранение уведомлений. Она не требует логотипа на ролике. Затраты организации — вычисления, хранение и сопровождение своей цепочки. Условия сторонней оболочки или облачного сервиса рассматриваются отдельно.

Локальное сжатие не требует загрузки видео на сервер или регистрации. Интернет нужен для получения программы, зависимостей при сборке и обновлений, но не для обработки уже доступного материала. rav1e можно включать в автономную рабочую среду.

Локальность не равна автоматической защите данных. Исходник, несжатый Y4M, реконструкция, готовый файл и журнал остаются доступными в соответствии с правами файловой системы. Имена файлов способны содержать сведения о заказчиках, а промежуточные кадры — полное изображение без сжатия. Кодировщик не шифрует эти материалы и не обезличивает людей в кадре. Для конфиденциальной работы следует контролировать папки вывода, доступ к ним и срок хранения промежуточных копий.

Проверка качества и типичные проблемы

Как сравнивать результат, а не только размер

Встроенный –psnr выводит PSNR, а –metrics рассчитывает более широкий набор показателей, включая PSNR-HVS, SSIM, MS-SSIM и CIEDE2000. Эти вычисления добавляют работу к самому кодированию. Для честного сравнения производительности набор включённых измерений должен совпадать. VMAF не следует ожидать от одного включения –metrics: эта команда не является встроенным запуском VMAF.

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

Для визуального сравнения нужно использовать одинаковые кадры, одинаковый масштаб и одинаковое цветовое преобразование на экране. На стоп-кадрах оценивают мелкие детали, градиенты, контуры и текст; в движении — стабильность текстур, резкие смены сцен и панорамирование. Материал с зерном дополнительно смотрят после декодирования. Один красивый статичный кадр не показывает поведения всей последовательности.

Для сравнения записывают имя фрагмента, версию, пресет, квантизатор или битрейт, время, размер и конкретные дефекты. После обновления библиотеки контрольный набор следует обработать заново, прежде чем заменять рабочую конфигурацию длинной очереди.

Диагностика по этапам

Симптом Что проверить Что сделать
Команда не найдена или окно сразу закрывается Путь к исполняемому файлу, текущую папку и способ запуска Открыть терминал, вызвать программу по полному пути и прочитать вывод –version или –help
Ошибка запуска, связанная с инструкциями процессора Архитектуру и выбор generic, SSE4 или AVX2; параметры собственной сборки Использовать совместимый вариант; не пытаться исправить несовместимый бинарный файл параметрами качества
Could not parse input video Является ли содержимое настоящим Y4M и завершилась ли его подготовка Повторно сформировать короткий Y4M внешним декодером; не ограничиваться сменой расширения
Unknown colorspace or unsupported bit depth Формат пикселей и заголовок подготовленного входа Явно выбрать поддерживаемое сочетание разрядности и субдискретизации, сохраняя требования к исходнику
Unexpected end of input Полноту файла или завершение процесса, передающего кадры по каналу Проверить журнал отправителя и воспроизвести задачу с отдельным коротким входным файлом
Не создаётся результат или отказано в перезаписи Права папки, свободное место, существующий файл и расширение выхода Задать новое имя IVF; использовать -y только для осознанной перезаписи
Обработка идёт, но загрузка CPU невысока Подачу кадров, –threads, разбиение на тайлы и конкурирующие процессы Сравнить изменения на одном фрагменте, не увеличивать все параметры одновременно
Файл воспроизводится, но цвет или звук неверны Цветовые метки, диапазон, карту потоков и согласование временных границ Проверить промежуточный вход и параметры упаковки; не пытаться исправить это пресетом скорости

При импорте ошибка выделения памяти не всегда означает, что компьютеру физически не хватает RAM: чтение Y4M имеет собственные ограничения на размер кадра. Нужно сопоставить сообщение с заголовком и параметрами входа. Неверное разрешение в заголовке способно направить поиск причины совсем не туда, если сразу переходить к покупке памяти или отключению проверок.

Для диагностики полезны версия и сведения о сборке, команда без конфиденциальных путей, характеристики входа и небольшой допустимый к передаче фрагмент. Менять следует один параметр за раз, иначе причину ошибки трудно отделить от последствий других изменений.

Плюсы и минусы

Плюсы ✔️
  • Открытая библиотека и самостоятельная консольная программа позволяют использовать один кодировщик как вручную, так и в собственных медиапроцессах.
  • Поддержка 8, 10 и 12 бит, а также 4:2:0, 4:2:2 и 4:4:4 даёт выбор представления сигнала без обязательного сведения всего материала к одному формату.
  • Квантизатор, целевой битрейт, два прохода и пресеты скорости разделяют контроль объёма данных и вычислительных усилий.
  • Локальное кодирование не требует учётной записи, загрузки материала в облако или покупки дополнительной редакции.
  • Журнал, метрики и реконструкция помогают исследовать результат и воспроизводить настройки, а не полагаться только на название готового профиля.
Минусы ❌
  • Самостоятельная утилита принимает Y4M и выводит IVF, поэтому для обычного файла со звуком необходимы внешние этапы подготовки и упаковки.
  • Нет собственного графического предпросмотра, монтажных инструментов и встроенной очереди заданий для папки с роликами.
  • Lossless-кодирование при нулевом квантизаторе в CLI 0.8.1 не реализовано.
  • Настройки CLI и FFmpeg различаются по именам, доступности и иногда по смыслу; механический перенос команды приводит к ошибкам.
  • Заявленный целевой уровень AV1 не гарантирует соблюдения всех его ограничений по скорости потока, что требует отдельного контроля для строгой приёмки.

Кому подойдёт и кому не подойдёт

Кому подойдёт

Технически подготовленному видеографу, который выпускает AV1-копии после монтажа и хочет явно управлять представлением пикселей, сжатием и проверкой. Особенно полезен инструмент при повторяемой обработке похожего материала, когда настройку можно один раз оформить в понятный сценарий и затем контролировать отклонения.

Разработчику медиаприложения или серверного процесса, которому нужен программный AV1-кодировщик с Rust- и C-совместимыми интерфейсами. Здесь отсутствие монтажной оболочки не является недостатком: загрузку, очередь, права доступа и упаковку всё равно определяет собственное приложение.

Исследователю качества сжатия, которому нужны явные настройки, реконструкция и измерения. Для него важна возможность отделить входные преобразования от решений кодировщика и повторить сравнительный прогон на фиксированном материале.

Кому не подойдёт

Для разового экспорта ролика со звуком CLI добавляет технические этапы. Монтаж, ретушь, стабилизация и цветокоррекция требуют профильного редактора. Для прямого преобразования фотографий в AVIF нужен конвертер изображений, а не режим одиночного видеокадра.

rav1e не стоит выбирать для обязательного аппаратного кодирования на GPU, восстановления повреждённого изображения или гарантированного lossless-архива. При жёстком сроке массовой обработки сначала сравнивают подходящие AV1-реализации на собственных источниках.

Четыре альтернативы для разных задач

SVT-AV1: другой программный AV1-кодировщик

SVT-AV1 стоит рассматривать, когда на первом плане масштабирование обработки на многоядерных системах и производительность большой очереди. Это самостоятельная реализация AV1, доступная также через libsvtav1 в FFmpeg, а не ускоренная редакция rav1e. У неё собственные пресеты и шкала управления качеством. Сравнение имеет смысл при одинаковых источниках, формате пикселей и приемлемых визуальных потерях; одинаковые числовые параметры двух реализаций не создают равных условий.

libaom и aomenc: эталонная реализация AV1

Библиотека libaom и консольный aomenc — эталонная реализация AV1 проекта AOMedia. В отличие от рассматриваемого CLI rav1e, aomenc предоставляет отдельный режим –lossless=1: он уместен, когда требуется кодирование без потерь относительно входных пикселей. Это не отменяет потерь при предшествующем преобразовании цвета или субдискретизации. Для исследования AV1 доступны собственные настройки инструментов сжатия; графического упрощения сам aomenc не даёт.

HandBrake: готовый графический процесс обработки

Когда важнее получить готовый ролик, чем управлять непосредственно rav1e, HandBrake предлагает очередь заданий, пресеты, предпросмотр, выбор звука и субтитров, а также вывод в MP4, MKV и WebM. Программное AV1-кодирование в нём представлено SVT-AV1. Это не официальная графическая оболочка rav1e, а другой транскодер с собственной организацией работы. Он снимает необходимость вручную связывать подготовку кадров и упаковку, но не предоставляет идентичный набор настроек рассматриваемого кодировщика.

cavif: фотографии PNG и JPEG в AVIF

Для изображений сайта ближе к задаче cavif — консольный конвертер PNG/JPEG в AVIF, использующий rav1e через библиотеку ravif вместе с упаковкой изображения. Это альтернатива рабочему процессу, а не конкурентный AV1-движок. Он принимает привычные растровые файлы и поддерживает обработку нескольких изображений. Уровень качества 100 в cavif также не означает lossless. Выбирать его следует для подготовки AVIF, а не для монтажа видео или проявки фотографического RAW.

FAQ

Нужно ли получателю устанавливать именно rav1e?

Нет. Результат представляет собой AV1, а не закрытый формат конкретной программы. Получателю нужен проигрыватель с подходящим AV1-декодером и поддержкой выбранного контейнера. Например, dav1d предназначен для декодирования AV1, тогда как rav1e — для кодирования. Совместимость конкретной разрядности и субдискретизации по-прежнему нужно проверять на целевом устройстве.

Можно ли использовать статистику незавершённого первого прохода?

Её нельзя считать готовой. Самостоятельная утилита окончательно записывает сводные данные статистики при завершении прохода. После прерывания файл может существовать, но содержать незавершённый заголовок или неполные данные. Перед вторым проходом следует успешно выполнить первый целиком; само наличие файла статистики не является подтверждением его пригодности.

Параметр –high-bitdepth делает восьмибитный ролик десятибитным?

Нет. Он принудительно включает высокоразрядный вычислительный путь даже для 8-битного материала и предназначен главным образом для отладки. Это не переключатель выходной разрядности. Реальные 10-битные значения должны быть сформированы во входных кадрах; их описание передаётся через Y4M или интерфейс библиотеки.

Почему библиотека не возвращает готовый пакет сразу после передачи кадра?

Передача кадров и получение пакетов не обязаны соответствовать друг другу один к одному: кадры накапливаются для анализа и кодирования. Состояния NeedMoreData и Encoded сами по себе не означают аварии. После последнего входного кадра приложение должно завершить подачу через flush и продолжить получение оставшихся пакетов до LimitReached. Иначе хвост последовательности останется невыгруженным.

Можно ли получить один и тот же отчёт –benchmark на всех системах?

Нет. В самостоятельной утилите отчёт использования ресурсов через –benchmark не поддерживается на Windows и wasm. Его отсутствие там нельзя трактовать как неисправность кодирования или запрет бесплатной редакции. Для сопоставления разных платформ следует заранее выбрать общий способ измерения времени и памяти, а не сравнивать разнородные отчёты.

Итог: когда выбор rav1e оправдан

rav1e имеет смысл выбирать как управляемый компонент AV1-цепочки: после подготовки материала, с понятным форматом входных пикселей и отдельной проверкой результата. Для интеграции и повторяемого локального кодирования это прямой путь к нужным параметрам. Для разового экспорта ролика со звуком практичнее готовый транскодер; для фотографий в AVIF — специализированный конвертер изображений. При строгих сроках или требованиях приёмки решают измеренный результат на собственном материале и проверенная совместимость, а не крайнее значение пресета.

Поделиться с друзьями
Андрей Федоров
Андрей Федоров

Фотография – это целое искусство, где необходима полная самоотдача, недюжинный самоконтроль и безупречное чувство прекрасного. А если вы ещё и желаете досконально разбираться в фототехнике – вам потребуется соответствующее образование и немалый опыт. У меня имеется и то, и другое, ведь я работаю профессиональным фотографом уже около 20 лет. За плечами высшее техническое образование в сфере фототехники, а также подтверждённая профессия «Фотоискусство и диджитал графика» от РГУ имени А. Н. Косыгина. Кроме того, полученные специальности не остановили меня в развитии, и я закончил ещё и несколько платных тематических курсов, существенно подтянув свои знания в сфере фотодела. В конце концов жизненный путь привёл меня к созданию своего сайта, где я делюсь собственным немалым опытом с читателями. Подробнее обо мне...

Оцените автора
( Пока оценок нет )
Топ фотограф
Добавить комментарий