Question Comment lire les tags mp3 en shell?


Est-il possible de lire les balises mp3 d'un fichier depuis le shell? Quelque chose comme: mp3tags MyFile.mp3 author devrait afficher la balise author d'un fichier mp3.


41
2017-12-08 13:04


origine




Réponses:


Vous pouvez aussi utiliser ffprobe qui fait partie de ffmpeg.

sudo apt-get install ffmpeg
ffprobe file.mp3

Si vous ne voulez pas d’autres informations, comme la longueur de la piste, etc., vous pouvez combiner la sortie avec grep:

ffprobe file.mp3 2>&1 | grep -A90 'Metadata:'

Ou pour obtenir uniquement l'auteur:

ffprobe -loglevel error -show_entries format_tags=artist -of default=noprint_wrappers=1:nokey=1 file.mp3

Vous pouvez sélectionner d'autres balises en les séparant par une virgule, par exemple format_tags=title,album.


Je voulais rechercher un mot-clé dans tous les fichiers mp3 d'un dossier. Le dossier contenait 486 fichiers, il est donc devenu intéressant de savoir laquelle des solutions mentionnées ici est la plus rapide. Voici la boucle que j'ai utilisée:

# sudo apt-get install ffmpeg lltag eyed3 mp3info id3v2 libimage-exiftool-perl libid3-tools id3tool

keyword='fill_me_in'

getTitleFF()   { ffprobe "$1" 2>&1 | sed -E -n 's/^ *title *: (.*)/\1/p'; }
getTitleLL()   { lltag --show-tags title "$1" | sed -nE 's/^  TITLE=(.*)/\1/p'; }
getTitleEyed() { eyeD3 2>&1 "$1" | grep 'title'; }
getTitleInfo() { mp3info -p %t "$1"; }
getTitleId3()  { id3v2 -l "$1" | sed -nE 's/^TIT2 \([^)]*\): (.*)/\1/p'; }
getTitleExif() { exiftool -title -b "$1"; }
getTitleId3i() { id3info "$1" | sed -n 's/^=== TIT2 \(.*\): //p'; }
getTitleTool() { id3tool "$1" | sed -n 's|^Song Title:\t||p'; }

for prog in FF LL Eyed Info Id3 Exif Id3i Tool; do
    echo "=== getTitle${prog} ==="
    time \
    for file in *.mp3; do 
        if "getTitle${prog}" "$file" | grep -q "$keyword"; then 
            echo "$file"
        fi
    done
done

Remarques:

  • lltag et mp3info ne trouvez pas de titre, car les fichiers que j'utilisais avaient des balises ID3v2, voir le commentaire de @ s-prasanth: Comment lire les tags mp3 en shell?
  • eyeD3 est problématique à utiliser par programmation, car il utilise des codes de couleur (audace).
  • eyeD3 et aussi id3v2 (mais uniquement pour les balises ID3 v1) renvoyer le titre et l'artiste sur la même ligne, ce qui complique davantage les choses; donc getTitleEyed et parfois getTitleId3 retourne à la fois le titre et l'artiste, donc ne copiez pas ces fonctions.
  • getTitleId3 ne fonctionnera que pour les tags ID3 v2, car id3v2 a des formats différents pour les tags ID3v1- et ID3v2, c'est-à-dire

    Title  :                                 Artist:    
    

    vs. ID3v2:

    TIT2 (Title/songname/content description): 
    
  • Comme seul programme de ces 5 eyeD3 imprime un avertissement rouge pour deux des fichiers:

    Invalid mode/bitrate combination for layer II
    No ID3 v1.x/v2.x tag found!
    

    Il semble que ces deux fichiers ont des balises ID3v1, car ces deux fichiers sont les seuls où lltag et mp3info peut obtenir un titre. Je me demande si c'est un bug dans eyeD3 comme aucun autre programme mentionné ici n'a un problème avec ces fichiers ...

Résultats (temps réel):

 Program  | Version    | Time / s
----------+------------+-----------
 exiftool | 10.25      | 49.5 ± 0.5
 lltag    | 0.14.5     | 41   ± 1.0
 ffprobe  | 3.1.3-1+b3 | 33   ± 0.5
 eyeD3    | 0.6.18     | 24   ± 0.5
 id3info  | 3.8.3      | 4.2  ± 0.1
 id3v2    | 0.1.12     | 2.9  ± 0.1
 id3tool  | 1.2a       | 1.7  ± 0.1
 mp3info  | 0.8.5a     | 1.4  ± 0.1

