15 votes

Comment utiliser l'accélération GPU dans FFmpeg avec AMD Radeon ?

J'ai une Radeon Vega 64, et j'ai installé AMDGPU sur le site officiel, mais je ne sais pas du tout où aller.

Je souhaite utiliser l'accélération matérielle pour convertir des vidéos avec FFmpeg . Quelle est la valeur correspondante FFmpeg et comment dois-je m'y prendre pour que l'appareil/le pilote FFmpeg ?

15voto

Dennis Mungai Points 470

Je fournirai des instructions pour Windows et Linux, puisque vous n'avez pas indiqué sur quelle plate-forme vous travaillez. Utilisez les instructions qui s'appliquent à votre cas.

Si vous êtes sous Windows, vous pouvez accéder aux encodeurs correspondants via l'AMF, judicieusement nommée h264_amf y hevc_amf dont l'utilisation peut être consultée via :

ffmpeg -h encoder=h264_amf

ffmpeg -h encoder=hevc_amf

Vous devrez construire un binaire FFmpeg pour Windows, soit en mode natif, soit, comme recommandé, par compilation croisée. Le présent est un excellent point de départ sur ce sujet.

Si vous utilisez l'option de compilation croisée, passez les arguments ci-dessous pour obtenir une compilation avec les fonctionnalités dont vous aurez besoin :

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

Notez que le résultat de la construction ci-dessus est non redistribuable et n'est destiné qu'à un usage personnel.

Sous Linux, en utilisant le pilote opensource tabla amdgpu (et non le paquet propriétaire installé par AMD), vous pouvez accéder à des encodeurs basés sur VAAPI, judicieusement nommés h264_vaapi et hevc_vaapi, dont l'utilisation peut être visualisée via :

ffmpeg -h encoder=h264_vaapi

ffmpeg -h encoder=hevc_vaapi

À ma connaissance (corrigez-moi si je me trompe), l'encodage VP8 et VP9 n'est pas exposé du côté d'AMD via VAAPI. Vous pouvez le confirmer en lançant :

vainfo | grep Slice

sur votre système et de confirmer quels encodeurs sont pris en charge. Il est très probable que FFmpeg avec VAAPI activé soit le système par défaut sur des systèmes comme Ubuntu. Cependant, vous pouvez aussi construire une copie à partir des sources, si nécessaire. Voir le guide de compilation sur le Wiki FFmpeg et s'adapter si nécessaire. Vous pouvez également trouver des aides, telles que este utile.

Il est possible que les encodeurs AMD basés sur l'AMF atterrissent un jour sur Linux, en utilisant un interopérable basé sur Vulkan. Prenons cela comme une travaux en cours .

1voto

ThomasMH Points 111

Sur MacOS Catalina via un GPU externe via Thunderbolt 3, j'ai réussi à utiliser le drapeau

-hwaccel videotoolbox

via la copie installée par défaut. Je pourrais alors utiliser default libx265 à une vitesse d'environ 20 fois supérieure à celle du codeur via l'unité centrale.

complète :

ffmpeg 
  -hwaccel videotoolbox -i 'Forget to fly.mkv' \
  -c:v libx265 -preset medium -crf 28 \
  -c:a copy \
  'Forget to fly.x265.mkv'

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X