News - Logiciels Libres

Activer l'encodage NVidia avec nvenc sous Calculate Linux

Activer l'encodage NVidia avec nvenc sous Calculate Linux
Bonjour à tous,

voici une astuce, pour répondre à un courriel qui m'a été adressé. Le but est d'activer, via nvenc, l'encodage vidéo avec la carte NVidia, plut que d'encoder avec le CPU.

Pour cela, il faut une carte NVidia compatible nvenc, c'est à dire un modèle supérieur à GeForce 600. Cela est mon cas, avec une 650M. Ça fonctionne avec des cartes NVidia Optimus, il y a juste une option à effectuer en plus.

D'abord, nvenc s'active via ffmpeg, grâce au USE nvenc.

Modifier le fichier /etc/portage/package.use/custom et ajouter le support de nvenc dans ffmpeg :

Code BASH :
media-video/ffmpeg nvenc


Ensuite, mettez à jour ffmpeg, en prenant en compte les nouveaux USE :

Code BASH :
emerge -uN media-video/ffmpeg


Ça va installer en plus en dépendance le paquet media-video/nvidia_video_sdk.

Grâce à equery on constate bien que le USE nvenc permet d'activer la fonctionnalité demandée :
Code BASH :
 + + nvenc                  : Adds support for NVIDIA Encoder (NVENC) API for hardware accelerated
                              encoding on NVIDIA cards


Une fois fait on peut paramétrer simplescreenrecorder par exemple pour utiliser le driver nvenc :

nvenc-ssr



Pour les utilisateurs de NVidia Optimus comme moi, si on lance l'enregistrement, on a une erreur car il n'arrive pas à ouvrir la carte NVidia.
Il faut bien entendu éditer le lanceur de l'application (ou lancer en console celle-ci) en préfixant la commande de optirun.


Si je lance les 2 simplescreenrecorder, avec htop on voit bien la différence, 25% utilisés pour le simplescreenrecorder avec nvenc, et 125% pour celui avec l'encodage traditionnel. On voit donc qu'un CPU complet s'occupe de l'encodage sans nvenc :

nvenc-htop



En revanche, des applications comme kdenlive ne voient pas ce codec dans la liste par défaut, mais celui-ci est bien chargé par le logiciel.
Il faut donc se créer un profil et éditer la ligne de commande pour utiliser le driver nvenc (je suppose, pas testé) et si Optimus, lancer kdenlive avec optirun !

J'ai donc dupliqué le profil MP4 que j'utilise, et changé le nom du codec en mettant celui associé à nvenc :
Code TEXT :
properties=x264-medium f=mp4 vcodec=h264_nvenc acodec=aac g=120 crf=%quality ab=%audiobitrate+'k'


Une traditionnelle vidéo qui montre le tout en action :

N'hésitez pas à sélectionner la qualité HD en 720p ou 1080p !



Et la vidéo de paramétrage et tests de kdenlive :

N'hésitez pas à sélectionner la qualité HD en 720p ou 1080p !