Obtenez des infos sur vos fichiers, en ligne de commande (ou pas)
Une réflexion que je me suis faite lorsqu’une fois de plus, j’étais connecté en SSH sur mon serveur et que je voulais avoir la durée d’une des trop nombreuses vidéos qui traînent dessus. Les outils sont nombreux, à peu près autant que les formats de fichiers qu’on peut rencontrer : photo, vidéo, archive, texte… Les méthodes, graphiques ou en ligne de commande, le sont aussi. Voici une sélection d’outils qu’on peut utiliser pour obtenir ces précieuses informations.
Les vidéos
Commençons par le premier type de fichiers qui m’a inspiré l’article à savoir les vidéos. Que ce soit sous Windows ou Linux, ligne de commande ou pas, il est très facile d’obtenir le poids d’une vidéo. Pour en obtenir la durée, les dimensions de l’image, les codecs utilisés, c’est déjà moins évident. Sous Windows, si tant est que le format de fichier est supporté (ce qui est le cas pour les AVI, MP4, MKV, mais pas les OGV/Webm pour ne citer que les plus répandus), un clic droit sur ledit fichier, on sélectionne propriétés, puis dans la fenêtre nouvellement ouverte, se rendre dans l’onglet « Détails » pour obtenir ces informations.
Pour les formats non supportés, mon dévolu s’est jeté sur un outil open-source et multiplateformes, à savoir MediaInfo. Il est donc utilisable sous Windows aussi bien que sous Linux, et pour ce dernier, aussi bien en ligne de commande qu’au travers de l’interface graphique. D’ailleurs, pour l’installer, plusieurs pistes :
- Sous Windows, on télécharge l’installeur sur cette page
- Sous Debian, à partir de Wheezy (7.x), il est inclus dans les dépôts, et un simple apt-get install mediainfo suffit.
- Sous Manjaro/Arch, un pacman -S mediainfo fera l’affaire.
Généralement sous Linux, il faudra installer le paquet mediainfo-gui pour disposer de l’interface graphique.
Pour s’en servir, au choix : soit vous demandez à votre explorateur de fichiers d’ouvrir votre vidéo avec MediaInfo (qui invoquera mediainfo-gui), soit vous lancez MediaInfo seul, et choisissez le menu « File », pour choisir « Open », « Open File », et vous diriger vers le fichier. Au final, pour les amateurs d’interface graphique, ça donne ça :
En ligne de commande, on appelle mediainfo très simplement de la manière suivante :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
[seboss666@Seboss666L ~/Vidéos/conf]$ mediainfo Internet\ libre\,\ ou\ Minitel\ 2.0\ \ \ Benjamin\ Bayart-AoRGoQ76PK8.mp4 General Complete name : Internet libre, ou Minitel 2.0 Benjamin Bayart-AoRGoQ76PK8.mp4 Format : MPEG-4 Format profile : Base Media / Version 2 Codec ID : mp42 File size : 164 MiB Duration : 1h 4mn Overall bit rate mode : Variable Overall bit rate : 357 Kbps Encoded date : UTC 2014-03-02 06:24:34 Tagged date : UTC 2014-03-02 06:24:34 gsst : 0 gstd : 3857205 gssd : BADC28A42MH1408628243196063 gshh : r8---sn-aigllnz7.googlevideo.com Video ID : 1 Format : AVC Format/Info : Advanced Video Codec Format profile : Baseline@L2.1 Format settings, CABAC : No Format settings, ReFrames : 1 frame Format settings, GOP : M=1, N=60 Codec ID : avc1 Codec ID/Info : Advanced Video Coding Duration : 1h 4mn Bit rate : 259 Kbps Maximum bit rate : 790 Kbps Width : 360 pixels Height : 288 pixels Display aspect ratio : 5:4 Frame rate mode : Constant Frame rate : 25.000 fps Color space : YUV Chroma subsampling : 4:2:0 Bit depth : 8 bits Scan type : Progressive Bits/(Pixel*Frame) : 0.100 Stream size : 119 MiB (72%) Tagged date : UTC 2014-03-02 06:26:06 Audio ID : 2 Format : AAC Format/Info : Advanced Audio Codec Format profile : LC Codec ID : 40 Duration : 1h 4mn Bit rate mode : Variable Bit rate : 96.0 Kbps Maximum bit rate : 102 Kbps Channel(s) : 2 channels Channel positions : Front: L R Sampling rate : 44.1 KHz Compression mode : Lossy Stream size : 44.1 MiB (27%) Title : IsoMedia File Produced by Google, 5-11-2011 Encoded date : UTC 2014-03-02 06:25:17 Tagged date : UTC 2014-03-02 06:26:06 |
Bon là, aucun filtre, vous avez la totalité des informations. On remarque au passage, d’après les commentaires sur l’audio (la ligne « Title »), que l’encodage est le fait de Google. En effet, c’est une vidéo que j’ai récupéré sur Youtube, avec youtube-dl (la vidéo originale est disponible ici, et je ne peux que vous conseiller de la regarder et en tirer un enseignement si possible positif).
En ligne de commande ou par l’interface graphique, nous avons désormais toutes les informations que nous voulons : dimensions, durée, taille de l’image, codecs, taux de compression, ce qui permet, notamment sous Windows, de comprendre pourquoi le Lecteur Windows Media vous insulte avec cet affreux message :
Les images
Pour les images, la « musique » est à peu près la même (hahahahaarrrrggl). Si Windows vous permettra d’obtenir des infos sur du BMP, du JPG, pas sur que le TIFF ou le PNG soit aussi accessible à cet attardé. MediaInfo saura là encore vous fournir les informations dont vous avez besoin. A un petit détail près :
C’est bien, mais ça, je savais déjà. Pour obtenir plus d’informations, il faut ouvrir le menu « Debug », et cocher « Complete » pour obtenir la totalité des informations concernant notre image. Une fois le bon réglage sélectionné, ça donne ça (faites défiler pour lire la totalité des infos) :
Sous Linux, il suffira là encore d’invoquer « bêtement » mediainfo :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
[seboss666@Seboss666L ~]$ mediainfo 1sbFkS6.jpeg General Complete name : 1sbFkS6.jpeg Format : JPEG File size : 84.2 KiB Image Format : JPEG Width : 841 pixels Height : 675 pixels Color space : YUV Chroma subsampling : 4:2:0 Bit depth : 8 bits Compression mode : Lossy Stream size : 84.2 KiB (100%) |
La musique
Là encore, Windows ne saura vous donner les infos que des formats plus répandus, WAV et MP3 en tête; il ne saura par contre pas récupérer les infos des fichiers FLAC ou des OGG Vorbis. Plutôt que de les convertir en MP3 juste pour le plaisir de savoir combien de temps dure Highway To Hell (3 minutes 28 secondes– on dirait Hudson Hawk), on fera donc appel à MediaInfo pour nous renseigner sur le ou les morceaux :
En ligne de commande, là encore, la procédure est enfantine :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
[seboss666@Seboss666L ~/Musique/AC.DC-Iron.Man.2.OST-CD-FLAC-2010-GRMFLAC]$ mediainfo 15-ac_dc-highway_to_hell.flac General Complete name : 15-ac_dc-highway_to_hell.flac Format : FLAC Format/Info : Free Lossless Audio Codec File size : 26.3 MiB Duration : 3mn 28s Overall bit rate mode : Variable Overall bit rate : 1 056 Kbps Album : Iron Man 2 OST Track name : Highway to Hell Track name/Position : 15 Performer : AC_DC Producer : Columbia Genre : Rock Recorded date : 2010 Writing application : FLAC 1.2.1 Rip Date : 2011-11-09 Retail Date : 2010-00-00 Media : CD Ripping Tool : EAC Release Type : Retail Catalog : 88697 69168 2 OST : Yes Audio Format : FLAC Format/Info : Free Lossless Audio Codec Duration : 3mn 28s Bit rate mode : Variable Bit rate : 1 056 Kbps Channel(s) : 2 channels Sampling rate : 44.1 KHz Bit depth : 16 bits Stream size : 26.3 MiB (100%) Writing library : libFLAC 1.2.1 (UTC 2007-09-17) Language : English |
Les archives
Jusqu’ici, on cherchait à peu près les mêmes informations : dimensions, codec audio/vidéo, taux de compression. Dans la vidéo, c’est notamment pratique quand un fichier AVI peut contenir aussi bien du divx, que du mpeg, ou des codecs plus anciens et/ou plus exotiques (c’est pareil pour le MKV, notez bien : ce ne sont que des conteneurs), pour vérifier si votre appareil de salon ou votre smartphone (les iPhone et autres Windows Phone sont des demeurés dans le domaine) sera capable de lire le fichier.
Dans le cadre des archives, les informations seront différentes : on cherchera principalement à visionner la liste des fichiers, puisqu’en général l’extension de l’archive suffit à déterminer le type de l’archive. Je dis généralement, parce que dans la pratique, on peut avoir des surprises. En effet, un fichier OpenDocument (Texte, tableau, présentation, même combat) est en fait une archive zip qui contient les informations nécessaires qui constituent le texte. La preuve :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
[seboss666@Seboss666L ~/Téléchargements/testing]$ file Memoire-SecureBoot-EbticemKrouna-2013.odt Memoire-SecureBoot-EbticemKrouna-2013.odt: OpenDocument Text [seboss666@Seboss666L ~/Téléchargements/testing]$ unzip Memoire-SecureBoot-EbticemKrouna-2013.odt Archive: Memoire-SecureBoot-EbticemKrouna-2013.odt extracting: mimetype extracting: Thumbnails/thumbnail.png inflating: layout-cache extracting: Pictures/10000000000001CD000001C2796C6317.jpg inflating: content.xml inflating: styles.xml inflating: settings.xml extracting: meta.xml inflating: manifest.rdf creating: Configurations2/statusbar/ creating: Configurations2/toolpanel/ creating: Configurations2/menubar/ creating: Configurations2/floater/ creating: Configurations2/toolbar/ creating: Configurations2/progressbar/ inflating: Configurations2/accelerator/current.xml creating: Configurations2/popupmenu/ creating: Configurations2/images/Bitmaps/ inflating: META-INF/manifest.xml |
Oui, c’est bien un OpenDocument, et pourtant unzip sait le traiter tout à fait normalement comme n’importe quelle archive zip.
NOTE : On a utilisé ici la commande file pour déterminer le type du fichier. C’est utile surtout sous Linux car l’extension du fichier n’a au final que peu d’importance : mon image TrueCrypt porte l’extension txt, qu’on réserve d’habitude au texte brut. Mais je vous met au défi de l’ouvrir avec un éditeur de texte…
Revenons à nos moutons. Sous Windows, il suffira d’ouvrir l’archive dans un utilitaire adapté (généralement, un gestionnaire d’archives) pour en découvrir le contenu sans avoir à l’extraire au préalable. Comme Windows ne sait ouvrir que des archives ZIP, qui ne sont pas les plus répandues de nos jours, j’ai tendance à utiliser 7-Zip, open-source et multiplateforme (même si je ne m’en sers que très peu sous Linux). Il supporte une quantité assez importante de formats d’archive, y compris certains qui ne sont pas des archives à proprement parler (je pense aux images ISO, qu’on utilise pour les CD/DVD et les clés USB). Winrar, qui n’est pas open-source, mais qui est parfaitement utilisable en version gratuite (un message vous rappelant régulièrement de l’acheter–à la manière d’un Sublime Text), sait lui aussi ouvrir la plupart des formats d’archives, y compris celui utilisé par 7-Zip.
Sous Linux, il est aussi possible de faire ça graphiquement. Si vous utilisez le bureau KDE, Ark est tout indiqué pour vous rendre ce service. Les Gnomes utiliseront certainement file-roller. Comme je l’ai dit, 7-Zip existe aussi, et son fonctionnement est identique à la version Windows.
En ligne de commande, si chaque format d’archive est manipulable avec des utilitaires dédiés, il est possible, quand vous avez 7-Zip d’installé, de l’utiliser comme « visionneuse » universelle, encore qu’on verra après le cas de certains formats plus exotiques pour les Windowsiens, plus habitués aux ZIP et RAR, et pour les plus vieux, les ACE. Réutilisons notre document/archive :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
[seboss666@Seboss666L ~/Téléchargements/testing]$ 7z l Memoire-SecureBoot-EbticemKrouna-2013.odt 7-Zip [64] 9.20 Copyright (c) 1999-2010 Igor Pavlov 2010-11-18 p7zip Version 9.20 (locale=fr_FR.UTF-8,Utf16=on,HugeFiles=on,2 CPUs) Listing archive: Memoire-SecureBoot-EbticemKrouna-2013.odt -- Path = Memoire-SecureBoot-EbticemKrouna-2013.odt Type = zip Physical Size = 775877 Date Time Attr Size Compressed Name ------------------- ----- ------------ ------------ ------------------------ 2013-09-03 08:23:34 ..... 39 39 mimetype 2013-09-03 08:23:34 ..... 9103 9103 Thumbnails/thumbnail.png 2013-09-03 08:23:34 ..... 572 248 layout-cache 2013-09-03 08:23:34 ..... 704512 704512 Pictures/10000000000001CD000001C2796C6317.jpg 2013-09-03 08:23:34 ..... 280263 49417 content.xml 2013-09-03 08:23:34 ..... 91467 6620 styles.xml 2013-09-03 08:23:34 ..... 9757 1711 settings.xml 2013-09-03 08:23:34 ..... 1229 1229 meta.xml 2013-09-03 08:23:34 ..... 899 261 manifest.rdf 2013-09-03 08:23:34 D.... 0 0 Configurations2/statusbar 2013-09-03 08:23:34 D.... 0 0 Configurations2/toolpanel 2013-09-03 08:23:34 D.... 0 0 Configurations2/menubar 2013-09-03 08:23:34 D.... 0 0 Configurations2/floater 2013-09-03 08:23:34 D.... 0 0 Configurations2/toolbar 2013-09-03 08:23:34 D.... 0 0 Configurations2/progressbar 2013-09-03 08:23:34 ..... 0 2 Configurations2/accelerator/current.xml 2013-09-03 08:23:34 D.... 0 0 Configurations2/popupmenu 2013-09-03 08:23:34 D.... 0 0 Configurations2/images/Bitmaps 2013-09-03 08:23:34 ..... 1309 335 META-INF/manifest.xml ------------------- ----- ------------ ------------ ------------------------ 1099150 773477 11 files, 8 folders |
Rapide explication :
- 7z est le nom de la commande
- l est la commande que doit effectuer 7-Zip, ici list; je vous invite soit à lire le manuel de 7z, soit à saisir 7z –help dans votre terminal pour en savoir plus.
Voyons maintenant le cas des archives au format tar.gz, tar.bz2, tar.lzma. Si Winrar s’accommode très bien des ces formats sous Windows, sous Linux, plus particulièrement en ligne de commande, les utilitaires de compression les plus usités (zip étant un format peu efficace, et rar un format propriétaire) vont au plus simple, et ne travaillent que sur un seul fichier/flux. C’est là qu’intervient le tarball, (d’où le .tar) format qui au final ne s’occupe que de regrouper plusieurs fichiers en un seul, qu’on peut dès lors compresser au moyen de son choix : gzip, bzip2, lzma (xz, utilisé par Arch/Manjaro, utilise un dérivé d’LZMA), pour les plus utilisés. voyons voir avec l’archive de mac Changer :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
[seboss666@Seboss666L ~/Téléchargements/testing]$ 7z l macchanger-1.6.0.tar.gz 7-Zip [64] 9.20 Copyright (c) 1999-2010 Igor Pavlov 2010-11-18 p7zip Version 9.20 (locale=fr_FR.UTF-8,Utf16=on,HugeFiles=on,2 CPUs) Listing archive: macchanger-1.6.0.tar.gz -- Path = macchanger-1.6.0.tar.gz Type = gzip Date Time Attr Size Compressed Name ------------------- ----- ------------ ------------ ------------------------ 2013-03-17 00:17:01 ..... 1146880 352061 macchanger-1.6.0.tar ------------------- ----- ------------ ------------ ------------------------ 1146880 352061 1 files, 0 folders |
On s’imagine bien qu’il faut plus d’un fichier, qu’il y a au moins le programme lui-même et un fichier README, LICENSE, bref, un ensemble pour que ça fonctionne. Et en effet, en l’occurrence, voilà ce qu’Ark nous dit :
Comment donc obtenir le listing en ligne de commande ? pour toutes les archives tarball, quelque soit l’algorithme de compression, c’est la commande tar qui va nous venir en aide :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
[seboss666@Seboss666L ~/Téléchargements/testing]$ tar ftz macchanger-1.6.0.tar.gz macchanger-1.6.0/ macchanger-1.6.0/config.h.in macchanger-1.6.0/Makefile.am macchanger-1.6.0/src/ macchanger-1.6.0/src/mac.c macchanger-1.6.0/src/Makefile.am macchanger-1.6.0/src/mac.h macchanger-1.6.0/src/netinfo.h macchanger-1.6.0/src/maclist.h macchanger-1.6.0/src/maclist.c macchanger-1.6.0/src/Makefile.in macchanger-1.6.0/src/main.c macchanger-1.6.0/src/netinfo.c macchanger-1.6.0/configure macchanger-1.6.0/doc/ macchanger-1.6.0/doc/stamp-vti macchanger-1.6.0/doc/Makefile.am macchanger-1.6.0/doc/mdate-sh macchanger-1.6.0/doc/macchanger.texi macchanger-1.6.0/doc/version.texi macchanger-1.6.0/doc/Makefile.in macchanger-1.6.0/doc/macchanger.info macchanger-1.6.0/doc/texinfo.tex macchanger-1.6.0/Makefile.in macchanger-1.6.0/data/ macchanger-1.6.0/data/Makefile.am macchanger-1.6.0/data/wireless.list macchanger-1.6.0/data/Makefile.in macchanger-1.6.0/data/OUI.list macchanger-1.6.0/NEWS macchanger-1.6.0/AUTHORS macchanger-1.6.0/depcomp macchanger-1.6.0/README macchanger-1.6.0/tools/ macchanger-1.6.0/tools/IEEE_OUI.py macchanger-1.6.0/aclocal.m4 macchanger-1.6.0/macchanger.1 macchanger-1.6.0/missing macchanger-1.6.0/configure.in macchanger-1.6.0/install-sh macchanger-1.6.0/ChangeLog |
Décryptons les trois « switches » utilisés pour obtenir ce listing :
- f permet de dire à tar de lire un fichier; il va de soit qu’il faut donner le nom du fichier (ici, macchanger-1.6.0.tar.gz)
- t pour lister le contenu de l’archive
- z est le plus « tricky », qui changera suivant l’extension de l’archive. z invoque gzip, j invoquera bzip2; pour les autres, on préferera ajouter –xz, –lzma, –xz en switch
Bien sur, c’est surtout la taille de l’archive qui va déterminer si vous allez simplement chercher la liste ou directement extraire l’archive. Dans le cas de MAC changer, ça ne serait pas grave, et l’extraction prendrait très, très peu de temps. Pour une archive de 600Mo par contre…
En mode barbu
De manière plus générale, on a vu plus haut que file permettait, dans une certaine mesure, de déterminer le type d’un fichier. Mais il n’existe que sous Linux, une autre méthode un peu plus bourrin consiste à ouvrir le fichier dans un éditeur Héxadécimal, qui va lire en brut le fichier et vous l’afficher tel quel. C’est faisable aussi bien sous Windows que sous Linux (j’utilise Okteta sous KDE, mais wxHexEditor existe aussi), notez. Vous pourrez alors découvrir, au début du fichier, un identifiant de type réel (appelé un peu abusivement selon moi « signature »), identifiant que lit d’ailleurs file pour vous indiquer le type de fichier :
On peut voir deux choses dans le « texte » affichable : les deux lettres PK, et le type MIME vnd.oasis.opendocument.text (je passe sur le reste, très « bouillie » pour le commun des mortels, dont je fais encore partie). file se sert donc du type mime pour dire à quel format nous avons affaire. PK lui, si on se réfère à la liste des signatures, désigne une archive ZIP. Voilà pourquoi unzip se débrouille très bien avec (n’importe quel gestionnaire d’archives supportant le ZIP d’ailleurs). Pour les plus barbus, en regardant les codes hexa-décimaux c’est plus précisément la suite 50 4B 03 04 qui désigne le format ZIP (50 et 4B étant le lettres P et K en ASCII, 03 et 04 des caractères « de contrôle »). Les fichiers « iwd » utilisés par Infinity Ward pour Call of Duty 2 et 4 (et suivants un peu aussi, mais de moins en moins, au profit d’un format binaire compilé) sont d’ailleurs eux aussi ni plus ni moins que des archives ZIP, rendant la construction de mods très facile.
Pourquoi vous montrer ça ? Si la plupart du temps les gestionnaires de fichiers sous Linux se basent sur le type MIME pour déterminer le format du fichier, et donc l’application la plus a même de l’exploiter, sous Windows, l’extension (.exe, .jpg, .odt, .zip) est la seule reine pour guider le système vers l’application. Un bon moyen pour contourner certains filtres (proxys d’entreprises, censure de Windows Live Messenger sur certains formats), est donc de changer le type de fichier pour le transmettre. Si on oublie de rétablir « la vérité », on aura l’impression d’avoir un fichier pourri. Avec les risques que ça comporte : ouvrir un fichier zip avec la visionneuse de photos n’a pas beaucoup de sens par exemple, et pourrait amener, dans le cas de fichiers spécialement formés, à ouvrir une ou plusieurs brèches sur votre machine.
Masquer l’extension par défaut (ce qui est le cas de toute installation de Windows, depuis 1995) est d’ailleurs une très bonne opportunité pour les auteurs de virus, qui vont aller cacher leur programme en .jpg.exe : le .exe va donc être masqué par Windows, ne laissant affiché ce qui semble être donc une image, et si on dit aux mecs que c’est une femme à poil, il est évident que le fichier va être exécuté de nombreuses fois. Ayant toujours été un accroc aux extensions de fichiers (les anciens se souviendront probablement des fichiers que manipulaient l’amstrad CPC), J’ai toujours paramétré les Windows qui me passent sous la main pour qu’ils affichent clairement l’extension du fichier.
Si vous ne l’avez pas déjà fait, je vous invite d’ailleurs à le faire tout de suite. Méthode la plus simple, Pour Vista et suivants (utilisateurs d’XP, il est urgent soit de mettre à jour, soit de vous libérer), ouvrez le menu démarrer, et commencez à taper « Options des dossiers », il apparaîtra bien vite dans les résultats de recherche. En cliquant dessus, il vous ouvrira la fameuse fenêtre, et dans l’onglet Affichage, dans la liste les paramètres avancés, déroulez jusqu’à trouver la ligne « masquer l’extension de fichier dont le type est connu », qui est cochée par défaut:
Décochez-là, validez, et hop, l’explorateur affichera dès lors systématiquement l’extension, connue ou pas, si elle est présente évidemment (il est tout a fait possible de n’avoir que des fichiers sans extensions, mais ça rend leur utilisation bien plus compliquée). Dans cette même liste, recherchez la ligne « Ouvrir l’explorateur dans un processus séparé », ça n’a rien à voir avec le sujet principal du billet, mais ça sera toujours un poil de stabilité de gagné pour votre Windows (une fenêtre récalcitrante, sur un dossier réseau par exemple, ne bloquera plus les autres fenêtres ou le bureau).
Voilà ça y est, c’est fini
Maintenant, si vous n’arrivez pas à obtenir les informations que vous voulez sur vos fichiers, je ne peux plus rien faire pour vous 🙂