ID3 Tags auslesen - Hilfe! Nichts funktioniert!
-
Hallo leute
naja wie gesagt ich will den id3 tag (möglichst id3v2) von mp3s auslesen.
ich habe schon alle möglichen klassen benutzt. ID3lib lässt sich nicht compiliern (posssibly COFF und sowas).. und wenn ich die mit coff2omf ändere dann hat er immer linkerfehler mit ID3_Tag usw!
Dann hab ich schon ne Delphiklasse namens TID3v2 benutzt. schön schön wenn man sie installiert ist sie nicht in der palette drin. kA wie man die benutzt.
dann mp3fileinfo von codeproject -> benutzt id3lib, gleiches problem.
oh man!
suche hab ich natürlich auch schon benutzt sonst hätt ich die anderen lösungen gar nich gefunden!hilfäää

danke im voraus für eure antworten!
-
Vielleicht fängst du mit V1 an-> das sind die letzten 128 Bytes der Datei. Wenn vorhanden steht in den ersten 3 Bytes TAG drin.
Das sollte doch erstmal gehen.
-
hä? ^^
sorry aber ich versteh nich ganz was du meinst!
wenn ich schon was mache dann will ich das aktuelle?!
-
ID3v1 ist aktuell. Wird sogar relativ häufig verwendet. Ist ausserdem einfacher fürn Anfang. Ansonsten kann ich dazu nur sagen: Wer Hilfe will muss mit Infos rausrücken. Ich bin mir sicher die Deplhi-Klasse hat eine Dokumentation und ausserdem ist
dann hat er immer linkerfehler mit ID3_Tag usw!
keine Fehlermeldung die mir vom BCB bekannt ist. Code kann ich in der Kristallkugel auch nicht entdecken...
-
Wer nicht hören kann.....
Allgemein:
Es ist immer wieder erstaunlich, dass sich Anfänger eine hochkomplexe Aufgabenstellung suchen, anstatt kleine Schritte zu machen.
-
Eher symptomatisch, denn man kann sich als Anfänger den Aufwand nicht wirklich abschätzen... (o;
-
wieso nennt ihr mich anfänger? ihr wisst doch eigentlich gar nicht was ich kann und was nicht.
werd das denn mal ausprobieren mit id3v1
außerdem war keine doku dabei - das is ja das tolle
-
Blackhawk schrieb:
wieso nennt ihr mich anfänger? ihr wisst doch eigentlich gar nicht was ich kann und was nicht.
Reine Beurteilung anhand deiner hier gelieferten Fehleranalyse und der Vorgehensweise (klappt nicht, next...) ... Ich prophezeie dir, dass sich das Problem lösen liesse. Aber nicht mit den Informationen die du hier losgelassen hast...
Blackhawk schrieb:
werd das denn mal ausprobieren mit id3v1
außerdem war keine doku dabei - das is ja das tolleAlso bei der id3lib ist definitv Doku dabei. Und da ich nicht weiss, welche Kompo du einsetzen wolltest, kann ich dir auch nicht sagen, dass auch dort Doku bei ist. Obwohl ich überzeugt bin, dass es entweder Doku gibt oder das Ding äusserst intuitiv ist...
-
hallo,
selbst ich als anfänger kam mit dem id3 v1 sehr gut zurecht . die docu ist auch sehr gut beschrieben dafür brauchst du auch sicher keine dll für solange du keine grösseren sachen wie lyric einfügen willst.leider habe ich schon nächte daran verbracht die id3 dll mit meinem cbuilder zum laufen zu bringen wie in meinem anderen beitrag zu lesen war doch ohne erfolg dafür mit vielen systemabstürzen.
vieleicht findet sich ja noch jemand der es selbst mal probiert ob es überhaupt geht mit dem borland wie im forum gelesen habe gab es da schon mehr mit problemen.
aber als anfänger kämpfst du dich nur cm für cm nach vorn. aus diesem grund wäre ich um jeden tip froh um eine kleine demoapplication für meinen cbuilder zu erhalten. es muss auch nicht kostenlos sein.danke
waldsee
-
hallo!
jetzt hab ich mir ne ID3v1 klasse geschrieben.
ich hab den pascal code von delphi gesehen und der ist ja fast identisch mit VCL.
jedenfalls wars kein problem rauszulesen, was wie funktioniert.herausgekommen
ist diese klasse:ID3v1.h:
#include <vcl.h> class TID3v1 { private: char buffer[128]; String mp3; public: TID3v1(String file); String Copy(char *chChar,int iStart,int iEnd); void GetID3(); String ID,Title,Album,Artist,Year,Comment; byte Genre; };ID3v1.cpp:
#include "ID3v1.h" TID3v1::TID3v1(String file) { mp3=file; } String TID3v1::Copy(char *chChar,int iStart,int iEnd) { String temp; for(int i=iStart;i<iEnd;i++) { temp+=chChar[i]; //temp = Zeichen 1-10 von chChar } return temp; } void TID3v1::GetID3() { TFileStream *fs=new TFileStream(mp3,fmOpenRead); //MP3 öffnen try { fs->Seek(-128,soFromEnd); //Die letzten 128 Zeichen einlesen fs->Read(buffer,128); ID=Copy(buffer,0,3); Title=Copy(buffer,3,30); // ID3 Tags auslesen Artist=Copy(buffer,33,30); Album=Copy(buffer,63,30); Year=Copy(buffer,93,4); Comment=Copy(buffer,97,30); Genre=(unsigned)Copy(buffer,127,1).c_str(); } catch(...) { } delete fs; }mit der funktion in meinem programm ruf ich die tags auf:
void __fastcall TfrmMain::GetID3v1(String file) { TID3v1 *id3v1=new TID3v1(file); id3v1->GetID3(); MessageBox(Handle,(id3v1->ID+"\n" +id3v1->Title+"\n" +id3v1->Artist+"\n" +id3v1->Album+"\n" +id3v1->Year+"\n" +id3v1->Comment+"\n" +id3v1->Genre).c_str(),"",MB_OK); delete id3v1; }Kompilieren lässt sich alles ohne fehler.
wenn ich jetzt eine mp3 damit auslese, kommt die messagebox mit inhalt:
"TAG
Stille Nacht, Heilige Nacht224"
reichlich komisch oder?
hab die mp3 nochmal zusätzlich mit nem Tageditor angeguckt -> Artist usw sind schon drinnen! weiß jemand wie ich das anstellen kann, damit das angezeigt wird?hier der link zu dem pascalcode.
http://www.delphipraxis.net/topic17654,0,asc,0.html@waldseeduo: nee leider kann ich dir da nicht helfen, habs ja selbst verzweifelt versucht!
-
Als erstes fällt schon mal auf, dass du gar nicht prüfst, ob überhaupt ein ID3Tag vorhanden ist
Als zweites kannst du das mit einem einfachen debuggen herausbekommen, woran das liegt. Debugge einfach die Zuweisungen.
Als drittes
ich hab den pascal code von delphi gesehen und der ist ja fast identisch mit VCL.
VCL Visual Component Library?? Dekphi benutzt die gleiche VCL wie C++Builder. Die VCL ist größtenteils sogar in Delphi geschrieben. In was programmiert du ?? VCL oder C/C++??
-
Der Fehler liegt in deiner Methode zum auslesen:
Artist=Copy(buffer,33,30);
Album=Copy(buffer,63,30);
Year=Copy(buffer,93,4);
Comment=Copy(buffer,97,30);Du willst den Artist von Position 33 bis 30 auslesen?? Das geht nicht. Du gibt nicht die Anzahl der Bytes zum lesen an, sondern die Position bis zu der gelesen wird.
-
ahhh!!
danke...
wie dumm kann man denn sein..
danke nochmal ^^[edit] hab jetzt da aber noch n paar fragen:
Kannst du mir dann bitte noch sagen, wie ich aus der Zahl 24 (=Rock) die Genre rauskrieg?
Wie kann ich die Länge einer MP3 herausfinden? (Sekunden)
Wie les ich die Tracknummer aus?vielen dank
-
hallo,
schau mal im id3v1 tag ist folgendes festgelegt. die generes sind nach nummern unterteilt und ein byte gross
The following genres is defined in ID3v1
grüsse
waldseeEdit:
Zitate bitte auf das Notwendigste beschränken. Danke!
-
Vieleicht hift das
http://de.wikipedia.org/wiki/ID3-Tag
-
Hey Leute! Danke für diesen Thread.. hat mir sehr geholfen ...
Ich hab folgendes Problem mit meinem programm...
Ich lese nur Artist und Titel aus...
Ich kann irgendwie keine mp3s von meiner externen festplatte (E:) auslesen..
Von C: und
(intern) gehts ...
Es kommt immer ne Execption der Klasse EFOpenError ... Keine Ahnung was das heißt .. ^^
mfg
Pelipe
-
Hab den Fehler schon gefunden ... (sry bin grad sehr müde .. ^^)
Also ich hatte das mp3 file grad bei winamp laufen .. deswegen konnte er das nich auslesen ...