FFMPEG AMF аппаратное ускорение на сервере AMD Ryzen™ 7 7700 в Ubuntu 22.04

Вопрос или проблема

Я пытался сделать ffmpeg доступным с AMF и получить доступ к аппаратному ускорению AMF (в ffmpeg -hwaccels), но не смог.

Сначала ядро, с которым сервер поставлялся с Ubuntu 22.04, было 5.15, и после обращения в службу поддержки мне объяснили, что мне нужно обновить ядро, чтобы получить доступ к /dev/dri.

Я обновился до 6.8, и тогда у меня появился доступ к /dev/dri, и я смог использовать ffmpeg 7.1 с работающим vaapi.

В AMD есть собственное аппаратное ускорение под названием AMF, которое позволяет достичь гораздо лучших скоростей и качества транскодирования.

Я установил драйверы AMD GPU, как это объяснено здесь: https://www.amd.com/en/support/download/linux-drivers.html

Я также установил AMF и скомпилировал свою собственную сборку ffmpeg с флагом --enable-amf.

Тем не менее, в ffmpeg -hwaccels я получаю доступ только к vaapi и drm.

Можете ли вы поделиться, если знаете какое-либо решение этой загадки?

Это инструкции, с помощью которых я установил драйверы, AMF и ffmpeg:

Установить драйверы AMD GPU Pro:
wget https://repo.radeon.com/amdgpu-install…60203-1_all.deb
sudo apt install ./amdgpu-install_6.2.60203-1_all.deb

amdgpu-install --usecase=amf,multimedia -y
sudo amdgpu-install -y --usecase=amf,graphics --accept-eula --opencl=rocr,legacy --vulkan=amdvlk,pro



Руководство по компиляции / Ubuntu – FFmpeg
Компиляция ffmpeg:

sudo apt-get update -qq && sudo apt-get -y install \
autoconf \
automake \
build-essential \
cmake \
git-core \
libass-dev \
libfreetype6-dev \
libgnutls28-dev \
libmp3lame-dev \
libtool \
libvorbis-dev \
meson \
ninja-build \
pkg-config \
texinfo \
wget \
yasm \
zlib1g-dev

sudo apt install libunistring-dev libaom-dev libdav1d-dev -y

mkdir -p ~/ffmpeg_sources ~/bin

// Установка зависимостей
apt-get update && apt-get install -y \
build-essential \
pkg-config \
yasm \
nasm \
libtool \
automake \
cmake \
libx264-dev \
libx265-dev \
libvpx-dev \
libfdk-aac-dev \
libopus-dev \
libaom-dev \
libdrm-dev \
libva-dev \
vainfo
    
    
cd ~/ffmpeg_sources && \
wget https://ffmpeg.org/releases/ffmpeg-7.1.tar.bz2 && \
tar -xjf ffmpeg-7.1.tar.bz2 && \
mkdir ffmpeg_build && \
cd ffmpeg_build && \
mkdir include && \
cd include && \


// Установка AMF
git clone https://github.com/GPUOpen-LibrariesAndSDKs/AMF.git && \
mv ~/ffmpeg_build/include/AMF/amf ~/ffmpeg_build/include/ && \
rm -rf AMF && \

// Отсюда: https://askubuntu.com/questions/1440…-ubuntu-20-04-5
// Корректная установка:
cd ~/
git clone https://github.com/GPUOpen-LibrariesAndSDKs/AMF.git
mkdir /usr/local/include/AMF
cd /usr/local/include/AMF
ln -sf ~/AMF/amf/public/include/core
ln -sf ~/AMF/amf/public/include/components

// Установка libvmaf
cd ~/ffmpeg_sources && \
wget https://github.com/Netflix/vmaf/archive/v3.0.0.tar.gz && \
tar xvf v3.0.0.tar.gz && \
mkdir -p vmaf-3.0.0/libvmaf/build && \

cd vmaf-3.0.0/libvmaf && \
meson setup build --buildtype=release --default-library=static --prefix="$HOME/ffmpeg_build" && \
ninja -C build && \
ninja -C build install

cd ~/ffmpeg_sources/ffmpeg-7.1
PATH="$HOME/bin:$PATH" PKG_CONFIG_PATH="$HOME/ffmpeg_build/lib/pkgconfig" ./configure \
--prefix="$HOME/ffmpeg_build" \
--pkg-config-flags="--static" \
--extra-cflags="-I$HOME/ffmpeg_build/include" \
--extra-ldflags="-L$HOME/ffmpeg_build/lib" \
--extra-libs="-lpthread -lm" \
--ld="g++" \
--bindir="$HOME/bin" \
--enable-gpl \
--enable-gnutls \
--enable-libaom \
--enable-libass \
--enable-libfdk-aac \
--enable-libfreetype \
--enable-libmp3lame \
--enable-libopus \
--enable-libdav1d \
--enable-libvorbis \
--enable-libvpx \
--enable-libx264 \
--enable-libx265 \
--enable-libdrm \
--enable-vaapi \
--enable-libvmaf \
--enable-amf \
--enable-nonfree && \
PATH="$HOME/bin:$PATH" make && \
make -j$(nproc) install && \
hash -r


