[C] Récupérer l'ID3 d'un mp3 ?

Récupérer l'ID3 d'un mp3 ? [C] - Programmation

Marsh Posté le 19-01-2002 à 16:04:21    

Salut,
je souhaite récupérer l'ID3 d'un mp3. Quelqu'un sait-il comment faire, y a-t-il une structure qui détient toutes les infos et il n'y a plus qu'à la lire ?
merci

Reply

Marsh Posté le 19-01-2002 à 16:04:21   

Reply

Marsh Posté le 19-01-2002 à 16:05:20    

antsite a écrit a écrit :

Salut,
je souhaite récupérer l'ID3 d'un mp3. Quelqu'un sait-il comment faire, y a-t-il une structure qui détient toutes les infos et il n'y a plus qu'à la lire ?
merci  




 
suffit de connaitre la spec de l'ID3 pour savoir quel bytes lire...  
 
A+


---------------
What is popular is not always right, what is right is not always popular :D
Reply

Marsh Posté le 19-01-2002 à 16:11:28    

je suis un peu newbie et je sais pas trop comment faire !

Reply

Marsh Posté le 19-01-2002 à 16:15:17    

darklord22 a écrit a écrit :

 
 
suffit de connaitre la spec de l'ID3 pour savoir quel bytes lire...  
 
A+  




 
 
oui enfin bon c'est plus facile à dire qu'à faire car si c'est enfantin avec l'ID3v1 bonne chance pour l'ID3v2 !
 
une seule adresse : http://www.id3.org

Reply

Marsh Posté le 19-01-2002 à 16:25:26    

Ca m'a l'air un peu compliqué, je crois que je vais laisser tomber, enfin merci quand même
a+
 :hello:

Reply

Marsh Posté le 19-01-2002 à 16:28:38    

antsite a écrit a écrit :

Ca m'a l'air un peu compliqué, je crois que je vais laisser tomber, enfin merci quand même
a+
 :hello:  




 
bah te décourage pas ... ;)
c'est bête ...


---------------
What is popular is not always right, what is right is not always popular :D
Reply

Marsh Posté le 19-01-2002 à 16:45:13    

Je n'avais pas réellement de projet précis en tête, je souhaitais juste essayer, alors c pas vital pour moi pour l'instant  :)

Reply

Marsh Posté le 19-01-2002 à 17:40:03    

un bout de code extrait d'un soft à moi :

Code :
  1. TMP3TAG mp3TAG;
  2.      memset((void *)&mp3TAG,0,sizeof(mp3TAG));
  3.      TFileStream  *fMP3 = new TFileStream(strSource,fmOpenRead);
  4.      if(fMP3==NULL) return result;
  5.      fMP3->Seek(-128,soFromEnd);
  6.      if(fMP3->Read((void *)&mp3TAG,sizeof(mp3TAG))<sizeof(mp3TAG)) {
  7.           delete fMP3;
  8.           return result;
  9.      }
  10.      delete fMP3;


 
donc ceci remplit la structure. Et pour la definition de la structure :
 

Code :
  1. struct TMP3TAG {
  2.      char TAG[3];
  3.      char Title[30];
  4.      char Author[30];
  5.      char Album[30];
  6.      char Year[4];
  7.      char Comment[30];
  8.      char Genre;
  9. };
  10. char TMP3Genres[][20]={
  11.      "Blues",
  12.      "Classic Rock",
  13.      "Country",
  14.      "Dance",
  15.      "Disco",
  16.      "Funk",
  17.      "Grunge",
  18.      "Hip-Hop",
  19.      "Jazz",
  20.      "Metal",
  21.      "New Age",
  22.      "Oldies",
  23.      "Other",
  24.      "Pop",
  25.      "R&B",
  26.      "Rap",
  27.      "Reggae",
  28.      "Rock",
  29.      "Techno",
  30.      "Industrial",
  31.      "Alternative",
  32.      "Ska",
  33.      "Death Metal",
  34.      "Pranks",
  35.      "Soundtrack",
  36.      "Euro-Techno",
  37.      "Ambient",
  38.      "Trip-Hop",
  39.      "Vocal",
  40.      "Jazz+Funk",
  41.      "Fusion",
  42.      "Trance",
  43.      "Classical",
  44.      "Instrumental",
  45.      "Acid",
  46.      "House",
  47.      "Game",
  48.      "Sound Clip",
  49.      "Gospel",
  50.      "Noise",
  51.      "AlternRock",
  52.      "Bass",
  53.      "Soul",
  54.      "Punk",
  55.      "Space",
  56.      "Meditative",
  57.      "Instrumental Pop",
  58.      "Instrumental Rock",
  59.      "Ethnic",
  60.      "Gothic",
  61.      "Darkwave",
  62.      "Techno-Industrial",
  63.      "Electronic",
  64.      "Pop-Folk",
  65.      "Eurodance",
  66.      "Dream",
  67.      "Southern Rock",
  68.      "Comedy",
  69.      "Cult",
  70.      "Gangsta",
  71.      "Top 40",
  72.      "Christian Rap",
  73.      "Pop/Funk",
  74.      "Jungle",
  75.      "Native American",
  76.      "Cabaret",
  77.      "New Wave",
  78.      "Psychadelic",
  79.      "Rave",
  80.      "Showtunes",
  81.      "Trailer",
  82.      "Lo-Fi",
  83.      "Tribal",
  84.      "Acid Punk",
  85.      "Acid Jazz",
  86.      "Polka",
  87.      "Retro",
  88.      "Musical",
  89.      "Rock & Roll",
  90.      "Hard Rock",
  91.      "Folk",
  92.      "Folk/Rock",
  93.      "National Folk",
  94.      "Swing",
  95.      "Fast Fusion",
  96.      "Bebob",
  97.      "Latin",
  98.      "Revival",
  99.      "Celtic",
  100.      "Bluegrass",
  101.      "Avantgarde",
  102.      "Gothic Rock",
  103.      "Progressive Rock",
  104.      "Psychedelic Rock",
  105.      "Symphonic Rock",
  106.      "Slow Rock",
  107.      "Big Band",
  108.      "Chorus",
  109.      "Easy Listening",
  110.      "Acoustic",
  111.      "Humour",
  112.      "Speech",
  113.      "Chanson",
  114.      "Opera",
  115.      "Chamber Music",
  116.      "Sonata",
  117.      "Symphony",
  118.      "Booty Bass",
  119.      "Primus",
  120.      "Porn Groove",
  121.      "Satire",
  122.      "Slow Jam",
  123.      "Club",
  124.      "Tango",
  125.      "Samba",
  126.      "Folklore",
  127.      "Ballad",
  128.      "Power Ballad",
  129.      "Rhythmic Soul",
  130.      "Freestyle",
  131.      "Duet",
  132.      "Punk Rock",
  133.      "Drum Solo",
  134.      "Acapella",
  135.      "Euro-House",
  136.      "Dance Hall"
  137. };

 

[edtdd]--Message édité par antp--[/edtdd]


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 19-01-2002 à 17:48:36    

et bien merci beaucoup !

Reply

Marsh Posté le 19-01-2002 à 18:35:06    

un truc que j'ai oublié :  
les chaines qui sont dans la structure ne sont pas terminée par un \0, donc faut faire gaffe quand on les exploite.


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 19-01-2002 à 18:35:06   

Reply

Marsh Posté le 19-01-2002 à 18:41:34    

Ben moi j'avais utilisé un truc tout fait :
http://home.swipnet.se/grd/mp3info/mp3doc.html

Reply

Marsh Posté le 19-01-2002 à 19:06:21    

antsite a écrit a écrit :

et bien merci beaucoup !  




 
Le problème c'est que le bout de code qu'il t'a refilé ne gère que l'ID3v1.0,  Fait attention car si tu ne fais pas attention  le champ track de l'ID3v1.1 va être perdu et le "comment" que tu vas obtenir  va être foireux.

Reply

Marsh Posté le 19-01-2002 à 23:37:56    

j'utilise pourtant l'id3v1.1 avec cette fonction...  
 
ouais c'est le dernier caractère du comment en fait.
dans mon code plus loin je l'extrayais de la structure, mais j'ai pas mis cette partie-là dans mon post, pour pas effrayer les lecteurs :
 
strDest=StringReplace(strDest,"%7",(AnsiString)((int)((unsigned char)mp3TAG.Comment[sizeof(mp3TAG.Comment)-1])),TReplaceFlags()<<rfIgnoreCase<<rfReplaceAll);
 
il remplace %7 par le track number qui est dans le dernier octet du commentaire.


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 20-01-2002 à 17:34:21    

je vais vous dire un truc. Je vous admire vous programmeurs C/C++. Faut vraiment etre balèze pour faire des trucs pareils ...
 
Chapeau (c pas ironique).
 
A+


---------------
What is popular is not always right, what is right is not always popular :D
Reply

Marsh Posté le 20-01-2002 à 18:11:55    

darklord22 a écrit a écrit :

je vais vous dire un truc. Je vous admire vous programmeurs C/C++. Faut vraiment etre balèze pour faire des trucs pareils ...
 
Chapeau (c pas ironique).
 
A+  




 
Le tout c'est pas d'etre baleze c'est de comprendre ;)
 
Mais bon pour comprendre faut etre baleze hein :D
 
(je parle sans connaissance de causes, je fais pas partie des masters du C/C++)


---------------
Super.
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed