Mp3 et Tags Id3

Mp3 et Tags Id3 - Delphi/Pascal - Programmation

Marsh Posté le 25-05-2003 à 12:55:52    

Salut,
 
J'aimerais savoir comment faire pour récupérer le contenu des tags id3 d'un fichier mp3.
 
Sous forme de tableau ? I don't know :)
 
Merci  :)

Reply

Marsh Posté le 25-05-2003 à 12:55:52   

Reply

Marsh Posté le 25-05-2003 à 12:58:48    

Faut lire les 128 derniers octets dans une structure.
 
Fonction que j'utilise dans mon soft Ant Renamer :  
 
www.antp.be/temp/ExtractID3.pas
 
(faudra faire un peu de ménage dedans pour l'utiliser)


Message édité par antp le 25-05-2003 à 13:00:16

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

Marsh Posté le 25-05-2003 à 13:04:18    

Merci mais je ne connais pas tout dans ton fichier :
 
Si j'ai un fichier mp3 (c:\media\fichier.mp3) et que je veux stocker sa taille dans une variable (longueur), l'artiste et son titre dans deux autres variables (artiste, titre), je fais comment ?

Reply

Marsh Posté le 25-05-2003 à 13:26:42    

tu déclares une variable de type TID3Info que tu passes à la fonction, ainsi que le nom de fichier, après tu utilises les champs que tu veux


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

Marsh Posté le 25-05-2003 à 14:15:58    

Il me manque des fichiers avec ce .pas ...
 
[Fatal Error] ExtractID3.pas(203): File not found: 'functions_files.dcu'

Reply

Marsh Posté le 25-05-2003 à 14:24:04    

Ouais mais ça tu t'en fous, tu le vires, comme j'ai dit faut un peu nettoyer. C'est un fichier parmis les nombreux fichiers d'un programme...  
Idem pour ce qui est dans les {$IFDEF}, tu ne dois garder que ce qui est dans les {$ELSE} vu que tu n'utilises probablement pas d'unicode...


Message édité par antp le 25-05-2003 à 14:24:23

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

Marsh Posté le 25-05-2003 à 15:15:09    

Merci bien ca marche mais j'ai encore qques petites questions...
 
Mon projet est tout simplement un lecteur mp3 ... et cela concerne l'ajout de fichiers dans une playlist. Je dois pour bien faire avoir chaque item de la liste sous forme "Artiste - Titre [LongueurPiste]". Je ne vois pas comment récupérer la longueur de chaque piste ... ou alors en ouvrant chaque fichier et avec la propriété MediaPlayer1.Lenght... mais c est tres fastidieux et tres long (j'ai testé)... Alors n'y a-t-il pas moyen de trouver cette longueur de piste via Id3 ?

Reply

Marsh Posté le 25-05-2003 à 15:18:57    

C'est pas stocké dans l'ID3, et je pense que ce n'est stocké nulle part, il faut mesurer la longueur ou la calculer. Pour la calculer il faut le bitrate, je sais pas s'il est stocké ou mesuré lui aussi :D
Pour la mesurer, il faut (je suppose) parcourir tout le fichier, mais vu que je ne connais pas plus la structure des MP3, je ne sais pas t'aider plus [:spamafote]
Mais il doit bien y avoir des tas de composants ou exemples de code qui font ça...


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

Marsh Posté le 25-05-2003 à 15:21:05    

J'ai fait ceci :
 

Code :
  1. // Ouverture d'un / plusieurs fichier(s)
  2. procedure TForm1.OuvrirClick(Sender: TObject);
  3. var
  4. i, longueur, ms, m, s: integer;
  5. ToAdd: string;
  6. begin
  7.   OpenDialog1.Execute;
  8.   for i:=0 to OpenDialog1.Files.Count-1 do
  9.     begin
  10.       Media.FileName:=OpenDialog1.Files[i];
  11.       Media.Open;
  12.       longueur:=Media.Length;
  13.       ms:=longueur div 1000;   //
  14.       m:=ms div 60;            //  Calcul de
  15.       s:=ms-m*60;              //  la longueur
  16.       if s < 10 then s:=0+s;   //
  17.       ToAdd:='[ '+IntToStr(m)+':'+IntToStr(s)+' ] '+ExtractFileName(OpenDialog1.Files[i]);
  18.       ListBox1.Items.Add(ToAdd);  // ajout final
  19.       Media.Close;
  20.     end;
  21. end;


 
