« Traitement d'images et de vidéos » : différence entre les versions
(10 versions intermédiaires par le même utilisateur non affichées) | |||
Ligne 4 : | Ligne 4 : | ||
* [https://www.gimp.org/ GIMP] (gratuit et open-source, disponible sous Windows ou Linux) pour toutes les images raster (photographies, etc.), | * [https://www.gimp.org/ GIMP] (gratuit et open-source, disponible sous Windows ou Linux) pour toutes les images raster (photographies, etc.), | ||
* [https://kdenlive.org/ Kdenlive] ou [https://shotcut.org/ shotcut] (gratuits et open-source, disponibles sous Windows ou Linux) pour éditer des vidéos. | * [https://kdenlive.org/ Kdenlive] ou [https://shotcut.org/ shotcut] (gratuits et open-source, disponibles sous Windows ou Linux) pour éditer des vidéos. | ||
* Pour toute vidéo, il est fortement recommandé de la recompiler avec [https://handbrake.fr/ handbrake] pour être sûr que ça fonctionne dans toutes circonstances. Sauf sur YouTube où tout est réencodé de toutes manières par eux, mais les usages "film à la maison", "présentation powerpoint", "je veux pouvoir le lire sur smartphone, sur mac, sur le grille-pain connecté", c'est indispensable. | * Pour toute vidéo, il est fortement recommandé de la recompiler avec [https://handbrake.fr/ handbrake] pour être sûr que ça fonctionne dans toutes circonstances. Sauf sur YouTube où tout est réencodé de toutes manières par eux, mais les usages "film à la maison", "présentation powerpoint", "je veux pouvoir le lire sur smartphone, sur mac, sur le grille-pain connecté", c'est indispensable. Le logiciel peut sembler un peu barbare, néanmoins vous avez des préréglages qui fonctionnent bien, et si vous laissez le curseur sur un bouton que vous ne comprenez pas, un texte explicatif apparait. Pour la plupart des usages, je recommande de choisir h264/x264, et la définition correspondant à la vidéo d'origine (720p, 1080p, etc.). | ||
En lignes de commandes (gratuit et open-source) uniquement : | En lignes de commandes (gratuit et open-source) uniquement : | ||
Ligne 14 : | Ligne 14 : | ||
Sous Linux, FFMPEG et Imagemagick sont en général installés par défaut. | Sous Linux, FFMPEG et Imagemagick sont en général installés par défaut. | ||
== Les formats == | |||
=== Images === | |||
* SVG : le meilleur format vectoriel. L'image peut agrandie indéfiniement sans problématique de pixelisation. | |||
* [https://fr.wikipedia.org/wiki/Portable_Network_Graphics PNG] : le meilleur format pour des images avec logos, peu de couleurs, etc. Pour compresser des images PNG, je vous invite à utiliser l'utilitaire [https://sourceforge.net/projects/optipng/ optipng]. | |||
* JPG : le meilleur format pour des photos, avec beaucoup de couleurs différentes, etc. Explications de son fonctionnement ici : https://sebsauvage.net/comprendre/jpeg/index.html | |||
* Voir aussi : https://lehollandaisvolant.net/tuto/html.php | |||
=== Vidéos === | |||
Les vidéos avec audio sont mises dans des "conteneurs". Ce conteneur peut être MP4, MKV, WEBM, et autres. Je recommande le conteneur MKV pour des vidéos longues et enregistrées localement (films par exemple). Je recommande WEBM pour des contenus partagés sur le web. | |||
* '''H264''' : le format principal utilisé en '''MP4'''. Excellent, assez compatible, basé sur le JPEG. | |||
* '''VP9''' : le format principal utilisé en '''WEBM'''. Encore plus compact, compatible avec tous les navigateurs web, basé sur le JPEG. | |||
* H265 (HEVC) : le nouveau format MP4. Attention, peut poser des problèmes de compatibilité sur certains appareils, notamment tout ce qui est disque dur non SSD… | |||
* APNG : basé sur le PNG, permet de faire une vidéo pas lourde de fichiers PNG, meilleure alternative au GIF. | |||
* GIF : à éviter, obsolète, fait comme l'APNG mais moins bien. | |||
== Lignes de commandes utiles avec FFMPEG & Imagemagick == | == Lignes de commandes utiles avec FFMPEG & Imagemagick == | ||
Voir aussi : https://sebsauvage.net/wiki/doku.php?id=ffmpeg | |||
=== | === Extraire les images une par une d'un GIF === | ||
convert -coalesce brocoli.gif out%05d.pgm | |||
=== Extraire les images une par une d'une vidéo, une image tous les 15ème de secondes === | |||
ffmpeg -i input.webm -r 15 -f image2 image-%06d.png | |||
https://stackoverflow.com/q/19539457 | |||
=== Convertir un GIF en vidéo === | |||
ffmpeg -i input.gif output.webm | |||
=== | === Changer le format d'une vidéo === | ||
ffmpeg -i input. | ffmpeg -i input.mp4 output.webm | ||
=== | === Créer une vidéo à partir d'une séquence de photos === | ||
convert -delay 600 *.png movie.mp4 | |||
=== Extraire l'audio d'une vidéo avec FFMPEG === | |||
ffmpeg -i input.mp4 -vn output.mp3 | ffmpeg -i input.mp4 -vn output.mp3 | ||
=== Supprimer l'audio d'une vidéo avec FFMPEG === | |||
ffmpeg -i input.mp4 -an mute-output.mp4 | ffmpeg -i input.mp4 -an mute-output.mp4 | ||
=== Changer la vitesse d'une vidéo === | |||
Le paramètre 0.5 multiplie par 0.5 la durée de la vidéo. Ainsi, avec 0.5 on double la vitesse de la vidéo. Pour ralentir, mettre un paramètre supérieur à 1. | Le paramètre 0.5 multiplie par 0.5 la durée de la vidéo. Ainsi, avec 0.5 on double la vitesse de la vidéo. Pour ralentir, mettre un paramètre supérieur à 1. | ||
ffmpeg -i input.mkv -filter:v "setpts=0.5*PTS" output.mkv | ffmpeg -i input.mkv -filter:v "setpts=0.5*PTS" output.mkv | ||
=== Retirer les passages sans changements d'une vidéo longue === | |||
Usage typique, montrer en accéléré quelque chose d'enregistré, cette méthode permet de retirer les passages où l'image est statique sans changements | Usage typique, montrer en accéléré quelque chose d'enregistré, cette méthode permet de retirer les passages où l'image est statique sans changements de façon automatisée, plutôt que de devoir le faire en édition vidéo. Attention car il faut que la vidéo soit encodée "proprement" (avec handbrake par exemple), sinon ça cause facilement des bugs. | ||
ffmpeg -y -i in.mp4 -vf mpdecimate,setpts=N/FRAME_RATE/TB out.mp4 | ffmpeg -y -i in.mp4 -vf mpdecimate,setpts=N/FRAME_RATE/TB out.mp4 | ||
Voir aussi : https://stackoverflow.com/questions/37088517/remove-sequentially-duplicate-frames-when-using-ffmpeg/52062421#52062421 | Voir aussi : https://stackoverflow.com/questions/37088517/remove-sequentially-duplicate-frames-when-using-ffmpeg/52062421#52062421 | ||
=== Ajouter des vidéos les unes après les autres === | |||
Voir ici : https://stackoverflow.com/a/11175851 | |||
(echo file 'first file.mp4' & echo file 'second file.mp4' )>list.txt | |||
ffmpeg -safe 0 -f concat -i list.txt -c copy output.mp4 | |||
à noter que les fichiers doivent avoir des noms simples sans caractères spéciaux et que le paramètre <code>-strict -2</code> peut être à rajouter après le <code>-c copy</code>. | |||
=== Générer un PNG animé à partir d'une séquence de photos === | |||
(Meilleure alternative au GIF, mais attention toujours destiné aux logos, dessins, clipart, etc, avec peu de couleurs sur l'animation.) | |||
magick -delay 100 -loop 0 image-1.png image-2.png image-3.png APNG:myanimation.png | |||
https://stackoverflow.com/a/69715802 | |||
== Le GIF == | |||
<blockquote>– Tu aurais moyen d'ajouter "convertir une vidéo en gif" ? — [[Utilisateur:Martintincool|Martintincool]] | |||
– Non. Le GIF c'est dépassé. C'est interdit — [[Utilisateur:Fran|Fran]] | |||
''conversation le 24 janvier 2024 à 10h35''</blockquote>C'était fabuleux à [[wikipedia:GIF|sa sortie en 1987]], maintenant aujourd'hui c'est pas génial. | |||
Exemple de conversions : | |||
{| class="wikitable" | |||
|+ | |||
!Fichier | |||
![https://www.youtube.com/watch?v=tN9Dj5tkXAE what up council] | |||
![https://youtu.be/_0h2kV0mhvE school is not for smart people] | |||
![https://www.youtube.com/shorts/hxQwWEOOyU8 nyancat 6s] | |||
!moyenne par rapport au WEBM | |||
|- | |||
|Taille GIF | |||
|<span style="color:#f00">1207223926</span> | |||
|<span style="color:#f00">38780829</span> | |||
|<span style="color:#f00">9902138</span> | |||
|<span style="color:#f00"><big>'''1851%'''</big></span> | |||
|- | |||
|Taille MP4 | |||
|25271852 | |||
|3975277 | |||
|995994 | |||
|196% | |||
|- | |||
|Taille Webm | |||
|<span style="color:#0c0">19014152</span> | |||
|<span style="color:#0c0">1243033</span> | |||
|<span style="color:#0c0">736790</span> | |||
|100% | |||
|} | |||
=== Créer un GIF à partir d'une série d'images === | |||
convert -delay 20 -loop 0 *.jpg myimage.gif | |||
https://askubuntu.com/a/648245 | |||
=== Optimiser un GIF pour réduire sa taille === | |||
Si jamais vous êtes contraint d'utiliser malgré tout ce format obsolète, vous pouvez en réduire la taille en optimisant l'algorithme GIF avec les méthodes ci-dessous. | |||
Rappelons également que c'est un format avec peu de couleurs, donc il est plutôt dédié aux images type "logo", "dessin", clipart & autres. Les photos ou vidéos enregistrées AFK sont particulièrement inadaptées à l'usage du GIF. | |||
==== Réduire le nombre d'images par seconde ==== | |||
L'usine à gaz : https://chezsoi.org/lucas/blog/shrinking-down-a-gif-by-reducing-its-frames-count.html | |||
Sans doute que le plus simple serait de bosser sur un format moderne 🙄 comme le MP4 et de réduire ainsi la quantité d'images : | |||
ffmpeg -i input.mp4 -filter:v fps=30 output.mp4 | |||
(voir aussi : https://trac.ffmpeg.org/wiki/ChangingFrameRate) | |||
==== Réduire les dimensions largeur/hauteur ==== | |||
convert input.gif -coalesce temporary.gif | |||
convert -size <original size> temporary.gif -resize 150x100 smaller.gif | |||
voir ici : https://askubuntu.com/a/257848 | |||
==== Réduire le nombre de couleurs ==== | |||
mogrify -layers 'optimize' -fuzz 7% mygif.gif | |||
Le "-fuzz 7%" signifiant "je rend égales toutes les couleurs qui sont dans une marge de 7%", ce qui diminue la quantité de couleurs et donc la taille du fichier. | |||
voir ici : https://stackoverflow.com/a/47343340 | |||
[[Catégorie:Informatique]] | [[Catégorie:Informatique]] |
Dernière version du 7 février 2024 à 12:02
Pour traiter des images ou de la vidéo, vous pouvez utiliser les outils suivants :
- Inkscape (gratuit et open-source, disponible sous Windows ou Linux) pour toutes les images vectorielles (logos, etc.),
- GIMP (gratuit et open-source, disponible sous Windows ou Linux) pour toutes les images raster (photographies, etc.),
- Kdenlive ou shotcut (gratuits et open-source, disponibles sous Windows ou Linux) pour éditer des vidéos.
- Pour toute vidéo, il est fortement recommandé de la recompiler avec handbrake pour être sûr que ça fonctionne dans toutes circonstances. Sauf sur YouTube où tout est réencodé de toutes manières par eux, mais les usages "film à la maison", "présentation powerpoint", "je veux pouvoir le lire sur smartphone, sur mac, sur le grille-pain connecté", c'est indispensable. Le logiciel peut sembler un peu barbare, néanmoins vous avez des préréglages qui fonctionnent bien, et si vous laissez le curseur sur un bouton que vous ne comprenez pas, un texte explicatif apparait. Pour la plupart des usages, je recommande de choisir h264/x264, et la définition correspondant à la vidéo d'origine (720p, 1080p, etc.).
En lignes de commandes (gratuit et open-source) uniquement :
- FFMPEG pour l'édition vidéo (documentation),
- Imagemagick pour l'édition d'images (documentation).
Sous Windows, l'installateur d'Imagemagick propose de cocher une case pour aussi installer ffmpeg. Je vous conseille de le faire.
Sous Linux, FFMPEG et Imagemagick sont en général installés par défaut.
Les formats[modifier | modifier le wikicode]
Images[modifier | modifier le wikicode]
- SVG : le meilleur format vectoriel. L'image peut agrandie indéfiniement sans problématique de pixelisation.
- PNG : le meilleur format pour des images avec logos, peu de couleurs, etc. Pour compresser des images PNG, je vous invite à utiliser l'utilitaire optipng.
- JPG : le meilleur format pour des photos, avec beaucoup de couleurs différentes, etc. Explications de son fonctionnement ici : https://sebsauvage.net/comprendre/jpeg/index.html
- Voir aussi : https://lehollandaisvolant.net/tuto/html.php
Vidéos[modifier | modifier le wikicode]
Les vidéos avec audio sont mises dans des "conteneurs". Ce conteneur peut être MP4, MKV, WEBM, et autres. Je recommande le conteneur MKV pour des vidéos longues et enregistrées localement (films par exemple). Je recommande WEBM pour des contenus partagés sur le web.
- H264 : le format principal utilisé en MP4. Excellent, assez compatible, basé sur le JPEG.
- VP9 : le format principal utilisé en WEBM. Encore plus compact, compatible avec tous les navigateurs web, basé sur le JPEG.
- H265 (HEVC) : le nouveau format MP4. Attention, peut poser des problèmes de compatibilité sur certains appareils, notamment tout ce qui est disque dur non SSD…
- APNG : basé sur le PNG, permet de faire une vidéo pas lourde de fichiers PNG, meilleure alternative au GIF.
- GIF : à éviter, obsolète, fait comme l'APNG mais moins bien.
Lignes de commandes utiles avec FFMPEG & Imagemagick[modifier | modifier le wikicode]
Voir aussi : https://sebsauvage.net/wiki/doku.php?id=ffmpeg
Extraire les images une par une d'un GIF[modifier | modifier le wikicode]
convert -coalesce brocoli.gif out%05d.pgm
Extraire les images une par une d'une vidéo, une image tous les 15ème de secondes[modifier | modifier le wikicode]
ffmpeg -i input.webm -r 15 -f image2 image-%06d.png
https://stackoverflow.com/q/19539457
Convertir un GIF en vidéo[modifier | modifier le wikicode]
ffmpeg -i input.gif output.webm
Changer le format d'une vidéo[modifier | modifier le wikicode]
ffmpeg -i input.mp4 output.webm
Créer une vidéo à partir d'une séquence de photos[modifier | modifier le wikicode]
convert -delay 600 *.png movie.mp4
Extraire l'audio d'une vidéo avec FFMPEG[modifier | modifier le wikicode]
ffmpeg -i input.mp4 -vn output.mp3
Supprimer l'audio d'une vidéo avec FFMPEG[modifier | modifier le wikicode]
ffmpeg -i input.mp4 -an mute-output.mp4
Changer la vitesse d'une vidéo[modifier | modifier le wikicode]
Le paramètre 0.5 multiplie par 0.5 la durée de la vidéo. Ainsi, avec 0.5 on double la vitesse de la vidéo. Pour ralentir, mettre un paramètre supérieur à 1.
ffmpeg -i input.mkv -filter:v "setpts=0.5*PTS" output.mkv
Retirer les passages sans changements d'une vidéo longue[modifier | modifier le wikicode]
Usage typique, montrer en accéléré quelque chose d'enregistré, cette méthode permet de retirer les passages où l'image est statique sans changements de façon automatisée, plutôt que de devoir le faire en édition vidéo. Attention car il faut que la vidéo soit encodée "proprement" (avec handbrake par exemple), sinon ça cause facilement des bugs.
ffmpeg -y -i in.mp4 -vf mpdecimate,setpts=N/FRAME_RATE/TB out.mp4
Voir aussi : https://stackoverflow.com/questions/37088517/remove-sequentially-duplicate-frames-when-using-ffmpeg/52062421#52062421
Ajouter des vidéos les unes après les autres[modifier | modifier le wikicode]
Voir ici : https://stackoverflow.com/a/11175851
(echo file 'first file.mp4' & echo file 'second file.mp4' )>list.txt ffmpeg -safe 0 -f concat -i list.txt -c copy output.mp4
à noter que les fichiers doivent avoir des noms simples sans caractères spéciaux et que le paramètre -strict -2
peut être à rajouter après le -c copy
.
Générer un PNG animé à partir d'une séquence de photos[modifier | modifier le wikicode]
(Meilleure alternative au GIF, mais attention toujours destiné aux logos, dessins, clipart, etc, avec peu de couleurs sur l'animation.)
magick -delay 100 -loop 0 image-1.png image-2.png image-3.png APNG:myanimation.png
https://stackoverflow.com/a/69715802
Le GIF[modifier | modifier le wikicode]
– Tu aurais moyen d'ajouter "convertir une vidéo en gif" ? — Martintincool
– Non. Le GIF c'est dépassé. C'est interdit — Fran
conversation le 24 janvier 2024 à 10h35
C'était fabuleux à sa sortie en 1987, maintenant aujourd'hui c'est pas génial.
Exemple de conversions :
Fichier | what up council | school is not for smart people | nyancat 6s | moyenne par rapport au WEBM |
---|---|---|---|---|
Taille GIF | 1207223926 | 38780829 | 9902138 | 1851% |
Taille MP4 | 25271852 | 3975277 | 995994 | 196% |
Taille Webm | 19014152 | 1243033 | 736790 | 100% |
Créer un GIF à partir d'une série d'images[modifier | modifier le wikicode]
convert -delay 20 -loop 0 *.jpg myimage.gif
https://askubuntu.com/a/648245
Optimiser un GIF pour réduire sa taille[modifier | modifier le wikicode]
Si jamais vous êtes contraint d'utiliser malgré tout ce format obsolète, vous pouvez en réduire la taille en optimisant l'algorithme GIF avec les méthodes ci-dessous.
Rappelons également que c'est un format avec peu de couleurs, donc il est plutôt dédié aux images type "logo", "dessin", clipart & autres. Les photos ou vidéos enregistrées AFK sont particulièrement inadaptées à l'usage du GIF.
Réduire le nombre d'images par seconde[modifier | modifier le wikicode]
L'usine à gaz : https://chezsoi.org/lucas/blog/shrinking-down-a-gif-by-reducing-its-frames-count.html
Sans doute que le plus simple serait de bosser sur un format moderne 🙄 comme le MP4 et de réduire ainsi la quantité d'images :
ffmpeg -i input.mp4 -filter:v fps=30 output.mp4
(voir aussi : https://trac.ffmpeg.org/wiki/ChangingFrameRate)
Réduire les dimensions largeur/hauteur[modifier | modifier le wikicode]
convert input.gif -coalesce temporary.gif convert -size <original size> temporary.gif -resize 150x100 smaller.gif
voir ici : https://askubuntu.com/a/257848
Réduire le nombre de couleurs[modifier | modifier le wikicode]
mogrify -layers 'optimize' -fuzz 7% mygif.gif
Le "-fuzz 7%" signifiant "je rend égales toutes les couleurs qui sont dans une marge de 7%", ce qui diminue la quantité de couleurs et donc la taille du fichier.
voir ici : https://stackoverflow.com/a/47343340