ffmpeg : gestion des metadata dans un MP3

Utilisation du programme ffmpeg pour manipuler les metadata des fichiers MP3. Cela impactera directement les TAG des mp3 et les informations présentes dans iTunes et autres bibliothèques multimédia.

Exemple de fichier metadata.txt :

;FFMETADATA1
title=bike\\shed
;this is a comment
artist=FFmpeg troll team

[CHAPTER]
TIMEBASE=1/1000
START=0
#chapter ends at 0:01:00
END=60000
title=chapter \#1
[STREAM]
title=multi\
line

Autre exemple :

;FFMETADATA1
title=NRJ MEGAMIX 10.06.1990 [B!] \#mcXtra
artist=NRJ
album_artist=Cédric
album=mindCast XTRA
encoded_by=Cédric / JSide_fr
genre=Musique
comment=Mettez les ringards au placard, c'est Megamix qui redémarre. Dimitrouille le roi de la bidouille pour un panaché très estival du meilleur de la dance musique de l'année 90. C'est Megamix du 10 juin 1990\
\
00:06 [JINGLE] Top horaire Megamix\
00:35 [SPEAK] Dimitri\
01:19 Art Of Noise - Art Of Love\
07:15 Diana Brown & Barrie K Sharpe - The Masterplan (Extended Version)\
11:47 Dimitri - Summer Vibes\
16:48 Digital Underground - Freaks Of The Industry\
20:50 Barry White - I Wanna Do It Good To Ya\
25:14The Chimes - Stronger Together (Red Zone Mix)\
30:52 Blaze - So Special (So So Mix)\
33:58 The Rock Posse Featuring Fonda Rae - Do You Want My Love? (Smooth R&B Mix)\
37:58 Satoshi Tomiie Featuring Arnold Jarvis - And I Loved You (12" Red Zone Vocal Mix)\
47:07 New Order - World In Motion (Remix)\
48:44 Prince - The Future (Remix)\
52:17 [SPEAK] Dimitri\
53:12 [JINGLE] Fin\
\
+ d'infos sur http://house-revival.blogspot.com/p/nrj-club-nrj-megamix.html\
Remasterisé par Cédric @jside_fr.
copyright=NRJ
date=2019
encoder=Lavf58.20.100
WindowsiTunes (Info tab)id3v2.3id3v2.4ffmpeg keyffmpeg example
TitleTitleTIT2title-metadata title=”Adagio for Strings”
SubtitleDescription
(Video tab)
TIT3TIT3-metadata TIT3=”Op. 91″
CommentsCommentsCOMMnot implemented
Contributing artistsArtistTPE1artist-metadata artist=”Yo Yo Ma/London Symphony”
Album artistAlbum ArtistTPE2album_artist-metadata album_artist=”London Symphony”
AlbumAlbumTALBalbum-metadata album=”String Classics”
YearYearTYERdate-metadata date=”2012″
#Track NumberTRCKtrack-metadata track=”3/12″
(means track number 3 of 12)
GenreGenreTCONgenre-metadata genre=”Classical”
PublisherTPUBpublisher-metadata publisher=”London Publishing”
Encoded byTENCencoded_by-metadata encoded_by=”Telarc”
Author URLWOARnot implemented
Copyright
(Not Editable)
TCOPcopyright-metadata copyright=”℗ Telarc”
ComposersTCOMcomposer-metadata composer=”J.S. Bach”
ConductorsTPE3performer-metadata performer=”T. S. Miles”
Group descriptionGroupingTIT1TIT1-metadata TIT1=”The Classics”
Part of setDisc NumberTPOSdisc-metadata disc=”1/2″
(means disc number 1 of 2)
Initial keyTKEYTKEY-metadata TKEY=”G”
Beats-per-minuteBPMTBPMTBPM-metadata TBPM=”120″
Part of a compilationPart of a compilationTCMPcompilationnot implemented
TLANlanguage-metadata language=”eng”
TSSEencoder-metadata encoder=”iTunes v10″
lyricsvoir http://id3.org/Lyrics3v2
creation_time-metadata creation_time=“2013-05-02 22:01:04″
album-sort-metadata album-sort=“String Classics″
artist-sort-metadata artist-sort=“London Symphony″
title-sort-metadata title-sort=“Adagio for Strings″

Fichier metadata.txt vide basé sur toutes les metadata possibles gérées par ffmpeg :

