tags des fichiers audio
-
- Messages : 446
- Inscription : mar. 25/mai/2010 17:24
- Localisation : Bnei Brak, Israel
tags des fichiers audio
Bonjour
je sais que j'ai deja pose la question ici, mais comme je n'ai pas compris la reponse, je me permet de la reformuler
je cree un programme qui gere les tags des fichiers audio, tel que nom d'artiste, d'album etc
le probleme c'est comment manipuler ces details. on m'a conseille la librairie tag lib, mais je n'ai pas compris quoi en faire. sur le forum anglais quelqun a mis un exemple qui ne marche pas apparement avec la version de tag lib telechargeable, et je suis completement confus.
si quelqun pourrait me donner un petit exemple (je ne demande pas qu'on me mache le boulot, juste un petit exemple), je lui en serais tres recconnaissant
merci
je sais que j'ai deja pose la question ici, mais comme je n'ai pas compris la reponse, je me permet de la reformuler
je cree un programme qui gere les tags des fichiers audio, tel que nom d'artiste, d'album etc
le probleme c'est comment manipuler ces details. on m'a conseille la librairie tag lib, mais je n'ai pas compris quoi en faire. sur le forum anglais quelqun a mis un exemple qui ne marche pas apparement avec la version de tag lib telechargeable, et je suis completement confus.
si quelqun pourrait me donner un petit exemple (je ne demande pas qu'on me mache le boulot, juste un petit exemple), je lui en serais tres recconnaissant
merci
Re: tags des fichiers audio
Donne un lien vers cette lib stp
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
-
- Messages : 446
- Inscription : mar. 25/mai/2010 17:24
- Localisation : Bnei Brak, Israel
Re: tags des fichiers audio
Je ne vois pas trop en quoi cette lib est compatible PB mais j'ai une solution trouvé sur codeArchive :
A toi de l'examiner et de l'adapter pour tes besoin mais j'ai testé et ça marche. (j'ai modifié le tag d'un morceau)
Code : Tout sélectionner
; German forum: http://www.purebasic.fr/german/archive/viewtopic.php?t=1350&highlight=
; Author: Momo (corrected by J-The-Grey, updated for PB4.00 by blbltheworm)
; Date: 14. June 2003
; OS: Windows
; Demo: Yes
OpenWindow(1,12,12,300,250,"ID3 Infos:",#PB_Window_ScreenCentered|#PB_Window_SystemMenu)
AboutText.s="Programmer: Moritz Wagner" + Chr(13) + Chr(13) + Chr(169) + " 2003 by Moritz Wagner"+Chr(13)+"Programmed in Pure Basic" + Chr(13) + Chr(13) + "Contact: Wagnergitti@vr-web.de"
File.s=OpenFileRequester("Bitte Wählen sie eine MP3 Datei aus die ID3 V1 Tags enthält","","MP3 Tracks (*.MP3)|*.mp3;Alle (*.*)|*.*",0)
If File<>""
If ReadFile(0,File)
MemPointer = AllocateMemory(128) ; 128 byte reservieren
If MemPointer
FileSeek(0,Lof(0)-128)
ReadData(0,MemPointer, 128) ; die letzten 128 byte der Datei auslesen
; Debug mempointer
CloseFile(0)
header$ = PeekS(MemPointer, 3)
If header$ = "TAG" ; 3 Zeichen
songtitle$ = Trim(PeekS(MemPointer + 3,30)) ; 30 Zeichen
artist$ = Trim(PeekS(MemPointer + 33,30)) ; 30 Zeichen
album$ = Trim(PeekS(MemPointer + 63,30)) ; 30 Zeichen
year$ = Trim(PeekS(MemPointer + 93, 4)) ; 4 Zeichen
comment$ = Trim(PeekS(MemPointer + 97,30)) ; 30 Zeichen
genre = PeekB(MemPointer + 127) ; 1 Zeichen
CreateGadgetList(WindowID(1))
TextGadget(7,10,10,80,20,"Titel:")
TextGadget(8,10,40,80,20,"Künstler: ")
TextGadget(9,10,70,80,20,"Album: ")
TextGadget(10,10,100,80,20,"Jahr: ")
TextGadget(11,10,130,80,20,"Kommentar: ")
TextGadget(12,10,160,80,20,"Genre: ")
StringGadget(0,80,10,200,20,songtitle$)
StringGadget(1,80,40,200,20,artist$)
StringGadget(2,80,70,200,20,album$)
StringGadget(3,80,100,200,20,year$)
StringGadget(4,80,130,200,20,comment$)
StringGadget(5,80,160,200,20,Str(genre))
ButtonGadget(6,20,190,70,30,"About")
ButtonGadget(13,120,190,70,30,"OK")
EndIf
EndIf
EndIf
Else
MessageRequester("Error","Bitte Wählen Sie eine MP3 Datei aus!",0)
EndIf
Repeat
eventid = WaitWindowEvent()
If eventid = #PB_Event_CloseWindow
Ende=1
EndIf
If eventid = #PB_Event_Gadget
If EventGadget()=6
MessageRequester("About",AboutText,OK)
EndIf
If EventGadget()=13
songtitle.s=GetGadgetText(0)
artist.s=GetGadgetText(1)
album.s=GetGadgetText(2)
year.s=GetGadgetText(3)
comment.s=GetGadgetText(4)
genre=Val(GetGadgetText(5))
If OpenFile(0,File)
MemPointer = AllocateMemory(128)
If MemPointer
FileSeek(0,Lof(0)-128)
PokeS(MemPointer,header$, 3)
; 3 Zeichen
PokeS(MemPointer+3,songtitle.s,30) ; 30 Zeichen
PokeS(MemPointer+33,artist.s,30) ; 30 Zeichen
PokeS(MemPointer+63,album.s,30) ; 30 Zeichen
PokeS(MemPointer+93,year.s,4) ; 4 Zeichen
PokeS(MemPointer+97,comment.s,30) ; 30 Zeichen
PokeB(MemPointer + 127,genre) ; 1 Zeichen
WriteData(0,MemPointer, 128)
CloseFile(0)
; Debug songtitle
EndIf
EndIf
EndIf
EndIf
Until Ende=1
End
; IDE Options = PureBasic v4.00 (Windows - x86)
; Folding = -
; EnableXP
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
-
- Messages : 446
- Inscription : mar. 25/mai/2010 17:24
- Localisation : Bnei Brak, Israel
Re: tags des fichiers audio
Merci effectivement ca marche mais pas pour les fichiers wma. de plus j'ai reussi seulement a lire les tags et pas a les ecrire
Re: tags des fichiers audio
=> je pesais que tu voulais que tagguer des mp3... Les autres formats .. mystère.
sinon pour l'écriture, as tu essayé d'ouvrir un fichier mp3 avec le programme, de modifier un des champs puis de le fermer.
ensuite en ré-ouvrant tu t'apercevras que le contenu du champ a bien été gardé. En tout cas ça a fonctionné pour moi.
sinon pour l'écriture, as tu essayé d'ouvrir un fichier mp3 avec le programme, de modifier un des champs puis de le fermer.
ensuite en ré-ouvrant tu t'apercevras que le contenu du champ a bien été gardé. En tout cas ça a fonctionné pour moi.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
-
- Messages : 446
- Inscription : mar. 25/mai/2010 17:24
- Localisation : Bnei Brak, Israel
Re: tags des fichiers audio
oui j'ai fais cela et ca n'a pas marche
je suis sous win 7 peut etre que c'est un probleme. si j'ai bien compris il y a un trus qui s'apelle id3 qui a change
avant c'etait id1 et id2. donc il faut un code de id3. sur celui que tu m'as mis c'ect ecrit id1 je crois
bref je suis desespere
je suis sous win 7 peut etre que c'est un probleme. si j'ai bien compris il y a un trus qui s'apelle id3 qui a change
avant c'etait id1 et id2. donc il faut un code de id3. sur celui que tu m'as mis c'ect ecrit id1 je crois
bref je suis desespere

-
- Messages : 471
- Inscription : dim. 23/déc./2007 18:10
Re: tags des fichiers audio
Salut.
Tu trouveras peut-être ton bonheur ici : http://fr.wikipedia.org/wiki/ID3
Regardes bien le 1er tableau : Structure des métadonnées ID3v1
0_____3____Identifiant "TAG" <- Le Header
3____30____Titre de la chanson
33___30____Nom de l'interprète
63___30____Nom de l'album
93____4____Année de parution
97___30____Commentaire sur la chanson
127___1____Genre musical
Maintenant regardes le code :
header$ = PeekS(MemPointer, 3)
If header$ = "TAG" ; 3 Zeichen
songtitle$ = Trim(PeekS(MemPointer + 3,30)) ; 30 Zeichen
artist$ = Trim(PeekS(MemPointer + 33,30)) ; 30 Zeichen
album$ = Trim(PeekS(MemPointer + 63,30)) ; 30 Zeichen
year$ = Trim(PeekS(MemPointer + 93, 4)) ; 4 Zeichen
comment$ = Trim(PeekS(MemPointer + 97,30)) ; 30 Zeichen
genre = PeekB(MemPointer + 127) ; 1 Zeichen
Pour simplifier, imagines que ton "Header" démarre à 0 et qu'il prend 3 octets (3 cases mémoire : 0,1,2), donc la prochaine valeur "Titre de la chanson" sera 3 et prend 30 octets etc...
Bref! les valeurs s'additionnent en fonction de la place qu'elle prend mémoire pour trouver la valeur suivante.
Les tags se trouvent à la fin du fichier et prennent 128 octets de place, c'est pour cela qu'il y a cette ligne : FileSeek(0,Lof(0)-128)
Par rapport à la fin du fichier, on recule pour trouver le "T" de TAG.
Si tu as du mal à comprendre, lis la procedure FileSeek.
Les Peeks te permettent de récupérer les valeurs, les Pokes eux te permettent de modifier ces valeurs.
Le code chez moi fonctionne pour les mp3.
Pour les wma, c'est une autre histoire.
[EDIT]D'ailleurs en lisant moins entre les lignes du côté de wikipedia, j'ai perdu mon temps à t'expliquer un truc pour rien :
Ensuite le programme cette fois-ci, à bien ouvert le fichier mp3 et lu les infos du titre.
Tu trouveras peut-être ton bonheur ici : http://fr.wikipedia.org/wiki/ID3
Regardes bien le 1er tableau : Structure des métadonnées ID3v1
0_____3____Identifiant "TAG" <- Le Header
3____30____Titre de la chanson
33___30____Nom de l'interprète
63___30____Nom de l'album
93____4____Année de parution
97___30____Commentaire sur la chanson
127___1____Genre musical
Maintenant regardes le code :
header$ = PeekS(MemPointer, 3)
If header$ = "TAG" ; 3 Zeichen
songtitle$ = Trim(PeekS(MemPointer + 3,30)) ; 30 Zeichen
artist$ = Trim(PeekS(MemPointer + 33,30)) ; 30 Zeichen
album$ = Trim(PeekS(MemPointer + 63,30)) ; 30 Zeichen
year$ = Trim(PeekS(MemPointer + 93, 4)) ; 4 Zeichen
comment$ = Trim(PeekS(MemPointer + 97,30)) ; 30 Zeichen
genre = PeekB(MemPointer + 127) ; 1 Zeichen
Pour simplifier, imagines que ton "Header" démarre à 0 et qu'il prend 3 octets (3 cases mémoire : 0,1,2), donc la prochaine valeur "Titre de la chanson" sera 3 et prend 30 octets etc...
Bref! les valeurs s'additionnent en fonction de la place qu'elle prend mémoire pour trouver la valeur suivante.
Les tags se trouvent à la fin du fichier et prennent 128 octets de place, c'est pour cela qu'il y a cette ligne : FileSeek(0,Lof(0)-128)
Par rapport à la fin du fichier, on recule pour trouver le "T" de TAG.
Si tu as du mal à comprendre, lis la procedure FileSeek.
Les Peeks te permettent de récupérer les valeurs, les Pokes eux te permettent de modifier ces valeurs.
Le code chez moi fonctionne pour les mp3.
Pour les wma, c'est une autre histoire.
[EDIT]D'ailleurs en lisant moins entre les lignes du côté de wikipedia, j'ai perdu mon temps à t'expliquer un truc pour rien :
[EDIT2]Ce programme n'a pas marché pour un autre mp3, donc je l'ai ouvert avec un éditeur Hexa, et il n'y avait aucunes infos, j'ai donc ajouté moi-même le "TAG" et derrière un titre bidon.Wikipédia a écrit :Elle consiste en un espace de 128 octets placés à la fin du fichier. Les 3 premiers octets commencent par la chaîne « TAG », cela permet de trouver le début des informations par les lecteurs MP3. Le reste des octets est partagé entre les différents champs d'informations.
Ensuite le programme cette fois-ci, à bien ouvert le fichier mp3 et lu les infos du titre.
Re: tags des fichiers audio
Geo Trouvpatou a écrit : [EDIT2]Ce programme n'a pas marché pour un autre mp3, donc je l'ai ouvert avec un éditeur Hexa, et il n'y avait aucunes infos, j'ai donc ajouté moi-même le "TAG" et derrière un titre bidon.
Ensuite le programme cette fois-ci, à bien ouvert le fichier mp3 et lu les infos du titre.
il suffit donc, de tester la présence de "TAG" , et de faire selon

-
- Messages : 446
- Inscription : mar. 25/mai/2010 17:24
- Localisation : Bnei Brak, Israel
Re: tags des fichiers audio
super. j'ai compris comment lire les tags
mais je n'arrive toujours pas a les ecrire
mais je n'arrive toujours pas a les ecrire
- Progi1984
- Messages : 2659
- Inscription : mar. 14/déc./2004 13:56
- Localisation : France > Rennes
- Contact :
Re: tags des fichiers audio
Juste pour infos, tu as la lib id3Lib (http://code.google.com/p/rwrappers/wiki/RWid3Lib)
avec son wrapper et les exemples (http://code.google.com/p/rwrappers/sour ... unk/id3Lib)
avec son wrapper et les exemples (http://code.google.com/p/rwrappers/sour ... unk/id3Lib)
Librairies & Applications : https://www.purebasic.fr/french/viewtop ... f=8&t=6220
Site Web : https://rootslabs.net
Site Web : https://rootslabs.net
-
- Messages : 471
- Inscription : dim. 23/déc./2007 18:10
Re: tags des fichiers audio
Exactement et c'est d'ailleurs ce qui est fait avec le : If header$ = "TAG" ,mais c'est le programme qui est mal foutu, puisque que l'interface se dessine correctement uniquement si le mot TAG est présent, mais quand ce n'est pas le cas alors on n'entre pas dans la condition et donc l'interface ne se dessine pas et cela donne l'impression que le programme est bloqué.Dobro a écrit :il suffit donc, de tester la présence de "TAG" , et de faire selon
Parce que mieux conçu, sur un fichier non taggué, on pourrait ajouter nos infos.
Pour modifier les infos Jojo, c'est pareil que les lire.
Voici le code :
Code : Tout sélectionner
If OpenFile(0,File)
MemPointer = AllocateMemory(128)
If MemPointer
FileSeek(0,Lof(0)-128)
PokeS(MemPointer,header$, 3) ; 3 Zeichen
PokeS(MemPointer+3,songtitle.s,30) ; 30 Zeichen
PokeS(MemPointer+33,artist.s,30) ; 30 Zeichen
PokeS(MemPointer+63,album.s,30) ; 30 Zeichen
PokeS(MemPointer+93,year.s,4) ; 4 Zeichen
PokeS(MemPointer+97,comment.s,30) ; 30 Zeichen
PokeB(MemPointer + 127,genre) ; 1 Zeichen
WriteData(0,MemPointer, 128)
CloseFile(0)
; Debug songtitle
EndIf
EndIf
Comme on sait que les tags sont stockés à la fin du fichier sur une longueur de 128 octets on prend donc : Taille totale du fichier - 128 octets grâce à : Lof(0)-128
On sait qu'au début on doit avoir le mot TAG.
En sachant qu'un caractère prend 1 octet donc TAG = 3 caractères = 3 octets d'où
PokeS(MemPointer,header$, 3)
Actuellement header$ vaut TAG, mais tu aurais pu aussi coder en dur comme ceci :
PokeS(MemPointer,"TAG", 3)
Cela aurait donné le même résultat.
Et étant donné que les 1ère infos sont du texte (String) on utilise PokeS.
Quand on lit Wikipédia, pour la dernière info il est dit :
C'est pour cela que cette fois-ci pour la dernière donnée, on met : PokeBLes différents genre musicaux sont définis par une valeur numérique de 0 à 79. Le logiciel Winamp a étendu cette liste jusqu'à 147.
Avec Peek (Moyen mnémotechnique : Tu PIQUEs la valeur) tu récupères une valeur en mémoire, avec Poke tu modifies une valeur en mémoire.
Mais plutôt que de te casser la tête utilise le wrapper de Progi1984.
-
- Messages : 446
- Inscription : mar. 25/mai/2010 17:24
- Localisation : Bnei Brak, Israel
Re: tags des fichiers audio
merci beaucoup les gars, j'ai presque tout compris
en fait la premiere version de id3 stockait les tags dans les 128 deniers bits du fichier mp3.
la deuxieme version stock au debut et sans limite de taille.
donc on fait une verification si le fichier commence par id3 c'est la 2eme version et si a la fin il y a TAG c'est la 1ere
pour changer les tags a la fin, c'est tres facile, il y a juste a remplacer les derniers 128 bits
le mystere est comment remplacer les tags dans la deuxieme version, et comme aujourd'hui tout est dans la 2eme (en tout cas dans win 7), il faut trouver une solution. le probleme est que puisque les tags n'ont pas une longueur predefini et de plus ne sont pas dand un ordre predefini, il faut donc trouver une astuce pour les gerer. (en effet, dans la 2eme version, pour entrer le nom de l'album par exemple on met tout simplement TALM (ou qqchose comme ca), suivi d'un signe bizzarre suivi du nom de l'album.
bref, en fait les tags sont facilement voyables en ouvrant le fichier mp3 dans notepad, l'editeur de texte
bon, si qqelqun a une idee, il serait gentil de m'en faire participer
en fait la premiere version de id3 stockait les tags dans les 128 deniers bits du fichier mp3.
la deuxieme version stock au debut et sans limite de taille.
donc on fait une verification si le fichier commence par id3 c'est la 2eme version et si a la fin il y a TAG c'est la 1ere
pour changer les tags a la fin, c'est tres facile, il y a juste a remplacer les derniers 128 bits
le mystere est comment remplacer les tags dans la deuxieme version, et comme aujourd'hui tout est dans la 2eme (en tout cas dans win 7), il faut trouver une solution. le probleme est que puisque les tags n'ont pas une longueur predefini et de plus ne sont pas dand un ordre predefini, il faut donc trouver une astuce pour les gerer. (en effet, dans la 2eme version, pour entrer le nom de l'album par exemple on met tout simplement TALM (ou qqchose comme ca), suivi d'un signe bizzarre suivi du nom de l'album.
bref, en fait les tags sont facilement voyables en ouvrant le fichier mp3 dans notepad, l'editeur de texte
bon, si qqelqun a une idee, il serait gentil de m'en faire participer
Re: tags des fichiers audio
J'ai ouvert à mp3 avec un editeur hexadécimal.
Le fichier commence comme ça :
ceci est suivi du commentaire qui lui peut être très long.
puis une autre série en hexa
etc...
On observe que chaque fin de champ se termine par [FF FE] sauf le dernier qui est [FF FB]
ceci sont précédés par d'autres valeur hexa et par des mots clés comme TCOP pour copyright, TYER pour Year etc...
Donc je me dis que ce qui compte ce n'est pas forcément le nombre de caractères mais ces valeurs hexa et ces mots clés qui déterminent la taille des champs. (champ auteur, champ commentaire etc..)
C'est unidée à creuser je pense.
Le fichier commence comme ça :
Code : Tout sélectionner
4944330300000001135D434F4D4D000048C8000001656E67FFFE0000FFFE
puis une autre série en hexa
Code : Tout sélectionner
00760054414C4200000029000001FFFE
On observe que chaque fin de champ se termine par [FF FE] sauf le dernier qui est [FF FB]
ceci sont précédés par d'autres valeur hexa et par des mots clés comme TCOP pour copyright, TYER pour Year etc...
Donc je me dis que ce qui compte ce n'est pas forcément le nombre de caractères mais ces valeurs hexa et ces mots clés qui déterminent la taille des champs. (champ auteur, champ commentaire etc..)
C'est unidée à creuser je pense.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
-
- Messages : 446
- Inscription : mar. 25/mai/2010 17:24
- Localisation : Bnei Brak, Israel
Re: tags des fichiers audio
ca a l'air une bonne idee, mais comment utiliser cette info?
de plus je ne comprends pas comment changer les tags, puisqu'ils ne suivent pas un ordre predefinis, et donc comment dire a mon programme quoi lire?
la wrapper de progi1984 a l'air interressante mais je n'ai pas reussi a l'utiliser. un message d'erreur s'affiche
de plus je ne comprends pas comment changer les tags, puisqu'ils ne suivent pas un ordre predefinis, et donc comment dire a mon programme quoi lire?
la wrapper de progi1984 a l'air interressante mais je n'ai pas reussi a l'utiliser. un message d'erreur s'affiche