ERLEDIGT
NEIN
NEIN
ANTWORTEN
2
2
ZUGRIFFE
953
953
EMPFEHLEN
-
Hallo,
ich versuche nun schon seit Tagen den Id3V1 Tag von Mp3s auszulesen.
Dazu hab ich fogenden code geschrieben:
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.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; }
Ich hoffe, dass Ihr mir sagen könnt wo mein Fehler liegt.
MFG, VLT
-
31.01.04 22:11 #2
- Registriert seit
- Nov 2002
- Ort
- Altdorf bei Nürnberg
- Beiträge
- 3.027
Hi,
benutz bitte nicht
sondernCode :1
fgets(play1.album,31,datei_ptr);
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:
Jetzt hast du in ver[0] die ID des Genres.Code :1 2
char ver[1]; fread(ver, 1, 1, datei_ptr);
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:
Grunde: Manche Leute halten sich wohl für etwas besseres und benutzen zum auffüllenCode :1 2
char sArtist[31]; sArtist[30] = '\0';
der 30 Bytes keine Binär-Nullen sondern Leerzeichen (ASCII 32).
Hier steht übrigens alles über den ID3v1 Tag:
http://www.id3.org/easy.htmlGeändert von Fabian Hofmann (31.01.04 um 22:14 Uhr)
-
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
-
Denkfehler zwischen ID3v1 & ID3v1.1?
Von Radhad im Forum PHPAntworten: 16Letzter Beitrag: 16.10.06, 10:00 -
XML-Tags auslesen
Von Soapp im Forum Javascript & AjaxAntworten: 4Letzter Beitrag: 23.09.06, 08:59 -
ID3 Tags auslesen
Von theindra im Forum .NET CaféAntworten: 3Letzter Beitrag: 30.09.05, 23:28 -
MP3 - Tags auslesen
Von bastiglasl im Forum .NET ArchivAntworten: 1Letzter Beitrag: 31.01.05, 21:36 -
ID3 Tags von MP3s auslesen
Von undertaker im Forum Coders TalkAntworten: 9Letzter Beitrag: 29.04.04, 09:28





Zitieren
Login






