kdenlive 19.12.0 et accélération matérielle

Depuis quelque temps kdenlive me déçoit de plus en plus, je le trouve de plus en plus lent et j’ai perdu les 3/4 des effets qui pouvaient exister par le passé (dont ceux apportés par frei0r). Il devient impossible de monter sans activer les clips intermédiaires, fonction qui permet de dégrader la vidéo lors du montage, mais qui préserve la qualité au rendu de la vidéo finale. Et encore ça reste très lent et laborieux dès qu’on rajoute des effets et transitions un tant soit peu compliqués. Et dire qu’avec les versions 0.9.X c’était parfaitement fluide de monter en HD et on disposait d’un stock considérable d’effets (même si dans la pratique j’en utilisais à peine 10%). Il semblerait que mes problèmes avec kdenlive remontent au passage du moniteur SDL à OpenGL et à la migration de Qt4 (kdenlive <=0.9x) vers Qt5 (kdenlive >=15.x). J’ai constaté un ralentissement général, voire des régressions fonctionnelles et la réapparition de plantage qui avait totalement disparu avec les dernières versions sous Qt4. Il se trouve qu’il existe l’extension movit qui permet de faire bosser un peu plus la GPU et quand je l’activais tout revenait dans l’ordre, je retrouvais la fluidité perdue, sauf que ça plantait toutes les 5min 🙁 .

Il faut croire que tout le monde ne souffre pas du même problème, j’ai pensé à un problème de compatibilité matérielle mais j’ai quand même un i7 avec 16Go de RAM, j’ai également soupçonné ma carte NVIDIA GTX 760 d’être la source de mes ennuis. J’ai même songé à changer de carte. Finalement j’ai exploré la voie de l’accélération matérielle, ça permet de décharger le CPU et la mémoire et de solliciter davantage le GPU et la mémoire de la carte graphique, notamment pour tous les calculs d’encodage et de décodage vidéo. Concrètement, comme à mon habitude en vieux dinosaure que je suis, j’ai récupéré les sources et tout recompilé. J’ai donc activé toutes les fonctions d’accélérations matérielles des différentes bibliothèques sur lesquelles se repose kdenlive. Pour une GPU NVIDIA il s’agit d’activer les bibliothèques et API suivantes :

  • VDPAU (Video Decode and Presentation API for Unix) bibliothèque développée par NVIDIA,
  • NVENC et NVDEC pour l’encodage et le décodage vidéo notamment des codecs H264 et HEVC, ils sont compris dans le package NVIDIA VIDEO CODEC SDK (ex CUVID) et utilisent CUDA (Compute Unified Device Architecture) qui pour simplifier est une boîte à outil de développement pour les GPU également développée par NVIDIA.
  • OpenCL (OpenComputing Language) qui permet de faire des programmes qui vont utiliser à la fois des CPU multi cœurs et la GPU.
  • OpenCV qui sert pour le traitement d’images en temps réel notamment pour faire du tracking d’éléments dans une vidéo.

Ensuite on compilera des outils comme ffmpeg, qui comme chacun le sait une boîte à outils de traitement de flux audio ou vidéo, avec les options d’accélération matérielle qui vont bien. Quand on tape ffmpeg -encoders on doit pouvoir retrouver cela :

 V..... libx264              libx264 H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 (codec h264)
 V..... libx264rgb           libx264 H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 RGB (codec h264)
 V..... h264_nvenc           NVIDIA NVENC H.264 encoder (codec h264)
 V..... h264_v4l2m2m         V4L2 mem2mem H.264 encoder wrapper (codec h264)
 V..... h264_vaapi           H.264/AVC (VAAPI) (codec h264)
 V..... nvenc                NVIDIA NVENC H.264 encoder (codec h264)
 V..... nvenc_h264           NVIDIA NVENC H.264 encoder (codec h264)
 V..... libx265              libx265 H.265 / HEVC (codec hevc)
 V..... nvenc_hevc           NVIDIA NVENC hevc encoder (codec hevc)
 V..... hevc_nvenc           NVIDIA NVENC hevc encoder (codec hevc)
 V..... hevc_v4l2m2m         V4L2 mem2mem HEVC encoder wrapper (codec hevc)
 V..... hevc_vaapi           H.265/HEVC (VAAPI) (codec hevc)

Certes je me focalise sur une GPU NVIDIA, mais j’imagine qu’il existe des bibliothèques et outils équivalents pour les GPU Intel ou AMD.

Revenons à kdenlive, je m’étais pris la tête avec un projet sur lequel je me cassais les dents avec des lenteurs, des plantages continuels. Mes problèmes ne se sont pas améliorés en tentant de changer de version ou en partant d’une configuration vierge (c’est à dire en supprimant le fichier kdenliverc). Finalement je suis parti d’un tout nouveau projet avec la dernière version 19.12.0 qui vient de sortir. Et là magique, j’ai retrouvé la fluidité de montage, même plus besoin d’activer les clips intermédiaires ! Je ne saurais dire si ça vient des évolutions de performances emmenées par cette nouvelle version ou la prise en compte de l’accélération matérielle, je pense quand même plutôt pour cette dernière option.

Tant qu’à faire un petit mot sur cette version 19.12.0 qui apporte son lot de nouvelles fonctionnalités qui sont détaillées .

Tout d’abord on va retrouver un mixer audio (en haut à droite de l’image) avec des possibilités de réglage et d’enregistrement des voies audio. Il est également possible d’appliquer un effet à l’ensemble des pistes, il faut cliquer sur bouton Master, et glisser un effet dans la zone Master effects (ici effet Contraste), en se déplaçant sur la timeline on voit que l’effet est appliqué partout. On peut également comparer une séquence avec ou sans effet, dans l’effet Saturation ci-dessous j’ai cliqué sur la première icône à droite de GOPRO124.MP4 effets. On voit bien la différence sur la vidéo.

Alors certes il manque encore un paquet d’effets mais j’ose espérer qu’avec le temps, ça va s’enrichir de ce côté. Bref, j’ai mis à jour mon site FUNIX pour prendre en compte toutes ces modifications, voir en particulier la page sur l’installation des bibliothèques et celle sur les outils de montage vidéo, côté utilisation mis à part les nouveautés ci-dessus le tutorial est encore bien à jour.

Une réflexion sur « kdenlive 19.12.0 et accélération matérielle »

Laisser un commentaire