./ffmpeg -buildconf



Тест VMAF для сравнения качества:
./ffmpeg -i input.mp4 -i reference.mp4 -lavfi libvmaf -f null -
// пример вывода: [Parsed_libvmaf_0 @ 0x74a0f8004940] VMAF score: 98.930249ate=N/A speed=9.06x

Ответ или решение

Подключение аппаратного ускорения AMF для FFMPEG на сервере с процессором AMD Ryzen™ 7 7700 в Ubuntu 22.04

Если вы пытаетесь настроить аппаратное ускорение AMF (Advanced Media Framework) для FFMPEG на сервере с AMD Ryzen™ 7 7700 под управлением Ubuntu 22.04, но сталкиваетесь с проблемами, не отчаивайтесь. В данной статье предоставлены подробные инструкции, которые помогут вам решить возникшие сложности и настроить систему для использования AMF в FFMPEG.

Шаг 1. Обновление ядра

На начальном этапе вы верно решили обновить ядро вашей операционной системы. Как вы уже заметили, ядро версии 5.15 не предоставляет доступа к /dev/dri, что необходимо для работы с аппаратным ускорением.

  1. Убедитесь, что вы используете корректную команду для обновления ядра до версии 6.8:

    sudo apt update
    sudo apt install linux-generic-hwe-22.04
  2. Перезагрузите вашу систему, чтобы изменения вступили в силу.

Шаг 2. Установка драйверов AMD

Вы указали, что уже установили драйверы AMD GPU, следуя инструкциям с сайта AMD. Однако убедитесь, что все необходимые компоненты установлены:

  1. Установите драйвер AMD Pro:

    wget https://repo.radeon.com/amdgpu-install/6.2/6.2.60203-1_all.deb
    sudo apt install ./amdgpu-install_6.2.60203-1_all.deb
  2. Выполните установку, добавив флаги для AMF и мультимедиа:

    amdgpu-install --usecase=amf,multimedia -y

Шаг 3. Установка и компиляция AMF

Вы правильно выполнили установку и компиляцию AMF, но, возможно, есть некоторые нюансы, которые нужно учесть для успешного подключения.

  1. Убедитесь, что вы клонировали репозиторий AMF и правильно его переместили:

    git clone https://github.com/GPUOpen-LibrariesAndSDKs/AMF.git
    sudo mkdir -p /usr/local/include/AMF
    sudo mv AMF/amf/public/include/core /usr/local/include/AMF/
    sudo mv AMF/amf/public/include/components /usr/local/include/AMF/
  2. Убедитесь, что вы установили все зависимости для сборки FFMPEG, включая необходимые библиотеки и инструменты.

Шаг 4. Компиляция FFMPEG с поддержкой AMF

При компиляции убедитесь, что флаги конфигурации включают --enable-amf. Следующий процесс будет включать в себя:

  1. Перейдите в папку с исходным кодом FFMPEG и выполните конфигурацию:

    cd ~/ffmpeg_sources/ffmpeg-7.1
    PATH="$HOME/bin:$PATH" PKG_CONFIG_PATH="$HOME/ffmpeg_build/lib/pkgconfig" ./configure \
    --prefix="$HOME/ffmpeg_build" \
    --enable-gpl \
    --enable-amf \
    ...

    Обратите внимание, что ... замените на другие необходимые вам флаги.

  2. Скомпилируйте и установите FFMPEG:

    make -j$(nproc) && make install

Шаг 5. Проверка доступных аппаратных ускорений

После успешной установки и компиляции запустите команду:

ffmpeg -hwaccels

Если AMF было установлено правильно, оно должно отобразиться в списке доступных аппаратных ускорений.

Шаг 6. Проверка установки

Для проверки успешности установки вы можете выполнить тестовую команду с входным видеофайлом:

ffmpeg -i input.mp4 -c:v h264_amf output.mp4

Заключение

Надеюсь, эти шаги помогут вам успешно настроить аппаратное ускорение AMF для FFMPEG на вашем сервере с AMD Ryzen™ 7 7700 в Ubuntu 22.04. Если после всех выполненных процедур AMF все равно не отображается, возможно, стоит проверить совместимость вашей видеокарты с AMF и подтвердить, что все зависимости и драйверы установлены корректно. Удачи в вашей работе!

Оцените материал
Добавить комментарий

Капча загружается...