Un GPU peut-il être utilisé pour coder h264?

Je me demande si j'ai une meilleure carte graphique pourrait-elle accélérer l'encodage h264 sur ma machine en utilisant le frein à main?

Si oui, comment puis-je savoir quelle carte graphique prendra en charge cela?

Je suis conscient que le GPU peut faire un décodage matériel de h264, mais je ne suis pas certain de l'encodage.

En utilisant le frein à main, la réponse serait non. Handbrake est un codeur h.264 uniquement CPU, bien qu'il soit maintenant capable d'utiliser OpenCL pour la mise à l'échelle de la vidéo et possède un support pour DXVA pour le décodage vidéo.

La question liée par slhck mentionne MediaCoder , mais elle nécessite soit une carte graphique Nvidia, soit une CPU Intel avec un noyau graphique de 2ème génération.

Certains produits anciens ont été obsolètes, en particulier Badaboom et le logiciel ATi Avivo.

Badaboom qui pourrait utiliser les processeurs graphiques Nvidia et Intel pour accélérer le processus de codage, mais il est maintenant en fin de vie et ne prend pas en charge les nouvelles cartes graphiques.

ATi avait son propre codeur vidéo qui s'appelait «Avivo» avant d'être fusionné dans le package AMD Codec qui comprenait le convertisseur vidéo AMD, mais il n'est plus disponible.

X264 prend désormais en charge l'accélération de codage OpenCL. La quantité d'accélération que vous obtenez dépendra de la performance de votre carte graphique, sur mon GTS 450, je n'en ai aucun et avec des cartes plus lentes, cela ralentit le codage. De meilleures cartes peuvent vous aider. Tout ce que vous devez faire est d'ajouter –opencl à la ligne de commande x264. Je crois que handbrake utilise les mêmes bibliothèques x264 et offre la même accélération OpenCL dans les versions plus récentes.

https://trac.ffmpeg.org/wiki/HWAccelIntro

FFmpeg fournit un sous-système pour l'accélération matérielle.

L'accélération matérielle permet d'utiliser des périphériques spécifiques (généralement une carte graphique> ou d'autres périphériques spécifiques) pour effectuer un traitement multimédia. Cela permet d'utiliser du matériel dédié pour effectuer un calcul exigeant tout en libérant la CPU de ces calculs. En général, l'accélération matérielle permet aux périphériques matériels spécifiques (habituellement le GPU) d'effectuer des opérations liées au décodage et au codage des flux vidéo, ou au filtrage de la vidéo.

Lorsque vous utilisez FFmpeg l'outil, le décodage assisté par HW est activé à l'aide de l'option -hwaccel , qui permet un décodeur spécifique. Chaque décodeur peut avoir des limitations spécifiques (par exemple, un décodeur H.264 ne peut prendre en charge que le profil de base). Le codage assisté par HW est activé grâce à l'utilisation d'un codeur spécifique (par exemple nvenc_h264). Le filtrage du traitement assisté par HW n'est pris en charge que dans quelques filtres et, dans ce cas, vous activez le code OpenCL via une option de filtrage.

Il existe plusieurs API de normes d'accélération matérielle, dont certains sont pris en charge dans une certaine mesure par FFmpeg.

L'option "-hwaccel auto" vous permet de sélectionner le décodage accéléré basé sur le matériel à utiliser pour la session de codage. Vous pouvez ajouter ce paramètre avec "auto" avant l'entrée (si votre x264 est compilé avec le support OpenCL, vous pouvez essayer d'ajouter -x264opts param), par exemple:

 ffmpeg -hwaccel auto -i input -vcodec libx264 -x264opts opencl output 

Désolé, mais je ne me souviens pas de la liste de toutes les options disponibles pour "-hwaccel".

Vous pouvez également essayer ceci: https://wiki.archlinux.org/index.php/Hardware_video_acceleration