Mais qu'est ce que c'est long et lent ... (avec un p4 2.4ghz ...)

Reply

Marsh Posté le 25-05-2003 à 15:23:14    

bah oui, c'est normal que ce soit lent :/
 
Sinon quand tu écris
ToAdd:='[ '+IntToStr(m)+':'+IntToStr(s)+' ] '+ExtractFileName(OpenDialog1.Files[i]);
C'est plus clair de faire
ToAdd := Format('[ %d:%.2d ] %s, [m, s, ExtractFileName(OpenDialog1.Files[i])]);


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

Marsh Posté le 25-05-2003 à 15:23:14   

Reply

Marsh Posté le 25-05-2003 à 15:25:56    

c'est lent mais je trouve pas  :whistle:  
 
Je continue mes investiguations si je trouve je fais signe  
 
:hello:

Reply

Marsh Posté le 25-05-2003 à 15:44:22    

Hum ... on remarquera que lorsqu'on fait Alt+3 sous Winamp pour voir les propriétés du fichier sélectionné, la longueur ne se trouve pas avec les propriétés Id3 mais dans le cadre MPEG infos ...
 
Reste plus qu'a trouver ou écrire une fonction pour récuperer ces infos ...
 
(G mal a la tete :D)

Reply

Marsh Posté le 25-05-2003 à 15:59:18    

Crazy-Eagle a écrit :

la longueur ne se trouve pas avec les propriétés Id3 mais dans le cadre MPEG infos ...


 
C'est ce que je disais :D idem pour le bitrate


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

Marsh Posté le 25-05-2003 à 16:13:13    

Bah ué ... j'ai trouvé des trucs sur torry's Delphi mais c'est pas tres convainquant ... tu saurais me trouver ca ?  :whistle:

Reply

Marsh Posté le 25-05-2003 à 19:49:39    

Bon j'ai trouvé une unit qui pourrait m'aider seulement c est pour delphi1 - 3 et avec la version 6 j'ai une dixaine d'erreurs ... Il y a-t-il moyen de l'adapter ?

Reply

Marsh Posté le 25-05-2003 à 19:52:58    

Ça dépend des erreurs [:spamafote]


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

Marsh Posté le 25-05-2003 à 21:56:48    

[Warning] MPGTOOLS.PAS(1361): Method 'Clear' hides virtual method of base type 'TList'
[Warning] MPGTOOLS.PAS(2555): Symbol 'FileGetAttr' is specific to a platform
[Warning] MPGTOOLS.PAS(2591): Symbol 'FileGetAttr' is specific to a platform
[Warning] MPGTOOLS.PAS(2615): Symbol 'FileGetAttr' is specific to a platform
[Error] MPGTOOLS.PAS(3156): Incompatible types: 'TList' and 'Text'
[Error] MPGTOOLS.PAS(3156): Incompatible types: 'TListAssignOp' and 'String'
[Error] MPGTOOLS.PAS(3530): Left side cannot be assigned to
[Error] MPGTOOLS.PAS(3541): Incompatible types: 'TList' and 'file'
[Error] MPGTOOLS.PAS(3541): Incompatible types: 'TListAssignOp' and 'String'
 
A mon avis ca doit rien vous dire comme ca  :lol:  
 
Des que mon ftp sera a nouveau up je vous donnerai le *.pas que vous puissiez m'aider :D
 
Merci ;)
 
 

Reply

Marsh Posté le 28-05-2003 à 11:22:00    

BlackSUn a une bonne dose de source pour lire les tags et proprietes des fichiers multimedia, contacte le en MP pour voir.


---------------
And I looked, and behold a pale horse: and his name that sat on him was Death, and Hell followed with him. Revelations 6:8
Reply

Sujets relatifs:

Leave a Replay

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