Как использовать ускорение GPU в FFmpeg с AMD Radeon?

У меня Radeon Vega 64, и установлен AMDGPU с официального сайта, но я понятия не имею, куда идти отсюда.

Я хочу использовать аппаратное ускорение для преобразования видео с FFmpeg, Что соответствует FFmpeg команда и как мне нравится устройство / драйвер для FFmpeg?

1 ответ

Я предоставлю инструкции для Windows и Linux, так как вы не указали, на какой платформе вы находитесь. Используйте эти инструкции, которые применимы к вашему делу.

Если вы работаете в Windows, вы можете получить доступ к соответствующим кодировщикам через AMF с метким именем h264_amf а также hevc_amf, чье использование можно посмотреть через:

ffmpeg -h encoder=h264_amf

ffmpeg -h encoder=hevc_amf

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

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

./cross_compile_ffmpeg.sh --gcc-cpu-count=12  --build-libmxf=n --disable-nonfree=n --prefer-stable=y --compiler-flavors=multi

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

В Linux, используя драйвер mesa amdgpu с открытым исходным кодом (не проприетарный пакет, установленный от AMD), вы можете получить доступ к кодировщикам на основе VAAPI с меткими именами h264_vaapi и hevc_vaapi, использование которых можно просмотреть с помощью:

ffmpeg -h encoder=h264_vaapi

ffmpeg -h encoder=hevc_vaapi

Насколько мне известно (поправьте меня, если я ошибаюсь), кодирование VP8 и VP9 не раскрывается на стороне AMD через VAAPI. Вы можете подтвердить это, запустив:

vainfo | grep Slice

В вашей системе и подтверждение того, какие кодировщики поддерживаются. Скорее всего, FFmpeg с включенным VAAPI по умолчанию используется в Ubuntu. Тем не менее, вы также можете создать копию из источника, если это необходимо. См. Руководство по компиляции в FFmpeg Wiki и адаптируйте его по мере необходимости. Вы также можете найти полезных помощников, таких как этот.

Существует вероятность того, что кодеры на базе AMD AMF в конечном итоге окажутся в Linux с использованием взаимодействия на основе Vulkan. Примите это как работу в процессе.

На MacOS Catalina через внешний графический процессор через Thunderbolt 3 я успешно использовал флаг

-hwaccel videotoolbox

через установленную копию brew по умолчанию. Тогда я мог бы использовать по умолчанию libx265 кодировщик, примерно в 20 раз превышающий скорость кодировщика через ЦП.

полный:

ffmpeg 
  -hwaccel videotoolbox -i 'Forget to fly.mkv' \
  -c:v libx265 -preset medium -crf 28 \
  -c:a copy \
  'Forget to fly.x265.mkv'
Другие вопросы по тегам