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

Techniques d'optimisation pour GIF ( 😭 )
(Techniques d'optimisation pour GIF ( 😭 ))
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.
== Lignes de commandes utiles avec FFMPEG & Imagemagick ==
=== Liste ===
==== Extraire les images une par une d'un GIF ====
convert -coalesce brocoli.gif out%05d.pgm
==== 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 <code>-strict -2</code> peut être à rajouter après le <code>-c copy</code>.


== Le GIF ==
== Le GIF ==
Ligne 50 : Ligne 87 :
|}
|}


== Lignes de commandes utiles avec FFMPEG & Imagemagick ==
=== 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.


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


==== Extraire les images une par une d'un GIF ====
==== Réduire le nombre d'images par seconde ====
convert -coalesce brocoli.gif out%05d.pgm
L'usine à gaz : https://chezsoi.org/lucas/blog/shrinking-down-a-gif-by-reducing-its-frames-count.html


==== Convertir un GIF en vidéo ====
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.gif output.webm
  ffmpeg -i input.mp4 -filter:v fps=30 output.mp4
(voir aussi : https://trac.ffmpeg.org/wiki/ChangingFrameRate)


==== Changer le format d'une vidéo ====
==== Réduire les dimensions largeur/hauteur ====
  ffmpeg -i input.mp4 output.webm
  convert input.gif -coalesce temporary.gif
 
  convert -size <original size> temporary.gif -resize 150x100 smaller.gif
==== Créer une vidéo à partir d'une séquence de photos ====
voir ici : https://askubuntu.com/a/257848
  convert -delay 600 *.png movie.mp4


==== Extraire l'audio d'une vidéo avec FFMPEG ====
==== Réduire le nombre de couleurs ====
  ffmpeg -i input.mp4 -vn output.mp3
  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.


==== Supprimer l'audio d'une vidéo avec FFMPEG ====
voir ici : https://stackoverflow.com/a/47343340
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 <code>-strict -2</code> peut être à rajouter après le <code>-c copy</code>.
[[Catégorie:Informatique]]
[[Catégorie:Informatique]]