En ce qui concerne le temps, le gagnant est id3tool (mp3info est plus rapide, mais ne fonctionne pas avec ID3 v2). id3v2 est aussi assez rapide, mais le getTitleId3 La fonction aurait besoin d’être ajustée pour fonctionner également avec les tags ID3v1, ce qui peut au pire le ralentir de 2.


32
2018-04-07 17:40



Sensationnel. Cela fait des années que je suis un utilisateur influent exiftool et je ne savais pas qu'il pouvait aussi lire les métadonnées pour les fichiers audio! La solution ffprobe (ou avprobe dans mon cas) est également géniale, merci. C'est la meilleure réponse! - marlar
Merci pour votre travail gigantesque! Certains de ces outils ne sont pas disponibles dans mon gestionnaire de paquets dans Fedora. Pourriez-vous s'il vous plaît inclure id3info dans votre comparaison? - Vytenis Bivainis
ffmpeg a un autre avantage: ça marche avec aac/m4a des dossiers. D'autres outils ne semblent pas (ou savez-vous autrement?). Je vais également suggérer de chercher son FORMAT section, pour éviter les cas où un flux a aussi un title etc.: ffprobe -loglevel error -show_entries format -i "$1" 2>&1 | sed -E -n 's|^TAG:title=(.*)$|\1|p'. - Jonathan Y.
@JonathanY. Vous avez raison, l'audio codé AAC stocké dans un fichier contenant M4A contient des métadonnées non-ID3 et ne peut donc être lu que par ffmpeg et en plus exiftool, hors de la sélection dans ma réponse. - mxmlnkn
Les FLAC ont un autre format de métadonnées différent de MP4 / M4A, à savoir les métadonnées de commentaire vorbis, mais les balises peuvent également être lues avec exiftool ou ffprobe. L'outil plus spécialisé pour ce travail serait metaflac --list du flac paquet. Pour ogg exiftool fonctionne également, mais il y a aussi vorbiscomment -l du vorbis-tools paquet. Bizarrement vorbiscomment et metaflac ne peut pas être échangé, même si FLAC et OGG ont tous deux des métadonnées de vorbis? - mxmlnkn


Ok, j'ai trouvé un programme par moi-même. Il s'appelle mp3info et est installé par

sudo apt-get install mp3info

Pour obtenir des balises mp3 uniques à partir d’un fichier, il faut appeler

mp3info -p %a file.mp3

ce qui donne à l'artiste du fichier. Le% a signifie que l'on veut avoir l'artiste et qu'il y a d'autres clés pour les autres tags.


25
2017-12-08 13:12



Informations supplémentaires: Il existe 4 normes différentes de balises mp3 id3v1, id3v2.2 (obsolète), id3v2.3, id3v2.4 en.wikipedia.org/wiki/ID3. Un fichier peut avoir des balises v1 et / ou v2 (Yes v1 et v2 peuvent coexister, mais v2.x et v2.y ne peuvent pas coexister). Je crois que la version 2.3 est la plus utilisée. Selon ibiblio.org/mp3info (Voir Todo) Les tags v2 ne sont pas supportés par mp3info. Vous voudrez peut-être regarder id3v2 - Il peut éditer / ajouter v2 et afficher v1 et v2. Si vous n'aimez pas la façon dont il affiche les tags, vous pouvez écrire un script qui s'exécute id3v2 et traite la sortie de manière appropriée. - S Prasanth
@ SPrasanth comment faire pour afficher une balise spécifique. Par exemple: seul l'artiste d'un fichier mp3? - Gowtham Gopalakrishnan
@SPrasanth je l'ai eu. Merci j'utilise -R drapeau avec grep pour obtenir la sortie spécifiée. - Gowtham Gopalakrishnan
Lorsque vous imprimez le titre de la piste avec% t, il l’imprime. - Tulains Córdova


Vous pouvez utiliser eyed3. D'abord, depuis un terminal, installez:

sudo apt-get install eyed3

Ensuite, lancez:

eyeD3 song.mp3

Combinez cela avec grep pour obtenir des balises spécifiques sur une seule ligne.

eyeD3 song.mp3 | grep artist

(pour supprimer tous les tags mp3, voir ICI)


8
2018-03-02 02:58



J'ai essayé ceci et la commande à utiliser est eyeD3, avec un D majuscule;). Mais j'ai trouvé un autre outil, qui correspond mieux à mes besoins, nommé mp3info. Cela peut générer des balises mp3 sans avoir besoin d'utiliser grep, ce que je préfère. - red_trumpet
eyeD3 fonctionne mieux pour moi car il fonctionne avec id3v2, mais @red_trumpet a raison, la commande devrait être eyeD3 ne pas eyed3 - bmaupin


Je préfère utiliser id3v2, tapez simplement id3v2 -l somefile.mp3. Vous pouvez également voir la page de manuel id3v2 pour une utilisation plus spécifique.


6
2018-04-07 19:19



C'est génial et fonctionne très bien - jpo38
Devrait certainement être la meilleure réponse, tous les autres outils ont des problèmes de dépendances sur certaines distributions. - Sergio


Vous pouvez essayer exiftool (Lire et écrire des méta-informations dans des fichiers).

"ExifTool est une bibliothèque Perl indépendante de la plate-forme, plus une application en ligne de commande pour lire, écrire et éditer les méta-informations dans une grande variété de fichiers. ExifTool prend en charge de nombreux formats de métadonnées, dont EXIF, GPS, IPTC, XMP, JFIF, GeoTIFF, ICC Profil, Photoshop IRB, FlashPix, AFCP et ID3, ainsi que les notes de fabricant de nombreux appareils photo numériques de Canon, Casio, FLIR, FujiFilm, GE, HP, JVC / Victor, Kodak, Leaf, Minolta / Konica-Minolta, Motorola, Nikon, Nintendo, Olympus / Epson, Panasonic / Leica, Pentax / Asahi, Phase One, Reconyx, Ricoh, Samsung, Sanyo, Sigma / Foveon et Sony. " - ExifTool par Phil Harvey

Voici un exemple de la commande:

exiftool test.mp3 
ExifTool Version Number         : 10.00
File Name                       : test.mp3
Directory                       : .
File Size                       : 8.2 MB
File Modification Date/Time     : 2016:03:02 21:44:58+01:00
File Access Date/Time           : 2016:04:06 21:34:01+02:00
File Inode Change Date/Time     : 2016:03:02 21:45:36+01:00
File Permissions                : rw-rw-r--
File Type                       : MP3
File Type Extension             : mp3
MIME Type                       : audio/mpeg
MPEG Audio Version              : 1
Audio Layer                     : 3
Sample Rate                     : 44100
Channel Mode                    : Stereo
MS Stereo                       : Off
Intensity Stereo                : Off
Copyright Flag                  : False
Original Media                  : False
Emphasis                        : None
VBR Frames                      : 9544
VBR Bytes                       : 8467680
ID3 Size                        : 115419
Band                            : Tech N9ne Collabos
Album                           : Strangeulation (Deluxe Edition)
Composer                        : Tech N9ne Collabos
Genre                           : Rap & Hip-Hop
Copyright                       : 2014 Strange Music, Inc
Title                           : American Horror Story (feat. Ces Cru)
Artist                          : Tech N9ne Collabos
Track                           : 10
Year                            : 2014
Comment                         : 
Lyrics                          : 
Private                         : (Binary data 8192 bytes, use -b option to extract)
Picture MIME Type               : image/jpeg
Picture Type                    : Front Cover
Picture Description             : 
Picture                         : (Binary data 104371 bytes, use -b option to extract)
Audio Bitrate                   : 272 kbps
Date/Time Original              : 2014
Duration                        : 0:04:09 (approx)

2
2017-08-07 00:45





Check-out lltag Si vous recherchez une solution qui ne supporte pas uniquement le format mp3 / ID3.

Installez-le avec:

sudo apt-get install lltag

pour voir toutes les balises avec elle: (-S est pour le spectacle)

lltag -S somefile.mp3

pour voir certaines balises avec elle:

lltag --show-tags artist,album,title,number somefile.mp3

1