Несколько дней назад это было выпустила новую версию Rav1e 0.3, который кодировщик AV1, написанный на Rust и что он позиционируется как высокопроизводительный. Rav1e - это разработан, чтобы охватить все варианты использования, хотя в нынешнем виде он больше подходит для случаев, когда libaom.
Он поддерживает все основные функции AV1, включая внутренне и внешне кодированные кадры (intra и inter-frame) 64 × 64 суперблока, 4: 2: 0, 4: 2: 2 и 4: 4: 4, 8 подвыборок цвета, 10 и 12-битное кодирование глубины цвета, RDO Оптимизация искажений (Velocity Distortion Optimization), различные режимы для прогнозирования изменений между кадрами и обнаружения преобразований, управления скоростью потока и обнаружения усечения сцены.
Формат AV1 заметно опережает H.264 и VP9. в возможностях сжатия, но из-за сложности алгоритмов, реализующих их, требуется значительно больше времени для кодирования (с точки зрения скорости кодирования libaom в сотни раз отстает от libvpx-vp9 и в тысячи раз от x264).
Кодер rav1e обеспечивает 11 уровней производительности, самый высокий из которых обеспечивает скорость, близкую к кодированию в реальном времени. Кодировщик доступен как в виде утилиты командной строки, так и в виде библиотеки.
Что нового в Rav1e 0.3?
С выпуском этой новой версии одна из характеристик, которая выделяется больше всего, это что улучшен режим кодирования, с которым он намного быстрее, чем его предыдущие версии.
Кроме того размер двоичных файлов был уменьшен (на платформе x86_64 для Linux библиотека занимает примерно 3 Мбайт), с которой проделанная работа была оптимизирована лучше.
Для архитектуры x86_64 реализованы дополнительные оптимизации с использованием инструкций SIMD и расширено использование самовекторизации.
Еще одно важное изменение: добавлена поддержка сборки для платформы wasm32-wasi (Системный интерфейс WebAssembly), а также параметр «-S» (–switch-frame-interval) для определения интервала между кадрами переключения.
Из других изменений, которые выделяются этой новой версии Rav1e 0.3:
- Добавлен многопоточный фильтр для удаления блокирующих артефактов из видео.
- Была проделана работа по сокращению времени сборки примерно на 14%.
- Была проделана работа по уменьшению количества операций выделения памяти на 1/6.
- В RDO (Оптимизация искажения скорости) улучшена логика для подавления внутрикадровых искажений.
- Некоторые операции были преобразованы из арифметики с плавающей запятой в целочисленные вычисления.
- На втором уровне скорости улучшено качество кодирования 1-2%.
- Добавлен новый фильтр для предсказания направления движения (внутренняя кромка).
Как установить rav1e на Ubuntu и производные?
Тем, кто хочет установить этот кодировщик AV1 в свою систему, следует знать, что в настоящее время rav1e доступен для компиляции в Linux хотя для Windows есть exe.
В этом случае нас интересует возможность установить его в Ubuntu и его производных, поэтому для этого в их системе должен быть установлен Rust.
Если у вас его нет, вам следует сделать следующее: откройте терминал в вашей системе (вы можете сделать это с помощью сочетания клавиш Ctrl + Alt + T) и в нем вы собираетесь ввести следующие команды:
sudo apt install curl curl https://sh.rustup.rs -sSf | sh
Позже нам нужно только ввести вариант 1, и он будет установлен. Как только это будет сделано, мы собираемся настроить среду для компилятора Rust с помощью:
source $HOME/.cargo/env
Теперь, чтобы установить rav1e, мы наберем:
sudo apt -y install cargo git perl nasm cmake clang pkg-config
Клонируем код rav1e:
git clone https://github.com/xiph/rav1e.git mv rav1e rav1e-git cd rav1e-git
И начнем с компиляции:
git submodule update –init cmake aom_build/aom -DAOM_TARGET_CPU=x86_64 -DCONFIG_AV1_ENCODER=0 -DENABLE_TESTS=0 -DENABLE_DOCS=0 -DCONFIG_LOWBITDEPTH=1 make -j$(nproc) cargo build --release cp target/
Вот и все, с этим кодировщиком можно работать.
Если вы хотите узнать об использовании rav1e, вы можете проконсультироваться по следующей ссылке.