ID3 tagy a Linux

Sekcia: Programovanie 22.09.2010 | 18:25
dash   Návštevník
Zdravim,

V C++ pouzivam kniznicu id3lib - http://id3lib.sourceforge.net/
Tuto kniznicu pouzivam na ziskavanie ID3 tagov. Pri ID3 tag verzii 1 nemam problem, avsak pri 2.4 problem mam. Pomocou programu EasyTag pridam tag a neviem ho precitat s touto kniznicou. Vrati mi prazdny String. Myslel som, ze problem je v EasyTag a tak som stiahol JAudioTagger a nakodil som si vlastny tagovac ID3 ver 2.4 tagov. Moj tagovac alebo teda JAudioTagger vedel perfektne citat tagy aj po EasyTagu a opacne. Len s kniznicou id3lib pod C++ mi to neslo. Tu je kod

ID3_Tag *myTag;
ID3_Frame *myFrame;

char *art=(char *)malloc(1000);

myTag=new ID3_Tag;
myTag->Link ("/home/test/db/TT.mp3", ID3TT_ID3V2);

if ( myFrame = myTag->Find ( ID3FID_LEADARTIST, ID3FN_TEXTENC, ID3TE_ASCII ) )
{
myFrame->Field ( ID3FN_TEXT ).Get ( art, 1000);
}

printf("Artist '%s'",art);


Neviete v com robim chybu? Preco mi to tato kniznica nevie precitat?
Standarde by som si to nakodil v Jave, ale je to serverova aplikacia a vykon je potrebny, preto sa trapim s C++.

Vdaka.
Dash
    • Re: ID3 tagy a Linux 04.10.2010 | 00:45
      Avatar johnny.ha ArchLinux  Používateľ
      #include <iostream>
      #include <cstring>

      #include <id3.h>
      #include <id3/field.h>
      #include <id3/id3lib_frame.h>
      #include <id3/misc_support.h>
      #include <id3/tag.h>

      using namespace std;

      int main(int argc, char * argv[])
      {

      //const char moje[] = "mp3.mp3";

      if(argc!=2)
      return 0;

      string ko;

      ID3_Tag tag;
      tag.Link(argv[1], ID3TT_ALL);

      char *retazec = ID3_GetTitle(&tag);

      ko.append(retazec);

      delete retazec;

      cout << ko << endl;

      return 0;


      }