Ménage multimédia en ligne de commande

Permalink | Publié le 1 novembre 2016, dernière modification le 9 avril 2018.
Tags :

L’écriture de cet article est arrivée tout à fait par hasard. Alors que je regardais différents outils de monitoring, j’en arrive à afficher l’espace occupé sur les partitions de mon PC :

df -h | grep ^/dev

Et là je tombe sur un /home/ rempli à 88% (sur 427 Go). Je décide donc de voir plus en détails ce qui occupe tant d’espace. J’utilise donc la commande suivante :

du -ch "/home/<user>" -d 1 | sort -h

Cette commande renvoie une taille lisible par un humain (-h) de chaque répertoire sans récursivité (-d 1) avec un grand total (-c), le tout trié par ordre de grandeur. Elle est un peu longue à s’exécuter selon la quantité de données dans le répertoire demandé.

Et je me retrouve donc avec un top 3 constitué des dossiers Pictures (180Go), Music (74Go) et Downloads (57Go). J’ai rarement une connexion stable ou rapide, ce qui explique que je stocke donc beaucoup en local, mais pour le coup, c’est exagéré : il faut donc faire le ménage.

Avant de convertir ou supprimer des fichiers par lot : SAUVEGARDEZ.

Photos et vidéos

Les 145Go du dossier Pictures/ ne font bien sûr pas référence uniquement à mes photos mais également à mes vidéos. Et entre le sport et les associations, j’ai une accumulation de photos et vidéos GoPro qui prends une place gigantesque.

La première étape est spécifique aux détenteurs d’une GoPro, mais peut s’appliquer dans d’autres cas aussi. Il s’agit de supprimer tous les fichiers .THM et .LRV, qui sont des fichiers générés pour visualiser en WiFi depuis son smartphone les vidéos, ce n’est pas bien lourd (les vidéos font entre 1 et 2 Mo) mais c’est inutile en dehors de votre appareil et la somme totale de tous ces fichiers n’est pas négligeable. Cette commande effacera tous les fichiers .LRV du répertoire courant et ceci récursivement :

find . -name '*.LRV' -delete

Réduire les photos

Ensuite je souhaite réduire la qualité et la taille de dossiers entiers qui contiennent des timelapse (photos prises toutes les 5 secondes). Je vais pour cela utiliser le logiciel imagemagick.

sudo apt-get install imagemagick

J’ai essayé de faire en une seule commande le traitement de toutes les photos (il y en a 999 par dossier), mais j’ai eu le droit à un dossier /tmp qui s’est rempli pour finir par un échec. Donc j’ai réalisé un petit script pour traiter image après image, et où l’on voit mieux la progression :

#!/bin/bash

# Compte le nombre de fichiers à traiter
total=`ls -1 *.JPG | wc -l`
compt=0

for file in *.JPG; do
  # On récupère l'heure
  heure=`date +"%T"`
  # On incrémente à chaque fichier
  let "compt++"
  # On affiche l'état
  echo "[$heure][$compt/$total] Fichier traité : $file"
  # New name
  name=${file%.*}".jpg"
  # On converti (taille divisée par 2 et qualité à 90%)
  convert $file -resize 50% -quality 90 $name
  # On supprime l'ancien
  rm $file
done

Le résultat vu de la console est disponible ci-dessous. Pour un dossier de 999 fichiers d’une taille totale de 1.8Go, après conversion il n’est plus que de 227 Mo et on ne voit pas de différence à l’œil nu sur les photos.


Il est également possible d’adapter ce script pour qu’il se charge également des sous-dossiers, en utilisant la commande find, avec deux lignes à changer, le nombre de fichiers à traiter et le paramètre de la boucle :

total=`find . -name '*.JPG' | wc -l`
for file in $(find . -name '*.JPG'); do

Réduire les vidéos

Ensuite, on passe à la réduction des fichiers vidéos. 17min de vidéo GoPro (1920×1080) à 30 images/seconde et un bitrate de 15Mbit/s au format .MP4 donne un fichier de 1.9Go ! C’est principalement le bitrate qui en est la cause.

Dans mon cas je décide donc pour certaines vidéos dont je n’aurais pas d’usage particulier comme de la rediffusion plus tard, de convertir la vidéo avec les mêmes caractéristiques, mais avec un bitrate de 2Mbit/s. Pour cela j’utilise ffmpeg, l’installation est très simple et expliquée dans le lien selon votre distribution.

sudo add-apt-repository ppa:mc3man/trusty-media
sudo apt-get update
sudo apt-get dist-upgrade
sudo apt-get install ffmpeg

Encore un petit script pour automatiser la conversion de toutes les vidéos d’un dossier, pour éviter d’avoir à relancer une commande à chaque fois. Avec en prime l’utilisation de la commande pv pour afficher une belle barre de progression.

#!/bin/bash

# Compte le nombre de fichiers à traiter
total=`find . -name '*.MP4' | wc -l`
compt=0

for file in *.MP4; do
  # On récupère l'heure
  heure=`date +"%T"`
  # On incrémente à chaque fichier
  let "compt++"
  # On affiche l'état
  echo "[$heure][$compt/$total] Fichier traité : $file"
  # New name
  name=${file%.*}".mp4"
  # On converti (bitrate réduit à 2Mbit/s)
  pv $file | ffmpeg -i pipe:0 -v warning -b:v 2M -pix_fmt yuvj420p $name
  # On supprime l'ancien
  rm $file
done
        

Il y a de nombreux paramétrages avec ffmpeg et je vous invite à modifier la commande pour qu’elle corresponde à vos besoins. Pour le coup, la qualité vidéo est assez réduite, c’est un choix personnel, vous pouvez adapter à vos besoins en mettant un bitrate de 7Mb/s par exemple. La durée de conversion correspond à la durée de la vidéo. L’affichage de ce script ressemble à ça :

Trouver les doublons

Il arrive parfois que je sauvegarde deux fois les mêmes photos dans différents répertoires. Il existe un utilitaire spécialement pour s’occuper ce problème : fdupes. Avec les options -rSm il agit récursivement et ne donne qu’un résumé avec la taille :


On changera l’option -m par l’option -d pour effectuer une suppression avec demande de confirmation, ou sans (-N), et une fois la recherche des doublons terminée, pour chaque fichier fdupes vous affichera ceci :

Libre à vous de choisir quel fichier vous souhaitez conserver, sachant que vous pouvez également garder les deux en répondant all.

Musique

Ici pas de réduction ! Contrairement aux photos et vidéos, les fichiers audios sont destinés à être ouverts plus souvent donc je privilégie la qualité avec FLAC ou des MP3 à 320 Kbit/s. Alors que faire mis à part un tri manuel de ce que l’on écoute jamais ? J’ai tout d’abord essayé de faire la même chose que pour les photos avec fdupes. Je suis sûr et certain d’avoir des doublons, malheureusement il n’a trouvé que des pochettes d’albums présents dans les dossiers CD1 et CD2. Avec différents encodages, quelques secondes de plus en début ou fin, un bitrate qui change et fdupes ne fera pas le rapprochement.

Il existe heureusement un logiciel, dupeGuru Music Edition, qui va analyser différentes caractéristiques de vos fichiers audio pour trouver des fichiers similaires. Il regarde le poids, la durée, le bitrate, et indique en pourcentage à quel point les fichiers sont similaires. Il n’est pas disponible en ligne de commande. Comme vous pouvez le voir ci-dessous, il trouve pas mal de faux positifs, mais ça reste correct et il m’a quand même permis d’éliminer les doublons existants.

sudo apt-add-repository ppa:hsoft/ppa
sudo apt-get update
sudo apt-get install dupeguru-me


Toutes ces modifications m’ont permis de gagner beaucoup de place, surtout concernant les vidéos. En espérant que ça puisse vous servir !

Inspiration

Commentaires

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *