Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Da gibts einige Libs, aber imo keine wirklich gute. Ich bin jetzt bei Jid3 gelandet, das funktioniert im Großen und Ganzen, es werden nur nicht immer alle Tags korrekt gelesen (aber 99%).
Davor hab ich v.a. Java Mp3 probiert, aber das hat kaum Dokumentation und nur eine API-Doc wo fast nichts drinsteht. Auslesen ging dabei gut, Tags schreiben hab ich nicht gebacken gekriegt...
danke für die Antworten. Ich wollte jetzt mal Jid3 ausprobieren und habe mir die Sourcen da runtergeladen, leider sind das nur die Sourcen also die einzelnen java-files. Gibts da kein jar-file dazu? - (ich verwende eclipse mit windows)
Ich habe jetzt folgenden Code mit einem Beispiel-mp3-song ausprobiert:
Code:
public class ID3Test
{
public static void main(String[] args)throws Exception
{
// the file we are going to read
File oSourceFile = new File("Move_Along.mp3");
// create an MP3File object representing our chosen file
MediaFile oMediaFile = new MP3File(oSourceFile);
// any tags read from the file are returned, in an array, in an order which you should not assume
ID3Tag[] aoID3Tag = oMediaFile.getTags();
// let's loop through and see what we've got
// (NOTE: we could also use getID3V1Tag() or getID3V2Tag() methods, if we specifically want one or the other)
for (int i=0; i < aoID3Tag.length; i++)
{
// check to see if we read a v1.0 tag, or a v2.3.0 tag (just for example..)
if (aoID3Tag[i] instanceof ID3V1_0Tag)
{
ID3V1_0Tag oID3V1_0Tag = (ID3V1_0Tag)aoID3Tag[i];
// does this tag happen to contain a title?
if (oID3V1_0Tag.getTitle() != null)
{
System.out.println("Title = " + oID3V1_0Tag.getTitle());
}
else if (oID3V1_0Tag.getAlbum() != null)
{
System.out.println("Album = " + oID3V1_0Tag.getAlbum());
}
else if (oID3V1_0Tag.getGenre() != null)
{
System.out.println("Genre = " + oID3V1_0Tag.getGenre());
}
else if (oID3V1_0Tag.getArtist() != null)
{
System.out.println("Artist = " + oID3V1_0Tag.getArtist());
}
else if (oID3V1_0Tag.getYear() != null)
{
System.out.println("Year = " + oID3V1_0Tag.getYear());
}
// etc.
}
else if (aoID3Tag[i] instanceof ID3V2_3_0Tag)
{
ID3V2_3_0Tag oID3V2_3_0Tag = (ID3V2_3_0Tag)aoID3Tag[i];
// check if this v2.3.0 frame contains a title, using the actual frame name
if (oID3V2_3_0Tag.getTIT2TextInformationFrame() != null)
{
System.out.println("Title = " + oID3V2_3_0Tag.getTIT2TextInformationFrame().getTitle());
}
else if (oID3V2_3_0Tag.getAlbum() != null)
{
System.out.println("Album = " + oID3V2_3_0Tag.getAlbum());
}
else if (oID3V2_3_0Tag.getArtist() != null)
{
System.out.println("Artist = " + oID3V2_3_0Tag.getArtist());
}
else if (oID3V2_3_0Tag.getGenre() != null)
{
System.out.println("Genre = " + oID3V2_3_0Tag.getGenre());
}
/* else if (oID3V2_3_0Tag.getYear() != null)
{
System.out.println("Year = " + oID3V2_3_0Tag.getYear());
}*/
// but check using the convenience method if it has a year set (either way works)
try
{
System.out.println("Year = " + oID3V2_3_0Tag.getYear()); // reads TYER frame
}
catch (ID3Exception e)
{
// error getting year.. if one wasn't set
System.out.println("Could get read year from tag: " + e.toString());
}
// etc.
}
}
}
}
Leider gibt der fast keine Informationen aus, obwohl wenn ich nämlich das mp3-file im Windows-MediaPlayer betrachte, dann sind unter den Kategorien Genre, Album, Year, etc. schon Informationen eingetragen. Ich bräuchte nämlich Titel, Albumname, Genre, Jahr, Artist (Soweit sie halt immer bei dem mp3-Song vorhanden sind).