Informationen aus mp3-Song

Status
Nicht offen für weitere Antworten.

leni

Aktives Mitglied
hi,

Ist es möglich aus einem mp3-Song Informationen wie Genre, Albumname, Titel, Artist herauszuholen?

mfg
leni
 
Wenn diese Informationen dort vorhanden sind, sicher!

Google doch einfach mal nach der Spezifikation des Formats mp3.

Oder es gibt schon was fertiges in Java.
 
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...
 
Hi,

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)

leni
 
hi,

ah im dist ordner war das JID3.jar.

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).

Weißt du was hier falsch läuft?

leni
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben