Existe-t-il un moyen de lire les balises mp3 d'un fichier à partir du Shell ? Quelque chose comme : mp3tags MyFile.mp3 author
devrait afficher l'étiquette de l'auteur d'un fichier mp3.
Réponses
Trop de publicités?Vous pouvez également 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 et ainsi de suite, 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, comme 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" | sed -n 's|\x1b\[[0-9;]*mtitle[^:]*: ||p'; }
getTitleInfo() { mp3info -p %t "$1"; }
getTitleId3() { id3v2 -l "$1" | sed -nE 's/^(TIT2 \([^)]*\)|Title *): (.*)/\2/p'; }
getTitleExif() { exiftool -title -b "$1"; }
getTitleId3i() { id3info "$1" | sed -nE '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
Notes :
-
lltag
ymp3info
ne trouve pas de titre, car les fichiers que j'utilisais avaient des balises ID3v2, voir le commentaire de @s-prasanth : Comment lire les balises mp3 dans Shell ? -
eyeD3
est problématique à utiliser de manière programmatique, car elle utilise des codes de couleur (gras). -
eyeD3
et aussiid3v2
(mais seulement pour les balises ID3 v1) renvoient le titre et l'artiste sur la même ligne, ce qui complique encore les choses ; doncgetTitleEyed
et parfoisgetTitleId3
renvoient à la fois le titre et l'artiste, donc veuillez ne pas copier-coller ces fonctions. -
getTitleId3 ne fonctionnera que pour les balises ID3 v2, car
id3v2
a des formats différents pour les balises ID3v1- et ID3v2-, c'est à direTitle : Artist:
contre ID3v2 :
TIT2 (Title/songname/content description):
-
En tant que 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, parce que ces deux fichiers sont les seuls où
lltag
ymp3info
peut obtenir un titre. Je me demande si ce n'est pas un bug danseyeD3
car aucun autre programme mentionné ici n'a de problème avec ces fichiers ...
Résultats (en 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 termes de temps, le gagnant est id3tool
(mp3info est plus rapide, mais ne fonctionne pas avec ID3 v2). id3v2
est également assez rapide, mais le getTitleId3
devrait être ajustée pour fonctionner également avec les balises ID3v1, ce qui pourrait au pire la ralentir d'un facteur 2.
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 les balises mp3 d'un fichier, on doit appeler
mp3info -p %a file.mp3
qui donne l'artiste du fichier. Le %a signifie que l'on veut obtenir l'artiste et il y a d'autres clés pour les autres tags.
Vous pouvez essayer exiftool(Lire et écrire les méta-informations dans les fichiers).
"ExifTool est une bibliothèque Perl indépendante de la plate-forme ainsi qu'une application en ligne de commande pour lire, écrire et modifier les métadonnées d'une grande variété de fichiers. ExifTool prend en charge de nombreux formats de métadonnées différents, notamment EXIF, GPS, IPTC, XMP, JFIF, GeoTIFF, ICC Profile, Photoshop IRB, FlashPix, AFCP et ID3, ainsi que les notes du 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)
- Réponses précédentes
- Plus de réponses