Вопрос или проблема
В настоящее время я использую Ubuntu Focal Fossa 20.04 LTS и хотел бы создавать высококачественные файлы AV1 с помощью FFmpeg и librav1e. Меня подтолкнуло к этому добавление поддержки rav1e в FFmpeg как ‘librav1e’.
Вот материал, с которым я хочу работать:
- Трейлер к фильму Sintel (720p несжатый 1.7GB)
- Аудио трейлера Sintel (flac 5MB)
Поддержка rav1e в FFmpeg только начинает развиваться, поэтому пока немного документации и опубликованных экспериментов. Было бы здорово увидеть, как все это работает на выпуске Ubuntu LTS!
Похоже, эта задача может быть выполнена в 4 относительно простых шага, что позволит Ubuntu Focal Fossa 20.04 LTS освоить кодирование AV1 с помощью FFmpeg и rav1e!
1. Получите свежую копию Rust…
Focal Fossa и rav1e выигрывают от более новой версии Rust, поэтому скачайте более новую копию следующим образом:
sudo apt-get install curl
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
Следуйте стандартным настройкам (просто нажмите ‘enter’), а затем выполните следующее, чтобы настроить текущую оболочку:
source $HOME/.cargo/env
чтобы обеспечить мгновенный доступ к последней версии Rust и связанным с ним инструментам. Не забывайте обновлять эту установку время от времени (особенно если обновляете rav1e с помощью этого руководства), выполнив комманду:
rustup update
2. Установите rav1e
Лучше установить как исполняемый файл (команда rav1e --fullhelp
затем покажет опции, которые могут быть использованы внутри FFmpeg с опцией -rav1e-params
), так и библиотеки, которые FFmpeg будет использовать для успешной компиляции и создания librav1e.
Сначала исполняемый файл, используя простой блок кода для копирования и вставки:
sudo apt-get install nasm build-essential pkg-config libssl-dev &&
mkdir -pv $HOME/{bin,ffmpeg_sources,ffmpeg_build} &&
cd $HOME/ffmpeg_sources &&
wget https://github.com/xiph/rav1e/archive/refs/tags/v0.6.3.tar.gz &&
tar xvf v0.6.3.tar.gz && cd rav1e-0.6.3 &&
cargo build --release &&
find target -name rav1e -exec install -m 755 {} $HOME/bin \; &&
strip ~/bin/rav1e && \
cd $HOME/ffmpeg_sources && rm -rfv rav1e-0.6.3
Далее установите апплет cargo-c
а также библиотеки и файл pkg-config, необходимые для FFmpeg. Сначала выполните однократную команду для установки cargo-c
:
cargo install cargo-c
а затем повторно скомпилируйте rav1e, используя установленный cargo-c
:
cd $HOME/ffmpeg_sources && tar xvf v0.6.3.tar.gz && \
cd rav1e-0.6.3 && \
cargo cinstall --release \
--prefix=$HOME/ffmpeg_build \
--libdir=$HOME/ffmpeg_build/lib \
--includedir=$HOME/ffmpeg_build/include
Лучше затем удалить общие библиотеки rav1e, оставив статические библиотеки для использования FFmpeg (FFmpeg имеет проблему с общими библиотеками rav1e в этом местоположении на моей системе):
rm -v $HOME/ffmpeg_build/lib/librav1e.so*
3. Установите FFmpeg
Теперь перейдите на сайт trac FFmpeg и установите FFmpeg, как указано, не забыв добавить:
--enable-librav1e
в строку ./configure
. Затем основная работа завершена 🙂
4. Запустите кодировщик
Можно выполнить очень разумное кодирование на тестовых файлах, упомянутых в оригинальном вопросе:
ffmpeg -i sintel_trailer_2k_720p24.y4m -i sintel_trailer-audio.flac \
-c:v librav1e -qp 80 -speed 4 \
-tile-columns 2 -tile-rows 2 \
-c:a libfdk_aac -b:a 128k \
sintel_trailer_av1.mp4
Элементы, которые можно изменить здесь:
-qp 80
: Использует режим ‘квантизатор’ для кодирования в диапазоне 0-255. Меньшие значения — это более высокое качество, по умолчанию 100. 80 кажется оптимальным для этого медиа-клипа.-speed 4
: Позволяет выбрать предустановку скорости (0-10) для кодирования, 0 — наилучшее качество, 10 — наибольшая скорость. Этот параметр является хорошим компромиссом между скоростью и качеством на моей системе (2-е поколение Threadripper).-tile-columns 2 -tile-rows 2
Довольно неплохие ускорения по скорости можно получить, манипулируя кодированием с использованием тайлов в rav1e. Пример, представленный здесь, разделяет кодирование и декодирование на 4 сегмента и, кажется, является удачным выбором для предложенного входного видео, хотя не стесняйтесь поэкспериментировать..
Это кодирование происходит в несколько раз быстрее, чем с FFmpeg и libaom-av1, и, возможно, обеспечивает гораздо лучшее качество. Несомненно, эту строку кодирования можно еще оптимизировать, что я и сделаю, когда rav1e, FFmpeg и кодирование AV1 созреют…
5. Бонусный скриншот
ОК, есть опциональный пятый шаг; сделать скриншот завершенного выходного файла 🙂
Дополнительные заметки…
- Документация FFmpeg: Документация по реализации кодирования с rav1e в FFmpeg, также доступна в man-страницах FFmpeg, например
man ffmpeg-all
илиman ffmpeg-codecs
. Не забывайте, что варианты native rav1e можно увидеть с помощьюrav1e --help
и добавить в любую командную строку FFmpeg используя опцию-rav1e-params
…
.
Ответ или решение
Как использовать FFmpeg и rav1e для создания высококачественных файлов AV1 на Ubuntu 20.04 LTS (Focal Fossa)
Создание видео высокого качества – задача не из лёгких, особенно когда речь идет о новейших технологиях кодирования, таких как AV1. В Ubuntu 20.04 LTS, используя FFmpeg и библиотеку librav1e, мы можем достичь выдающегося качества видео. Следуя инструкциям ниже, вы сможете эффективно настроить и использовать эти инструменты.
1. Установка актуальной версии Rust
Для работы с rav1e требуется обновлённая версия Rust. Установите её следующим образом:
sudo apt-get install curl
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
Следуйте инструкциям установки по умолчанию, затем выполните команду:
source $HOME/.cargo/env
Для обновления Rust со временем используйте команду:
rustup update
2. Установка rav1e
Установка Исполняемого Файла
Сначала установите необходимые инструменты:
sudo apt-get install nasm build-essential pkg-config libssl-dev
Создайте рабочие директории и скачайте исходники rav1e:
mkdir -pv $HOME/{bin,ffmpeg_sources,ffmpeg_build}
cd $HOME/ffmpeg_sources
wget https://github.com/xiph/rav1e/archive/refs/tags/v0.6.3.tar.gz
tar xvf v0.6.3.tar.gz
cd rav1e-0.6.3
Соберите rav1e:
cargo build --release
find target -name rav1e -exec install -m 755 {} $HOME/bin \;
strip ~/bin/rav1e
cd $HOME/ffmpeg_sources
rm -rfv rav1e-0.6.3
Установка Библиотек
Установите cargo-c
, чтобы компилировать rav1e с нужными библиотеками:
cargo install cargo-c
Снова соберите rav1e с помощью cargo-c
:
cd $HOME/ffmpeg_sources
tar xvf v0.6.3.tar.gz
cd rav1e-0.6.3
cargo cinstall --release --prefix=$HOME/ffmpeg_build --libdir=$HOME/ffmpeg_build/lib --includedir=$HOME/ffmpeg_build/include
Удалите общие библиотеки, чтобы оставить только статические:
rm -v $HOME/ffmpeg_build/lib/librav1e.so*
3. Установка FFmpeg
Обратитесь к документации по установке FFmpeg и добавьте флаг:
--enable-librav1e
к строке ./configure
, чтобы включить поддержку librav1e.
4. Запуск кодирования
Теперь вы готовы создавать свой первый AV1 файл. Используйте следующую команду для кодирования предоставленных файлов:
ffmpeg -i sintel_trailer_2k_720p24.y4m -i sintel_trailer-audio.flac \
-c:v librav1e -qp 80 -speed 4 \
-tile-columns 2 -tile-rows 2 \
-c:a libfdk_aac -b:a 128k \
sintel_trailer_av1.mp4
Параметры для оптимизации:
-qp 80
: Качество можно регулировать в диапазоне от 0 до 255, где более низкие значения означают лучшее качество.-speed 4
: Увеличение этой цифры ускоряет процесс кодирования за счет качества.-tile-columns 2 -tile-rows 2
: Разделите видео на несколько сегментов для повышения скорости.
5. Дополнительные заметки
Пожалуйста, ознакомьтесь с документацией FFmpeg по librav1e для изучения дополнительных параметров кодирования, которые могут подойти под ваши задачи.
Создание высококачественных файлов AV1 с использованием FFmpeg и rav1e на Ubuntu 20.04 может быть увлекательным процессом. Экспериментируйте с параметрами для достижения наилучших результатов.