Commande pour noms, résolution et taille de vidéos

Résolu/Fermé
yayou Messages postés 1144 Date d'inscription dimanche 17 octobre 2004 Statut Membre Dernière intervention 30 mars 2024 - 6 sept. 2022 à 12:59
yayou Messages postés 1144 Date d'inscription dimanche 17 octobre 2004 Statut Membre Dernière intervention 30 mars 2024 - 8 sept. 2022 à 21:34

Bonjour à tous,

Je suis à la recherche d'une commande permettant de consigner dans un fichier le nom complet, la résolution, la taille (en mégaoctets ou gigaoctets) et le chemin de l'ensemble des fichiers vidéos d'une arborescence.

Merci de m'avoir lu.


Windows / Firefox 104.0



A voir également:

1 réponse

mamiemando Messages postés 33093 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 4 mai 2024 7 752
Modifié le 6 sept. 2022 à 14:58

Bonjour,

Tu peux utiliser :

  • la commande find pour itérer sur les fichiers vidéos et egrep pour filtrer les fichiers sur leur extension
  • la commande ls -sh pour récupérer la taille d'un fichier
  • la commande ffprobe pour récupérer les métadonnées (dont la résolution de la vidéo), voir cette discussion
  • la commande jq pour extraire d'une chaîne json un champ particulier
  • l'opérateur > (resp. >>) pour rediriger un résultat de commande dans un fichier (resp. à la suite d'un fichier)

À tester mais ça doit ressembler en gros à ceci :

#!/bin/bash

OUT="result.txt"
echo "" > "$OUT"
for f in $(find . -type f | egrep "\.(mov|mp4)$")
do
   metadata=$(ffprobe -v quiet -print_format json -show_streams "$f")
   width=$(echo "$metadata" | jq -r '.streams[0].width')
   height=$(echo "$metadata" | jq -r '.streams[0].height')
   size=$(ls -sh "$f" | cut -d" " -f1)
   echo "$f $width $height $size" >> "$OUT"
done

Bonne chance

0
yayou Messages postés 1144 Date d'inscription dimanche 17 octobre 2004 Statut Membre Dernière intervention 30 mars 2024 64
6 sept. 2022 à 17:58

Merci pour cette très riche réponse. En fait j'espérais trouver mon bonheur avec une commande native de Linux mais apparemment il va falloir installer un ou deux trucs (FFmpeg notamment). Ca ne m'arrange pas trop parce que j'ai mal pensé la taille de ma partition Linux et elle est fréquemment à cours d'espace (je dois effacer les anciens noyaux pour en gagner). Je dois donc déjà voir si je peux installer FFmpeg et tester ton script par la suite.

Encore merci pour ton partage.

0
mamiemando Messages postés 33093 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 4 mai 2024 7 752 > yayou Messages postés 1144 Date d'inscription dimanche 17 octobre 2004 Statut Membre Dernière intervention 30 mars 2024
7 sept. 2022 à 14:01

En fait j'espérais trouver mon bonheur avec une commande native de Linux mais apparemment il va falloir installer un ou deux trucs (FFmpeg notamment)

Il y a rarement une commande qui "fait le café", l'idée sous Linux c'est plutôt de mettre à disposition plein de petites briques et après, libre à tout un chacun d'assembler son lego :-)

Donc dans ton cas, il faut effectivement installer les paquets qui fournissent jq et ffprobe.

  • Sous Debian ou une distribution qui en dérive :
sudo apt update
sudo apt install jq ffmpeg

j'ai mal pensé la taille de ma partition Linux et elle est fréquemment à cours d'espace (je dois effacer les anciens noyaux pour en gagner)

Concernant ce point, je te fais une réponse rapide car c'est un autre sujet, mais si tu veux d'autres indications, je t'invite à ouvrir une nouvelle discussion.

  • Effectivement, si tu supprimes les anciens noyaux tu gagneras beaucoup de place, et aussi si tu nettoies le cache de ton gestionnaire de paquets.
    • Sous Debian ou une distribution qui en dérive, cela peut se faire ainsi :
sudo apt purge $(dpkg -l | cut -d " " -f3 | grep linux-image-.*- | grep -v $(uname -r))
sudo apt clean
  • Et oui, il faut sans doute revoir ton partitionnement. La méthode diffère selon que tu utilises LVM ou pas, mais globalement depuis un live CD/USB par exemple avec gparted.

Bonne chance

0
yayou Messages postés 1144 Date d'inscription dimanche 17 octobre 2004 Statut Membre Dernière intervention 30 mars 2024 64 > mamiemando Messages postés 33093 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 4 mai 2024
8 sept. 2022 à 11:54

Tu as tout à fait raison. J'avais espoir de pouvoir faire ce dont j'ai besoin par un bon jeu de commandes natives mais je ne me faisais pas trop d'illusions. En plus des noyaux je fais aussi le nettoyage basique (Autoremove, autoclean, clean).

Merci pour tes conseils ainsi que pour ta très élégante commande.

0
mamiemando Messages postés 33093 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 4 mai 2024 7 752 > yayou Messages postés 1144 Date d'inscription dimanche 17 octobre 2004 Statut Membre Dernière intervention 30 mars 2024
8 sept. 2022 à 14:32

De rien :-)

En plus des noyaux je fais aussi le nettoyage basique (Autoremove, autoclean, clean).

Très bien ! Pour finaliser le ménage (car parfois sudo apt autoremove ne trouve pas tout) tu peux également virer les paquets orphelins. Il faut au préalable installer deborphan :

sudo apt update
sudo apt install deborphan

Puis ensuite, tant qu'elle purge des paquets, répète la commande suivante :

sudo apt purge $(deborphan)

Bonne continuation

0
yayou Messages postés 1144 Date d'inscription dimanche 17 octobre 2004 Statut Membre Dernière intervention 30 mars 2024 64 > mamiemando Messages postés 33093 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 4 mai 2024
8 sept. 2022 à 21:34

Ca, ça va m'être très utile. Je ne connaissais pas ce programme.

0