J'utilise MP3SPI pour lire des fichiers MP3 dans mon application Java. Cela fonctionne très bien pour commencer et arrêter de jouer. Cependant, je voudrais être en mesure d'imprimer des étiquettes ID3 à partir des fichiers MP3.Analyser les balises ID3 à partir du fichier MP3 en utilisant MP3SPI
J'ai essayé le code suivant:
URL fileUrl = new File("song.mp3").toURI().toURL();
AudioFileFormat audioFileFormat = new MpegAudioFileReader().getAudioFileFormat(fileUrl);
Map<String, Object> properties = audioFileFormat.properties();
for (Entry<String, Object> entry : properties.entrySet())
{
System.out.println(entry.getKey() + " = " + entry.getValue());
}
Ce code lit les propriétés du fichier audio et imprime les clés et les valeurs de chacun. Cela fonctionne avec tout sauf les tags ID3. J'ai vérifié que chanson.mp3 a vraiment des étiquettes ID3. L'exécution du code ci-dessus donne le résultat suivant:
mp3.copyright = false
mp3.framesize.bytes = 1041
mp3.vbr = false
mp3.frequency.hz = 44100
mp3.framerate.fps = 38.28125
mp3.id3tag.v2 = [email protected]
mp3.channels = 2
mp3.vbr.scale = 0
mp3.version.encoding = MPEG1L3
mp3.bitrate.nominal.bps = 320000
mp3.version.layer = 3
mp3.id3tag.v2.version = 2
mp3.padding = true
mp3.id3tag.encoded = iTunes 10.6.1
mp3.header.pos = 2147
comment = TunNORM
mp3.version.mpeg = 1
mp3.mode = 0
mp3.crc = false
mp3.original = false
Selon la documentation de MP3SPI et diverses réponses ici sur Stack Overflow, il devrait également y avoir des propriétés comme genre et artiste. J'ai l'impression qu'il y a quelque chose de majeur que je n'ai pas compris, et je n'arrive pas à comprendre ce que je fais de mal. Ayant mp3.id3tag.v2 un ByteArrayInputReader
semble un peu étrange pour moi, et je ne peux pas comprendre ce que cela implique. Aussi, je me suis demandé si le fait que les tags ID3 semblent avoir été encodés avec iTunes (en regardant mp3.id3tag.encoded) a quelque chose à voir avec l'absence de sortie de tag ID3.