tag jaudiotagger java mp3 metadata id3

java - jaudiotagger - Cómo leer etiquetas de archivos MP3



id3 tag editor (5)

Los últimos 128 bytes de un archivo mp3 contienen metadatos sobre el archivo mp3. Puede escribir un programa para leer los últimos 128 bytes ...

ACTUALIZAR:

Implementación de ID3v1

La información se almacena en los últimos 128 bytes de un MP3. La etiqueta tiene los siguientes campos y las compensaciones que se dan aquí son de 0-127.

Field Length Offsets Tag 3 0-2 Songname 30 3-32 Artist 30 33-62 Album 30 63-92 Year 4 93-96 Comment 30 97-126 Genre 1 127

WARINING- Esta es solo una manera fea de obtener metadatos y puede que no esté allí porque el mundo se ha movido a id3v2. id3v1 es en realidad obsoleto. Id3v2 es más complejo que esto, por lo que idealmente debería usar las bibliotecas existentes para leer datos de id3v2 de mp3. Solo poniendo esto por ahí.

Quiero tener un programa que lea metadatos de un archivo MP3. Mi programa también debería poder editar estos metadatos. ¿Que puedo hacer?

Tengo que buscar algún código de código abierto. Pero tienen código; Pero no es una idea simplificada para mi trabajo que van a hacer.

Cuando leí más, descubrí que los metadatos se almacenaban en el propio archivo MP3. Pero todavía no puedo hacer una idea completa de mi programa para bebés.

Cualquier ayuda será apreciada; Con un programa o muy idea (como un algoritmo). :)


Para J2ME (que es con lo que estaba luchando), aquí está el código que funcionó para mí ...

import java.io.InputStream; import javax.microedition.io.Connector; import javax.microedition.io.file.FileConnection; import javax.microedition.lcdui.*; import javax.microedition.media.Manager; import javax.microedition.media.Player; import javax.microedition.media.control.MetaDataControl; import javax.microedition.midlet.MIDlet; public class MetaDataControlMIDlet extends MIDlet implements CommandListener { private Display display = null; private List list = new List("Message", List.IMPLICIT); private Command exitCommand = new Command("Exit", Command.EXIT, 1); private Alert alert = new Alert("Message"); private Player player = null; public MetaDataControlMIDlet() { display = Display.getDisplay(this); alert.addCommand(exitCommand); alert.setCommandListener(this); list.addCommand(exitCommand); list.setCommandListener(this); //display.setCurrent(list); } public void startApp() { try { FileConnection connection = (FileConnection) Connector.open("file:///e:/breathe.mp3"); InputStream is = null; is = connection.openInputStream(); player = Manager.createPlayer(is, "audio/mp3"); player.prefetch(); player.realize(); } catch (Exception e) { alert.setString(e.getMessage()); display.setCurrent(alert); e.printStackTrace(); } if (player != null) { MetaDataControl mControl = (MetaDataControl) player.getControl("javax.microedition.media.control.MetaDataControl"); if (mControl == null) { alert.setString("No Meta Information"); display.setCurrent(alert); } else { String[] keys = mControl.getKeys(); for (int i = 0; i < keys.length; i++) { list.append(keys[i] + " -- " + mControl.getKeyValue(keys[i]), null); } display.setCurrent(list); } } } public void commandAction(Command cmd, Displayable disp) { if (cmd == exitCommand) { notifyDestroyed(); } } public void pauseApp() { } public void destroyApp(boolean unconditional) { } }


Puede usar la API de Java de apache tika para el análisis de metadatos de MP3 como título, álbum, género, duración, compositor, artista, etc. Los archivos jar necesarios son tika-parsers-1.4, tika-core-1.4.

Programa de muestra:

package com.parse.mp3; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import org.apache.tika.exception.TikaException; import org.apache.tika.metadata.Metadata; import org.apache.tika.parser.ParseContext; import org.apache.tika.parser.Parser; import org.apache.tika.parser.mp3.Mp3Parser; import org.xml.sax.ContentHandler; import org.xml.sax.SAXException; import org.xml.sax.helpers.DefaultHandler; public class AudioParser { /** * @param args */ public static void main(String[] args) { String fileLocation = "G:/asas/album/song.mp3"; try { InputStream input = new FileInputStream(new File(fileLocation)); ContentHandler handler = new DefaultHandler(); Metadata metadata = new Metadata(); Parser parser = new Mp3Parser(); ParseContext parseCtx = new ParseContext(); parser.parse(input, handler, metadata, parseCtx); input.close(); // List all metadata String[] metadataNames = metadata.names(); for(String name : metadataNames){ System.out.println(name + ": " + metadata.get(name)); } // Retrieve the necessary info from metadata // Names - title, xmpDM:artist etc. - mentioned below may differ based System.out.println("----------------------------------------------"); System.out.println("Title: " + metadata.get("title")); System.out.println("Artists: " + metadata.get("xmpDM:artist")); System.out.println("Composer : "+metadata.get("xmpDM:composer")); System.out.println("Genre : "+metadata.get("xmpDM:genre")); System.out.println("Album : "+metadata.get("xmpDM:album")); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } catch (SAXException e) { e.printStackTrace(); } catch (TikaException e) { e.printStackTrace(); } } }


jd3lib es una biblioteca de Java que maneja archivos MP3 y sus etiquetas. Probablemente un punto de partida útil.