Accueil > How to ? > Petit répertoire de commandes pour un Terminal

Petit répertoire de commandes pour un Terminal

⚇ Article publié le samedi 1er octobre 2016, mis à jour le jeudi 16 décembre 2021

Utilisateur de Gnu/Linux, la ligne de commande est d’une grande efficacité mais retenir les commandes et leurs paramètres... d’où l’idée de ce répertoire qui me permet d’éviter de perdre du temps à retrouver la commande si pratique utilisée il y a quelques mois... Et si ça peut servir à d’autres, autant le mettre sur ce site.

Ces commandes sont utilisées sur Ubuntu.

Sommaire

Autour des images

Convertir un lot d’images en un fichier pdf


Pour cela on a besoin d’ImageMagick : on se place dans le dossier qui contient les images et on lance :

convert *.jpg aaa.pdf

Et hop, j’obtiens un fichier pdf : aaa.pdf. Cela fonctionne aussi très bien avec des png ou des gif. Attention l’extension est sensible à la casse (.JPG est différent .jpg). Les pages du pdf sont créées dans l’ordre alphabétique des noms de fichiers jpg. Attention : mon_fichier_2.jpg sera placé après mon_fichier_198.jpg. Pour régler cette histoire d’ordre, on peut passer par pyRenamer et nommer nos fichiers avec cette règle : mon_ficher_{num3}.jpg. [1]. On obtiendra alors dans l’ordre : mon_fichier_001.jpg, mon_fichier_002.jpg, ... mon_fichier_198.jpg, ...

Depuis Ubuntu 18.04, j’obtiens cette erreur :

