{"id":3903,"date":"2019-12-22T19:54:08","date_gmt":"2019-12-22T18:54:08","guid":{"rendered":"https:\/\/olivier.hoarau.org\/?p=3903"},"modified":"2019-12-24T09:13:43","modified_gmt":"2019-12-24T08:13:43","slug":"kdenlive-19-12-0-et-acceleration-materielle","status":"publish","type":"post","link":"https:\/\/olivier.hoarau.org\/?p=3903","title":{"rendered":"kdenlive 19.12.0 et acc\u00e9l\u00e9ration mat\u00e9rielle"},"content":{"rendered":"\n<p>Depuis quelque temps <strong><a href=\"https:\/\/www.funix.org\/fr\/linux\/index.php?ref=kdenlive2\">kdenlive<\/a><\/strong> me d\u00e9\u00e7oit de plus en plus, je le trouve de plus en plus lent et j&rsquo;ai perdu les 3\/4 des effets qui pouvaient exister par le pass\u00e9 (dont ceux apport\u00e9s par <a href=\"https:\/\/www.funix.org\/fr\/linux\/index.php?ref=base-video#Installation_de_frei0r\">frei0r<\/a>). Il devient impossible de monter sans activer les clips interm\u00e9diaires, fonction qui permet de d\u00e9grader la vid\u00e9o lors du montage, mais qui pr\u00e9serve la qualit\u00e9 au rendu de la vid\u00e9o finale. Et encore \u00e7a reste tr\u00e8s lent et laborieux d\u00e8s qu&rsquo;on rajoute des effets et transitions un tant soit peu compliqu\u00e9s. Et dire qu&rsquo;avec les versions 0.9.X c&rsquo;\u00e9tait parfaitement fluide de monter en HD et on disposait d&rsquo;un stock consid\u00e9rable d&rsquo;effets (m\u00eame si dans la pratique j&rsquo;en utilisais \u00e0 peine 10%). Il semblerait que mes probl\u00e8mes avec <strong>kdenlive<\/strong> remontent au passage du moniteur <strong>SDL<\/strong> \u00e0 <strong>OpenGL<\/strong> et \u00e0 la migration de <strong>Qt4<\/strong> (<strong>kdenlive<\/strong> &lt;=0.9x) vers Qt5 (<strong>kdenlive<\/strong> &gt;=15.x). J&rsquo;ai constat\u00e9 un ralentissement g\u00e9n\u00e9ral,  voire des r\u00e9gressions fonctionnelles et la r\u00e9apparition de plantage qui avait totalement disparu avec les derni\u00e8res versions sous <strong>Qt4<\/strong>. Il se trouve qu&rsquo;il existe l&rsquo;extension <strong><a href=\"https:\/\/www.funix.org\/fr\/linux\/index.php?ref=base-video#Installation_de_movit\">movit<\/a><\/strong> qui permet de faire bosser un peu plus la GPU et quand je l&rsquo;activais tout revenait dans l&rsquo;ordre, je retrouvais la fluidit\u00e9 perdue, sauf que \u00e7a plantait toutes les 5min \ud83d\ude41 .<\/p>\n\n\n\n<p> Il faut croire que tout le monde ne souffre pas du m\u00eame probl\u00e8me, j&rsquo;ai pens\u00e9 \u00e0 un probl\u00e8me de compatibilit\u00e9 mat\u00e9rielle mais j&rsquo;ai quand m\u00eame un i7 avec 16Go de RAM, j&rsquo;ai \u00e9galement soup\u00e7onn\u00e9 ma carte NVIDIA GTX 760 d&rsquo;\u00eatre la source de mes ennuis. J&rsquo;ai m\u00eame song\u00e9 \u00e0 changer de carte. Finalement j&rsquo;ai explor\u00e9 la voie de l&rsquo;acc\u00e9l\u00e9ration mat\u00e9rielle, \u00e7a permet de d\u00e9charger le CPU et la m\u00e9moire et de solliciter davantage le GPU et la m\u00e9moire de la carte graphique, notamment pour tous les calculs d&rsquo;encodage et de d\u00e9codage vid\u00e9o. Concr\u00e8tement, comme \u00e0 mon habitude en vieux dinosaure que je suis, j&rsquo;ai r\u00e9cup\u00e9r\u00e9 les sources et tout recompil\u00e9. J&rsquo;ai donc activ\u00e9 toutes les fonctions d&rsquo;acc\u00e9l\u00e9rations mat\u00e9rielles des diff\u00e9rentes biblioth\u00e8ques sur lesquelles se repose <strong>kdenlive<\/strong>. Pour une GPU NVIDIA il s&rsquo;agit d&rsquo;activer les biblioth\u00e8ques et API suivantes :<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>VDPAU<\/strong> (Video Decode and Presentation API for Unix) biblioth\u00e8que d\u00e9velopp\u00e9e par NVIDIA,<\/li><li><strong>NVENC<\/strong> et <strong>NVDEC<\/strong> pour l&rsquo;encodage et le d\u00e9codage vid\u00e9o notamment des codecs H264 et HEVC, ils sont compris dans le package <a href=\"https:\/\/developer.nvidia.com\/nvidia-video-codec-sdk\">NVIDIA VIDEO CODEC SDK<\/a> (ex <strong>CUVID<\/strong>) et utilisent <strong><a href=\"https:\/\/developer.nvidia.com\/cuda-toolkit\">CUDA<\/a><\/strong> (Compute Unified Device Architecture) qui pour simplifier est une bo\u00eete \u00e0 outil de d\u00e9veloppement pour les GPU \u00e9galement d\u00e9velopp\u00e9e par NVIDIA.<\/li><li><strong><a href=\"https:\/\/www.khronos.org\/opencl\/\">OpenCL<\/a><\/strong> (OpenComputing Language) qui permet de faire des programmes qui vont utiliser \u00e0 la fois des CPU multi c\u0153urs et la GPU.<\/li><li><strong><a href=\"https:\/\/www.funix.org\/fr\/linux\/index.php?ref=base-video#Installation_dOpenCV\">OpenCV<\/a><\/strong> qui sert pour le traitement d&rsquo;images en temps r\u00e9el notamment pour faire du tracking d&rsquo;\u00e9l\u00e9ments dans une vid\u00e9o.<\/li><\/ul>\n\n\n\n<!--more-->\n\n\n\n<p>Ensuite on compilera des outils comme <strong><a href=\"https:\/\/www.funix.org\/fr\/linux\/index.php?ref=base-video#Installation_de_ffmpeg\">ffmpeg<\/a><\/strong>, qui comme chacun le sait une bo\u00eete \u00e0 outils de traitement de flux audio ou vid\u00e9o, avec les options d&rsquo;acc\u00e9l\u00e9ration mat\u00e9rielle qui vont bien. Quand on tape <strong>ffmpeg -encoders<\/strong> on doit pouvoir retrouver cela :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code> V..... libx264              libx264 H.264 \/ AVC \/ MPEG-4 AVC \/ MPEG-4 part 10 (codec h264)\n V..... libx264rgb           libx264 H.264 \/ AVC \/ MPEG-4 AVC \/ MPEG-4 part 10 RGB (codec h264)\n V..... h264_nvenc           NVIDIA NVENC H.264 encoder (codec h264)\n V..... h264_v4l2m2m         V4L2 mem2mem H.264 encoder wrapper (codec h264)\n V..... h264_vaapi           H.264\/AVC (VAAPI) (codec h264)\n V..... nvenc                NVIDIA NVENC H.264 encoder (codec h264)\n V..... nvenc_h264           NVIDIA NVENC H.264 encoder (codec h264)\n V..... libx265              libx265 H.265 \/ HEVC (codec hevc)\n V..... nvenc_hevc           NVIDIA NVENC hevc encoder (codec hevc)\n V..... hevc_nvenc           NVIDIA NVENC hevc encoder (codec hevc)\n V..... hevc_v4l2m2m         V4L2 mem2mem HEVC encoder wrapper (codec hevc)\n V..... hevc_vaapi           H.265\/HEVC (VAAPI) (codec hevc)<\/code><\/pre>\n\n\n\n<p>Certes je me focalise sur une GPU NVIDIA, mais j&rsquo;imagine qu&rsquo;il existe des biblioth\u00e8ques et outils \u00e9quivalents pour les GPU Intel ou AMD.<\/p>\n\n\n\n<p>Revenons \u00e0 <strong>kdenlive<\/strong>, je m&rsquo;\u00e9tais pris la t\u00eate avec un projet sur lequel je me cassais les dents avec des lenteurs, des plantages continuels. Mes probl\u00e8mes ne se sont pas am\u00e9lior\u00e9s en tentant de changer de version ou en partant d&rsquo;une configuration vierge (c&rsquo;est \u00e0 dire en supprimant le fichier <strong>kdenliverc<\/strong>). Finalement je suis parti d&rsquo;un tout nouveau projet avec la derni\u00e8re version 19.12.0 qui vient de sortir. Et l\u00e0 magique, j&rsquo;ai retrouv\u00e9 la fluidit\u00e9 de montage,  m\u00eame plus besoin d&rsquo;activer les clips interm\u00e9diaires ! Je ne saurais dire si \u00e7a vient des \u00e9volutions de performances emmen\u00e9es par cette nouvelle version ou la prise en compte de l&rsquo;acc\u00e9l\u00e9ration mat\u00e9rielle, je pense quand m\u00eame plut\u00f4t pour cette derni\u00e8re option.<\/p>\n\n\n\n<p>Tant qu&rsquo;\u00e0 faire un petit mot sur cette version 19.12.0 qui apporte son lot de nouvelles fonctionnalit\u00e9s qui sont d\u00e9taill\u00e9es <a href=\"https:\/\/kdenlive.org\/en\/2019\/12\/kdenlive-19-12-0-is-out\/\">l\u00e0<\/a>.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"474\" height=\"255\" src=\"https:\/\/i0.wp.com\/olivier.hoarau.org\/wp-content\/uploads\/20191222-kdenlive-19-12-0.jpg?resize=474%2C255&#038;ssl=1\" alt=\"\" class=\"wp-image-3905\" srcset=\"https:\/\/i0.wp.com\/olivier.hoarau.org\/wp-content\/uploads\/20191222-kdenlive-19-12-0.jpg?resize=1024%2C550&amp;ssl=1 1024w, https:\/\/i0.wp.com\/olivier.hoarau.org\/wp-content\/uploads\/20191222-kdenlive-19-12-0.jpg?resize=300%2C161&amp;ssl=1 300w, https:\/\/i0.wp.com\/olivier.hoarau.org\/wp-content\/uploads\/20191222-kdenlive-19-12-0.jpg?resize=768%2C413&amp;ssl=1 768w, https:\/\/i0.wp.com\/olivier.hoarau.org\/wp-content\/uploads\/20191222-kdenlive-19-12-0.jpg?resize=1536%2C825&amp;ssl=1 1536w, https:\/\/i0.wp.com\/olivier.hoarau.org\/wp-content\/uploads\/20191222-kdenlive-19-12-0.jpg?w=1835&amp;ssl=1 1835w, https:\/\/i0.wp.com\/olivier.hoarau.org\/wp-content\/uploads\/20191222-kdenlive-19-12-0.jpg?w=948&amp;ssl=1 948w, https:\/\/i0.wp.com\/olivier.hoarau.org\/wp-content\/uploads\/20191222-kdenlive-19-12-0.jpg?w=1422&amp;ssl=1 1422w\" sizes=\"auto, (max-width: 474px) 100vw, 474px\" \/><\/figure>\n\n\n\n<p>Tout d&rsquo;abord on va retrouver  un mixer audio (en haut \u00e0 droite de l&rsquo;image) avec des possibilit\u00e9s de r\u00e9glage et d&rsquo;enregistrement des voies audio. Il est \u00e9galement possible d&rsquo;appliquer un effet \u00e0 l&rsquo;ensemble des pistes, il faut cliquer sur bouton <strong>Master<\/strong>, et glisser un effet dans la zone<strong> Master effects<\/strong> (ici effet <strong>Contraste<\/strong>), en se d\u00e9pla\u00e7ant sur la timeline on voit que l&rsquo;effet est appliqu\u00e9 partout. On peut \u00e9galement comparer une s\u00e9quence avec ou sans effet, dans l&rsquo;effet <strong>Saturation<\/strong> ci-dessous j&rsquo;ai cliqu\u00e9 sur la premi\u00e8re ic\u00f4ne \u00e0 droite de <strong>GOPRO124.MP4 effets<\/strong>. On voit bien la diff\u00e9rence sur la vid\u00e9o.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"474\" height=\"184\" src=\"https:\/\/i0.wp.com\/olivier.hoarau.org\/wp-content\/uploads\/20191222-kdenlive-19-12-0b.jpg?resize=474%2C184&#038;ssl=1\" alt=\"\" class=\"wp-image-3906\" srcset=\"https:\/\/i0.wp.com\/olivier.hoarau.org\/wp-content\/uploads\/20191222-kdenlive-19-12-0b.jpg?resize=1024%2C398&amp;ssl=1 1024w, https:\/\/i0.wp.com\/olivier.hoarau.org\/wp-content\/uploads\/20191222-kdenlive-19-12-0b.jpg?resize=300%2C117&amp;ssl=1 300w, https:\/\/i0.wp.com\/olivier.hoarau.org\/wp-content\/uploads\/20191222-kdenlive-19-12-0b.jpg?resize=768%2C299&amp;ssl=1 768w, https:\/\/i0.wp.com\/olivier.hoarau.org\/wp-content\/uploads\/20191222-kdenlive-19-12-0b.jpg?w=1265&amp;ssl=1 1265w, https:\/\/i0.wp.com\/olivier.hoarau.org\/wp-content\/uploads\/20191222-kdenlive-19-12-0b.jpg?w=948&amp;ssl=1 948w\" sizes=\"auto, (max-width: 474px) 100vw, 474px\" \/><\/figure>\n\n\n\n<p>Alors certes il manque encore un paquet d&rsquo;effets mais j&rsquo;ose esp\u00e9rer qu&rsquo;avec le temps, \u00e7a va s&rsquo;enrichir de ce c\u00f4t\u00e9. Bref, j&rsquo;ai mis \u00e0 jour mon site <a href=\"https:\/\/www.funix.org\">FUNIX<\/a> pour prendre en compte toutes ces modifications, voir en particulier la <a href=\"https:\/\/www.funix.org\/fr\/linux\/index.php?ref=base-video\">page sur l&rsquo;installation des biblioth\u00e8ques<\/a> et celle sur <a href=\"https:\/\/www.funix.org\/fr\/linux\/index.php?ref=montage\">les outils de montage vid\u00e9o<\/a>, c\u00f4t\u00e9 utilisation mis \u00e0 part les nouveaut\u00e9s ci-dessus le <a href=\"https:\/\/www.funix.org\/fr\/linux\/index.php?ref=kdenlive2\">tutorial<\/a> est encore bien \u00e0 jour.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Depuis quelque temps kdenlive me d\u00e9\u00e7oit de plus en plus, je le trouve de plus en plus lent et j&rsquo;ai perdu les 3\/4 des effets qui pouvaient exister par le pass\u00e9 (dont ceux apport\u00e9s par frei0r). Il devient impossible de monter sans activer les clips interm\u00e9diaires, fonction qui permet de d\u00e9grader la vid\u00e9o lors du &hellip; <a href=\"https:\/\/olivier.hoarau.org\/?p=3903\" class=\"more-link\">Continuer la lecture de <span class=\"screen-reader-text\">kdenlive 19.12.0 et acc\u00e9l\u00e9ration mat\u00e9rielle<\/span>  <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":4,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"ngg_post_thumbnail":0,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_post_was_ever_published":false,"_share_on_mastodon":"0"},"categories":[5,12,10],"tags":[26,27,28,29],"class_list":["post-3903","post","type-post","status-publish","format-standard","hentry","category-logiciels-libres","category-vie-de-funix","category-vie-de-mes-sites","tag-kdenlive","tag-linux","tag-montage-video","tag-nvidia"],"share_on_mastodon":{"url":"","error":""},"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/peOjJ-10X","jetpack_likes_enabled":true,"_links":{"self":[{"href":"https:\/\/olivier.hoarau.org\/index.php?rest_route=\/wp\/v2\/posts\/3903","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/olivier.hoarau.org\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/olivier.hoarau.org\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/olivier.hoarau.org\/index.php?rest_route=\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/olivier.hoarau.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=3903"}],"version-history":[{"count":4,"href":"https:\/\/olivier.hoarau.org\/index.php?rest_route=\/wp\/v2\/posts\/3903\/revisions"}],"predecessor-version":[{"id":3913,"href":"https:\/\/olivier.hoarau.org\/index.php?rest_route=\/wp\/v2\/posts\/3903\/revisions\/3913"}],"wp:attachment":[{"href":"https:\/\/olivier.hoarau.org\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=3903"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/olivier.hoarau.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=3903"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/olivier.hoarau.org\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=3903"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}