Как использовать ускорение 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'