convert *.JPG aaa.pdf convert-im6.q16 : not authorized `aaa.pdf’ @ error/constitute.c/WriteImage/1037.

C’est la création de fichier pdf qui est bloquée par défaut dans le fichier policy.xml d’ImageMagick. Il suffit d’éditer le fichier et de commenter la ligne concernée :

  • on trouve policy.xml dans le dossier /etc/ImageMagick-6 sur Ubuntu 18.04 ;
  • on édite par un
    sudo vi /etc/ImageMagick-6/policy.xml
  • on commente la ligne « <policy domain=”coder” rights=”none” pattern=”PDF” /> en ajoutant « < !— » au début et « —> » à la fin :

Créer une « planche contact » à partir d’un dossier de photos


On place nos photos dans un dossier, puis on lance la commande :

montage *JPG -tile 3x -geometry 200x planche.jpg

Pour faire une planche avec des images dont la plus grande dimension sera 200 pixels. On peut ajouter un espacement avec +2+2 (montage *JPG -tile 3x -geometry 200x+2+2 planche.jpg)

JPEG - 64.3 kio
Planche contact à partir de 12 photos

Redimensionner un lot d’images


Attention les images d’origine seront écrasées :

mogrify -resize 300x200 *.JPG

Avec cette commande ImageMagick, les .JPG de ce dossier auront la dimension 300x200 pixels... ou ???x200 pixels si elles sont verticales. On peut aussi utiliser la commande en % :

mogrify -resize 25% *.JPG

Créer un gif animé à partir d’un lot d’images

convert -delay 20 -loop 0 *.JPG Animation.gif


L’unité du paramètre delay est le centième de seconde, donc ici 0.2s soit 5 i/s. Beaucoup plus d’infos sur cette page.

Autour des pdf

Optimiser un pdf, réduire sa taille

On utilise gs qui est déjà installé sur Ubuntu :

gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/ebook -dNOPAUSE -dQUIET -dBATCH -sOutputFile=bbb.pdf aaa.pdf

Ainsi, le fichier aaa.pdf est enregistré en bbb.pdf une fois optimisé. Selon le type de pdf à optimiser les résultats seront plus ou moins intéressants. Pour un pdf riche en images les résultats peuvent être spectaculaires. Par exemple ici, deux pdf officiels avec une réduction de 0.8 à 0.3...

JPEG - 24.7 kio
Exemples à partir de 2 pdf

Récupérer chaque page d’un pdf en images (jpg ou png)


On va utiliser Image Magick, la commande de base est celle-ci

convert mon_pdf.pdf page.jpg

Cela nous donne des fichiers de 595x842 pixels pour du A4, soit du 72ppp. Et si on ne précise rien la qualité jpg est de 100, soit zéro perte. On adapte notre commande en intégrant ces paramètres :

convert -density 100 -quality 70 mon_pdf.pdf page.jpg

Ce qui revient à demander une conversion en 100ppp (density 100) et une petite compression jpg (quality 70). Pour se repérer, une page A4 fait 8.2x11.7 pouces. Avec density à 100 on aura une image d’à peu près 800x1200 pixels, avec 200 : 1600x2400, ... Pour la liste des paramètres de convert, sur la documentation en ligne d’Image Magick

  • Si la conversion ne se fait pas avec un message à propos de la Security Policy, il faut vérifier que l’on a une version de Ghostscript supérieure à 9.24 et lever ce blocague en supprimant toute la section du fichier /etc/ImageMagick-6/policy.xml [2] ;
  • Si la conversion ne va pas à terme avec le message « cache resources exhausted », il faut éditer de nouveau /etc/ImageMagick-6/policy.xml et changer les valeurs relatives aux ressources [3] :
    PNG - 9.7 kio

Autour de la vidéo

Extraire les images d’une vidéo

Avec cette commande qui nécessite mPlayer, on obtient des images png (si on veut du jpg il faut utiliser jpeg à la place de png) numérotées. Pour notre exemple, une vidéo de 6s secondes à 30i/s en 1920x1080 donne 184 images de même dimension.

mplayer -vo png aaa.MP4
JPEG - 26.6 kio
6 s de vidéo pour 180 images...

Avec ffmpeg, on obtient le même résultat avec la commande

ffmpeg -i aaa.MP4 image_%04d.png

Cependant les images on été compressées (2,1Mo au lieu de 6) et sont nommées image_0001.png, image_0002.png...
En général, on souhaite extraire les images d’une petite partie de la vidéo, pour cela on se sert des paramètres -s (début en secondes) et -t (durée en secondes), on peut aussi choisir le nombre d’images par seconde avec -r (nombre d’images par seconde)

ffmpeg -i aaa.MP4 -r 12 -ss 3 -t 1 image_%04d.png

Un très bon site pour en apprendre plus sur ffmpeg..

Transcoder une vidéo pour du montage

Mon logiciel de montage n’accepte pas mes vidéos ! C’est chose courante pour MS Movie Maker, la seule solution transcoder pour qu’il accepte notre vidéo (ici un fichier webm téléchargé sur Wikimedia)

PNG - 20 kio
Movie Maker ne prend pas en charge le type de fichier sélectionné
ffmpeg -i aa.webm -strict -2 bb.mp4

Avec aa.webm comme fichier à transcoder et bb.mp4 comme résultat.

Transcoder ma vidéo en webm

Pour insérer une vidéo en html5, par exemple cette vidéo mp4 (1280x720), FFmepg va la transcoder en webm et on va lui demander de réduire ses dimensions à 320x240

ffmpeg -i donator.mp4 -vf scale=320:240 -strict -2 bb.webm
WebM - 4 Mio
bb.webm

Pour conserver une bonne qualité à une vidéo que je souhaite verser sur Wikimedia Commons :

ffmpeg -i MON_FICHIER.mp4 -codec:v libvpx -quality good -cpu-used 0 -b:v 4000k -maxrate 4000k -bufsize 8000k -qmin 10 -qmax 42 -vf scale=-1:1080 -threads 4 -codec:a vorbis -b:a 128k -strict -2 MA_VIDEO.webm

Plus d’exemple avec webm ici : https://doc.ubuntu-fr.org/webm.

Transcoder une vidéo en mp4

Ah tiens... depuis qu’on m’a prêté une tablette avec une pomme, je m’aperçois que les vidéos en webm ne sont pas lues nativement par Safari. Donc le mp4 est le conteneur le plus « universel » pour la vidéo-web [4]. Du coup mon exemple précédent (webm) est bidon, mais bon on adapte la commande pour faire du mp4 depuis du wmv, de l’avi, du mov, ... Et puis on a toujours besoin du format WebM pour les vidéos qu’on souhaite déposer sur Wikimedia Commons...

ffmpeg -i DSCN1804.MOV -vf scale=480:270 -strict -2 exemple.mp4
QuickTime - 17 Mio
Fichier vidéo créé par un appareil Nikon - 1920:1080 codec H.264 dans un conteneur MOV
MPEG4 - 1.5 Mio
Après transcodage et redimensionnement même codec H.264 et conteneur mp4

Au passage, notons qu’un petit redimensionnement change considérablement le poids du fichier. Exemple : une vidéo en 1920:1080 redimensionnée en 1280:720 passe de 700 Mo (trop grosse pour Viméo gratuit) à 80 Mo

Redimensionner une vidéo

On va imaginer que c’est pour publier la vidéo, alors on va travailler en mp4 avec le codec h264, mais c’est possible avec les autres conteneurs et codecs.

ffmpeg -i corr4.MOV -c:v libx264 -vf scale=960x540 -crf 23 video_reduite.mp4

La dimension finale est passée par scale= et le paramètres -crf est le niveau de qualité souhaité pour à partir du quel ffmpeg choisit le bit rate pour travailler, il est propre à h264, C’est une échelle de 0 à 51 où 0 est sans perte, 23 est le réglage par défaut et 51 est la pire qualité possible.
Ressources pour les différents codecs :

Supprimer les bandes noires d’une vidéo

L’exemple : je viens de faire une capture sur un iPad (en 1920:1440), et j’ai monté la vidéo capturée avec iMovie. Problème iMovie m’a collé deux bandes noires pour faire du 16:9 soit un format de sortie en 1920:1080.
La solution : cropper avec FFmepg.

  1. au lieu de sortir la calculette, demandons a FFmpeg un cropdetect : on lui fait lire 3 secondes de la vidéo et déterminer les coordonnées de la vidéo sans les bandes noires :
    ffmpeg -i ipad.mov -vf cropdetect=24:16:0 -ss 0 -t 3 -strict -2 test.mp4

    Voici la réponse :

    PNG - 26.7 kio

    On sélectionne alors les paramètres de crop, ici crop=1440:1072:240:4 et on les récupère d’un clic-droit - copier. On peut jeter le fichier test.mp4, qui n’a servi que pour cette recherche de coordonnées .

  2. on procède ensuite au détourage de notre vidéo :
    ffmpeg -i ipad.mov -vf crop=1440:1072:240:4 -strict -2 roc_cropped.mp4

Extraire le son d’une vidéo

Récupérer la bande son d’une vidéo. Par exemple la bande son de cette « pub » pour Wikipédia

ffmpeg -i Video_Wikipedia_CKoi_Maladie_-_Sickeness.webm audio.mp3
MP3 - 714.4 kio
Wikipédia c’est quoi ?
Extrait de la bande originale du film. A video by Michael Epaka, directed by Regis Talla, triggered by Iolanda Pensa and produced by doual’art within the frame of the project What is about - C’est quoi. A series of communication tools about Wikipedia. Cameroon pilot project.

Inverser une vidéo

Inverser le déroulement d’une vidéo, commencer par la dernière image pour finir par la première. J’en ai eu besoin pour inverser une séquence faite avec iMotion qui pour une raison inconnue me l’a construite à l’envers.

ffmpeg -i ma_video.mov -vf reverse ma_video_inversee.mov

Si on souhaite en plus inverser la bande son on ajoutera le paramètre -af areverse
NB : le manuel de ffmpeg précise que la vidéo est entièrement chargée en mémoire pour être inversée, du coup il est conseillé de travailler sur des segments au lieu d’une vidéo longue.



Historique de la page

[1Depuis Ubuntu 20.04, PyRenamer ne fonctionne plus, on peut utiliser directement le gestionnaire de fichier ou XnView pour ce renommage :

PNG - 11.4 kio
Renommer un lot de fichiers avec Nautilus