tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
2
ZUGRIFFE
953
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Vlt Vlt ist offline Grünschnabel
    Registriert seit
    Jan 2004
    Beiträge
    2
    Hallo,
    ich versuche nun schon seit Tagen den Id3V1 Tag von Mp3s auszulesen.
    Dazu hab ich fogenden code geschrieben:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    
    struct id3 {
                   char  tag[3];
                   char  title[31];
                   char  artist[31];
                   char  album[31];
                   char  year[5];
                   char  comment[31];
                   int     genre;
                   int     track;
        }  play1;
     
    /* szPath enthält den PAfd zu der .mp3-Datei */
    id3 readid3(char *szPath) {
        
            FILE    *datei_ptr;
            char    ver[2];
            
            datei_ptr = fopen(szPath, "r+b");
            
            if ( datei_ptr != 0) {
                
                if (fseek(datei_ptr,-128,SEEK_END) == 0) {
     
                                                                                         fgets(play1.tag,4,datei_ptr);  
                    fgets(play1.title,31,datei_ptr);
                    fgets(play1.artist,31,datei_ptr);
                    fgets(play1.album,31,datei_ptr);
                    fgets(play1.year,5,datei_ptr);
                    fgets(play1.comment,31,datei_ptr);
                    fgets(ver,2,datei_ptr);
                    play1.genre = atoi(ver);
    }
                else 
                    printf("Zeiger konnte nicht gesetzt werden!");
                
                fclose(datei_ptr);
            }
            
            else
                printf("Fehler beim öffnen der Datei!");
                    
            return play1;
                
        }
    Wenn ich mir die Struktur play1 mit printf anzeigen lasse werden Titel, Artist, Album, Jahr und Kommentar richtig angezeigt, aber für Genre wird 0 ausgegeben. Ich bin aber sicher, dass für Genre ein Wert gesetzt ist, da bei WinAmp das Genre richtig angezeigt wird.
    Ich hoffe, dass Ihr mir sagen könnt wo mein Fehler liegt.

    MFG, VLT
     

  2. #2
    Registriert seit
    Nov 2002
    Ort
    Altdorf bei Nürnberg
    Beiträge
    3.027
    Hi,

    benutz bitte nicht
    Code :
    1
    
    fgets(play1.album,31,datei_ptr);
    sondern
    Code :
    1
    
    fread(play1.album, 30, 1, datei_ptr);

    Sprich: 30 Bytes auslesen, und nicht 31 und diese auch binär.
    Geht in dem Fall zwar auch mit Text, aber schönder ist es binär

    Dann: Nachdem du deine 125 Bytes ausgelesen hast, bleibt noch genau eines Übrig,
    nicht zwei.
    Und diesen dann auch im binär-Modus:
    Code :
    1
    2
    
    char ver[1];
    fread(ver, 1, 1, datei_ptr);
    Jetzt hast du in ver[0] die ID des Genres.

    Ps: WinAmp benutzt einige zusätzliche Genres, die nicht in den 80 "Standard" Genres
    drin sind!

    Pps: Wenn du die Zeichenketten initialiserst, setzte auf Position 30 die binäre null:
    Code :
    1
    2
    
    char sArtist[31];
    sArtist[30] = '\0';
    Grunde: Manche Leute halten sich wohl für etwas besseres und benutzen zum auffüllen
    der 30 Bytes keine Binär-Nullen sondern Leerzeichen (ASCII 32).

    Hier steht übrigens alles über den ID3v1 Tag:
    http://www.id3.org/easy.html
    Geändert von Fabian Hofmann (31.01.04 um 22:14 Uhr)
     

  3. #3
    Vlt Vlt ist offline Grünschnabel
    Registriert seit
    Jan 2004
    Beiträge
    2
    Danke für deine HIlfe!
    Jetzt klappt es so, wie ich es mir vorgestellt habe.

    Dan mach ich mich mal an die zweite Version der ID3 Tags

    MFG, Vlt
     

Ähnliche Themen

  1. Denkfehler zwischen ID3v1 & ID3v1.1?
    Von Radhad im Forum PHP
    Antworten: 16
    Letzter Beitrag: 16.10.06, 10:00
  2. XML-Tags auslesen
    Von Soapp im Forum Javascript & Ajax
    Antworten: 4
    Letzter Beitrag: 23.09.06, 08:59
  3. ID3 Tags auslesen
    Von theindra im Forum .NET Café
    Antworten: 3
    Letzter Beitrag: 30.09.05, 23:28
  4. MP3 - Tags auslesen
    Von bastiglasl im Forum .NET Archiv
    Antworten: 1
    Letzter Beitrag: 31.01.05, 21:36
  5. ID3 Tags von MP3s auslesen
    Von undertaker im Forum Coders Talk
    Antworten: 9
    Letzter Beitrag: 29.04.04, 09:28