;FFMETADATA1
title=
title-sort=
TIT3=
artist=
artist-sort=
album=
album-sort=
album_artist=
date=
track=
genre=
publisher=
encoded_by=
copyright=
composer=
performer=
TIT1=
disc=
TKEY=TBPM=
language=
encoder=
compilation=
lyrics=
creation_time=

La liste des genres est définie par la norme ID3. Elle est arrêtée depuis la version ID3v1

      0.Blues
      1.Classic Rock
      2.Country
      3.Dance
      4.Disco
      5.Funk
      6.Grunge
      7.Hip-Hop
      8.Jazz
      9.Metal
     10.New Age
     11.Oldies
     12.Other
     13.Pop
     14.R&B
     15.Rap
     16.Reggae
     17.Rock
     18.Techno
     19.Industrial
     20.Alternative
     21.Ska
     22.Death Metal
     23.Pranks
     24.Soundtrack
     25.Euro-Techno
     26.Ambient
     27.Trip-Hop
     28.Vocal
     29.Jazz+Funk
     30.Fusion
     31.Trance
     32.Classical
     33.Instrumental
     34.Acid
     35.House
     36.Game
     37.Sound Clip
     38.Gospel
     39.Noise
     40.AlternRock
     41.Bass
     42.Soul
     43.Punk
     44.Space
     45.Meditative
     46.Instrumental Pop
     47.Instrumental Rock
     48.Ethnic
     49.Gothic
     50.Darkwave
     51.Techno-Industrial
     52.Electronic
     53.Pop-Folk
     54.Eurodance
     55.Dream
     56.Southern Rock
     57.Comedy
     58.Cult
     59.Gangsta
     60.Top 40
     61.Christian Rap
     62.Pop/Funk
     63.Jungle
     64.Native American
     65.Cabaret
     66.New Wave
     67.Psychedelic
     68.Rave
     69.Showtunes
     70.Trailer
     71.Lo-Fi
     72.Tribal
     73.Acid Punk
     74.Acid Jazz
     75.Polka
     76.Retro
     77.Musical
     78.Rock & Roll
     79.Hard Rock

Sources : http://id3.org/id3v2.4.0-frames

Ajouter les tag définis dans le fichier metadata.txt :

ffmpeg -i in.mp3 -i metadata.txt -map_metadata 1 -c:a copy -id3v2_version 3 out.mp3

Pour Windows, ne pas oublier d'ajouter les options suivantes :

  1. id3v2_version 3
  2. write_id3v1 1

ffmpeg -i in.mp3 -i metadata.txt -map_metadata 1 -c:a copy -id3v2_version 3 -write_id3v1 1 out.mp3


Ajouter des tag dans la ligne de commande avec une image :

ffmpeg -i input.mp3 -i cover.png -c copy -map 0 -map 1 -metadata:s:v title="Album cover" -metadata:s:v comment="Cover (Front)" out.mp3

Ajouter les tag définis dans le fichier metadata.txt avec une image :

ffmpeg -i input.mp3 -i cover.png -c copy -map 0 -i metadata.txt -map_metadata 1 -c:a copy -id3v2_version 3 -write_id3v1 1 out.mp3

Par exemple, pour supprimer le tag informant le nom de l'artiste :

ffmpeg -i out.mp3 -metadata title="The Title You Want" -metadata artist="" -metadata album="Name of the Album" out2.mp3

Supprimer toutes les metadata :

ffmpeg -i input.mp3 -write_xing 0 -id3v2_version 0 out.mp3

Extraire les metadatas d'un fichier MP3 :

ffmpeg -i in.mp3 -f ffmetadata metadata.txt

Le résultat est écrit dans le fichier metadata.txt


Extraire les metadatas de tous les fichiers MP3 présents dans le dossier courant :

for f in *.mp3 ; do ffmpeg -i "$f" -f ffmetadata "${f%.*}.txt" ; done

Le résultat est écrit dans le fichier de même nom que le MP3 avec l'extension txt au lieu de mp3

Document rédigé par Cédric ABONNEL (cedricabonnel) le 27/10/2019 à 09:31.
Modifié le 27/10/2019 à 11:30.

Librement inspiré des pages suivantes :


  • informatique/cfp/ffmpeg_mp3_tag_metadata.txt
  • Dernière modification : 2023/02/28 21:02
  • de Cédric ABONNEL