« Traitement d'images et de vidéos » : différence entre les versions

De WikiRP
(Techniques d'optimisation pour GIF ( 😭 ))
mAucun résumé des modifications
Ligne 17 : Ligne 17 :
== Lignes de commandes utiles avec FFMPEG & Imagemagick ==
== Lignes de commandes utiles avec FFMPEG & Imagemagick ==


=== Liste ===
=== Extraire les images une par une d'un GIF ===
convert -coalesce brocoli.gif out%05d.pgm


==== Extraire les images une par une d'un GIF ====
=== Extraire les images une par une d'une vidéo, une image tous les 15ème de secondes ===
  convert -coalesce brocoli.gif out%05d.pgm
  ffmpeg -i input.webm -r 15 -f image2 image-%06d.png
https://stackoverflow.com/q/19539457


==== Convertir un GIF en vidéo ====
=== Convertir un GIF en vidéo ===
  ffmpeg -i input.gif output.webm
  ffmpeg -i input.gif output.webm


==== Changer le format d'une vidéo ====
=== Changer le format d'une vidéo ===
  ffmpeg -i input.mp4 output.webm
  ffmpeg -i input.mp4 output.webm


==== Créer une vidéo à partir d'une séquence de photos ====
=== Créer une vidéo à partir d'une séquence de photos ===
  convert -delay 600 *.png movie.mp4
  convert -delay 600 *.png movie.mp4


==== Extraire l'audio d'une vidéo avec FFMPEG ====
=== 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 ====
=== 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 ====
=== 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 ====
=== 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 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.
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

Version du 24 janvier 2024 à 12:03

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 :

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.

Lignes de commandes utiles avec FFMPEG & Imagemagick

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.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

Supprimer l'audio d'une vidéo avec FFMPEG

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.

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 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

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.

Le GIF

– 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%

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