{"id":6080,"date":"2022-03-27T10:43:01","date_gmt":"2022-03-27T09:43:01","guid":{"rendered":"https:\/\/olivier.hoarau.org\/?p=6080"},"modified":"2022-03-27T10:43:01","modified_gmt":"2022-03-27T09:43:01","slug":"creer-un-gif-anime-avec-ffmpeg","status":"publish","type":"post","link":"https:\/\/olivier.hoarau.org\/?p=6080","title":{"rendered":"Cr\u00e9er un gif anim\u00e9 avec ffmpeg"},"content":{"rendered":"\n<p>Il y a quelques temps j&rsquo;avais fait <a href=\"https:\/\/olivier.hoarau.org\/?p=1917\">un pos<\/a>t pour expliquer comment cr\u00e9er un gif anim\u00e9 avec <strong>GIMP<\/strong>, c&rsquo;\u00e9tait un peu lourdingue et voil\u00e0 une mani\u00e8re plus simple de le faire avec <strong>ffmpeg<\/strong>.<\/p>\n\n\n\n<p>Je pars d&rsquo;une vid\u00e9o r\u00e9alis\u00e9e avec <strong>kdenlive<\/strong> au format HD 1920&#215;1080 de 7s au total qui fait 26,5Mo avec un framerate de 60 images par seconde. A cette occasion j&rsquo;ai utilis\u00e9 la fonction <strong>time remap<\/strong> pour jouer sur le ralenti et\/ou acc\u00e9l\u00e9ration d&rsquo;une vid\u00e9o. A vrai dire j&rsquo;ai eu beaucoup de mal \u00e0 m&rsquo;en servir il  n&rsquo;est pas impossible qu&rsquo;il y avait quelques bogues quand la fonction a \u00e9t\u00e9 implant\u00e9e sur <strong>kdenlive<\/strong>. Avec la derni\u00e8re version 21.12.3 qui vient de sortir, \u00e7a a l&rsquo;air de plut\u00f4t bien fonctionner. Sur<a href=\"https:\/\/www.funix.org\/fr\/linux\/index.php?ref=kdenlive2#image-cle\"> mon tutoriel kdenlive<\/a>, je donne les rudiments de l&rsquo;utilisation de cette nouvelle fonctionnalit\u00e9. Grosso modo, on place les images cl\u00e9s aux endroits qui vont bien sur la vid\u00e9o et on d\u00e9finit la vitesse avant et apr\u00e8s chaque image cl\u00e9, il faut \u00eatre rigoureux pour ne pas s&#8217;embrouiller. On commence par l&rsquo;image cl\u00e9 la plus \u00e0 gauche et on est d\u00e9fini la vitesse apr\u00e8s seulement.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/i0.wp.com\/olivier.hoarau.org\/wp-content\/uploads\/kdenlive-timeremap.jpg?ssl=1\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"474\" height=\"318\" src=\"https:\/\/i0.wp.com\/olivier.hoarau.org\/wp-content\/uploads\/kdenlive-timeremap.jpg?resize=474%2C318&#038;ssl=1\" alt=\"\" class=\"wp-image-6081\" srcset=\"https:\/\/i0.wp.com\/olivier.hoarau.org\/wp-content\/uploads\/kdenlive-timeremap.jpg?w=927&amp;ssl=1 927w, https:\/\/i0.wp.com\/olivier.hoarau.org\/wp-content\/uploads\/kdenlive-timeremap.jpg?resize=300%2C201&amp;ssl=1 300w, https:\/\/i0.wp.com\/olivier.hoarau.org\/wp-content\/uploads\/kdenlive-timeremap.jpg?resize=768%2C514&amp;ssl=1 768w\" sizes=\"auto, (max-width: 474px) 100vw, 474px\" \/><\/a><figcaption>La fonction time remap sous kdenlive<\/figcaption><\/figure>\n\n\n\n<p>Revenons \u00e0 notre gif, une fois qu&rsquo;on a rendu la vid\u00e9o avec <strong>kdenlive<\/strong>, on tapera la commande suivante :<\/p>\n\n\n\n<div style=\"height: 250px; position:relative; margin-bottom: 50px;\" class=\"wp-block-simple-code-block-ace\"><pre class=\"wp-block-simple-code-block-ace\" style=\"position:absolute;top:0;right:0;bottom:0;left:0\" data-mode=\"php\" data-theme=\"monokai\" data-fontsize=\"14\" data-lines=\"Infinity\" data-showlines=\"true\" data-copy=\"false\">ffmpeg -y -i video.mp4 -filter_complex \"fps=5,scale=480:-1:flags=lanczos\" image.gif<\/pre><\/div>\n\n\n\n<p>Quelques explications sur la commande: <\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><strong>fps=5 <\/strong>permet de changer le framerate, c&rsquo;est \u00e0 dire qu&rsquo;on va passer \u00e0 5 images par seconde, au  pour r\u00e9duire la taille du gif.<\/li><li><strong>scale =480:-1<\/strong> permet de passer d&rsquo;un c\u00f4t\u00e9 de 1920 \u00e0 480 et de conserver le ratio, la proportionnalit\u00e9 entre la largueur et la hauteur de l&rsquo;image<\/li><li><strong>flags=lanczos<\/strong> est l&rsquo;algorithme choisi pour retailler la vid\u00e9o<\/li><\/ul>\n\n\n\n<p>Et voil\u00e0 le r\u00e9sultat, avec un gif qui fait un peu moins de 2Mo.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/i0.wp.com\/olivier.hoarau.org\/wp-content\/uploads\/2022-essai-timeremap.gif?ssl=1\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"474\" height=\"267\" src=\"https:\/\/i0.wp.com\/olivier.hoarau.org\/wp-content\/uploads\/2022-essai-timeremap.gif?resize=474%2C267&#038;ssl=1\" alt=\"\" class=\"wp-image-6082\"\/><\/a><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>Il y a quelques temps j&rsquo;avais fait un post pour expliquer comment cr\u00e9er un gif anim\u00e9 avec GIMP, c&rsquo;\u00e9tait un peu lourdingue et voil\u00e0 une mani\u00e8re plus simple de le faire avec ffmpeg. Je pars d&rsquo;une vid\u00e9o r\u00e9alis\u00e9e avec kdenlive au format HD 1920&#215;1080 de 7s au total qui fait 26,5Mo avec un framerate de &hellip; <a href=\"https:\/\/olivier.hoarau.org\/?p=6080\" class=\"more-link\">Continuer la lecture de <span class=\"screen-reader-text\">Cr\u00e9er un gif anim\u00e9 avec ffmpeg<\/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],"tags":[102,27],"class_list":["post-6080","post","type-post","status-publish","format-standard","hentry","category-logiciels-libres","tag-astuce","tag-linux"],"share_on_mastodon":{"url":"","error":""},"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/peOjJ-1A4","jetpack_likes_enabled":true,"_links":{"self":[{"href":"https:\/\/olivier.hoarau.org\/index.php?rest_route=\/wp\/v2\/posts\/6080","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=6080"}],"version-history":[{"count":1,"href":"https:\/\/olivier.hoarau.org\/index.php?rest_route=\/wp\/v2\/posts\/6080\/revisions"}],"predecessor-version":[{"id":6083,"href":"https:\/\/olivier.hoarau.org\/index.php?rest_route=\/wp\/v2\/posts\/6080\/revisions\/6083"}],"wp:attachment":[{"href":"https:\/\/olivier.hoarau.org\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=6080"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/olivier.hoarau.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=6080"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/olivier.hoarau.org\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=6080"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}