tags des fichiers audio
Re: tags des fichiers audio
Sans avoir testé le code, essaye Bin(TagTailleBin)
~~~~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 ne marche pas
-
- Messages : 604
- Inscription : lun. 26/avr./2010 16:14
- Localisation : S 48° 52' 31'' / O 123° 23' 33''
Re: tags des fichiers audio
Code : Tout sélectionner
Procedure BinVal(a$); - Convert a String in binary-format in numeric value
a$=Trim(UCase(a$))
If Asc(a$)='%'
a$=Trim(Mid(a$,2,Len(a$)-1))
EndIf
Result=0
*adr.Byte=@a$
For i=1 To Len(a$)
Result<<1
Select *adr\b
Case '0'
Case '1':Result+1
Default:i=Len(a$)
EndSelect
*adr+1
Next
ProcedureReturn Result
EndProcedure
-
- Messages : 446
- Inscription : mar. 25/mai/2010 17:24
- Localisation : Bnei Brak, Israel
Re: tags des fichiers audio
merci beaucoup
la fonction marche et donne une valeur qui est un peu plus grande que le tag mais jamais plus petite et jamais dans le chant
la fonction marche et donne une valeur qui est un peu plus grande que le tag mais jamais plus petite et jamais dans le chant
-
- Messages : 604
- Inscription : lun. 26/avr./2010 16:14
- Localisation : S 48° 52' 31'' / O 123° 23' 33''
Re: tags des fichiers audio
Comment ça ???la fonction marche et donne une valeur qui est un peu plus grande que le tag mais jamais plus petite et jamais dans le chant

J'ai moi-même codé un lecteur de tag et la taille retournée a toujours été exacte !!!
As-tu un exemple concrêt ???
-
- Messages : 446
- Inscription : mar. 25/mai/2010 17:24
- Localisation : Bnei Brak, Israel
Re: tags des fichiers audio
en fait je pense que ca va
plutot que de me casser la tete a changer le tag, j'ai pese a l'effacer et le reecrire
le probleme est que je perd l'image
comment recuperer l'image qui est inclu dans le tag
plutot que de me casser la tete a changer le tag, j'ai pese a l'effacer et le reecrire
le probleme est que je perd l'image
comment recuperer l'image qui est inclu dans le tag
-
- Messages : 604
- Inscription : lun. 26/avr./2010 16:14
- Localisation : S 48° 52' 31'' / O 123° 23' 33''
Re: tags des fichiers audio
Bah, c'est normalplutot que de me casser la tete a changer le tag, j'ai pese a l'effacer et le reecrire
le probleme est que je perd l'image


Il n'y a que 2 façons de modifier les tags :
- La manière propre qui consiste à réécrire entièrement le fichier MP3 en modifiant le(s) tag(s) voulu(s)
- La manière barbare qui consiste à remplacer la valeur originelle par une autre valeur. Dans ce cas-là, il faut IMPÉRATIVEMENT respecter la longueur de la valeur de la chaîne originelle ainsi que son format ASCII ou UNICODE. Si, par exemple, tu souhaites modifier le tag TIT2 qui a pour valeur ASCII "Titre1" qui comporte donc 6 caractères, la nouvelle chaîne doit faire exactement 6 caractères. Si sa longueur est inférieure, tu complètes avec autant d'octets $00 que nécessaire, si elle est égale, tant mieux, si elle est supérieure, utilises la fonction Left()




Pour lire l'image, si vraiment tu n'y arrives pas, j'essaierai de retrouver mon code... mais là, franchement, il est tard et je dois me lever très tôt...

Il faudra juste me préciser si tu lis le fichier à partir du disque ou si tu charges l'en-tête en mémoire...
-
- Messages : 446
- Inscription : mar. 25/mai/2010 17:24
- Localisation : Bnei Brak, Israel
Re: tags des fichiers audio
si tu trouve a l'occas le code pour l'image ce serait sympa
je pense que je lis en memoire mais je sais pas si ca change qqchose
merci
je pense que je lis en memoire mais je sais pas si ca change qqchose
merci
-
- Messages : 604
- Inscription : lun. 26/avr./2010 16:14
- Localisation : S 48° 52' 31'' / O 123° 23' 33''
Re: tags des fichiers audio
Ci-dessous, le code qui devrait répondre à ton besoin.
Comme le tien plus haut utilise des accès physiques réguliers au fichier, j'en ai fait de même.
Une autre méthode consiste à charger l'en-tête entier en mémoire et à travailler uniquement avec des déplacements en mémoire.
C'est un peu plus complexe à coder mais (un petit peu) plus rapide en exécution...
Attention, la procédure Fc_LireFrameAPIC() est à répéter autant de fois qu'il y a de tags APIC dans l'en-tête ID3v2.
En effet, il peut y avoir plusieurs types d'images => voir procédure Fc_TypeImage()
Tu devrais tenir le bon bout maintenant 
EDIT 04/07/10 : Correction du type retourné par la procédure Fc_LireFrameAPIC
Comme le tien plus haut utilise des accès physiques réguliers au fichier, j'en ai fait de même.
Une autre méthode consiste à charger l'en-tête entier en mémoire et à travailler uniquement avec des déplacements en mémoire.
C'est un peu plus complexe à coder mais (un petit peu) plus rapide en exécution...
Attention, la procédure Fc_LireFrameAPIC() est à répéter autant de fois qu'il y a de tags APIC dans l'en-tête ID3v2.
En effet, il peut y avoir plusieurs types d'images => voir procédure Fc_TypeImage()
Code : Tout sélectionner
; ****
; **** Lecture Frame APIC En-tête ID3v2
; **** Auteur : Boddhi
; ****
EnableExplicit
UseJPEGImageDecoder()
UsePNGImageDecoder()
UseJPEG2000ImageDecoder()
Enumeration ; Fenêtres
#FENETRE
EndEnumeration
Enumeration ; Gadgets
#TitCpMP3
#CpMP3
#TitDescription
#CpDescription
#TitType
#CpType
#ImgAPIC
EndEnumeration
Enumeration ; Images
#Image1
EndEnumeration
Procedure.f Fc_MinF(ArgNombre1.f,ArgNombre2.f)
If ArgNombre1>ArgNombre2:ProcedureReturn ArgNombre2:Else:ProcedureReturn ArgNombre1:EndIf
EndProcedure
Procedure.s Fc_TypeImage(ArgTypeImage.i)
Define.s Chaine
Select ArgTypeImage
Case $00:Chaine="Autre"
Case $01:Chaine="Icône PNG 32x32"
Case $02:Chaine="Autre fichier icône"
Case $03:Chaine="Jaquette avant"
Case $04:Chaine="Jaquette arrière"
Case $05:Chaine="Feuillet intérieur"
Case $06:Chaine="Média"
Case $07:Chaine="Soliste/Responsable graphique" ; Lead artist/Lead performer/soloist
Case $08:Chaine="Artiste/Interprète"
Case $09:Chaine="Chef d'orchestre"
Case $0A:Chaine="Groupe/Orchestre"
Case $0B:Chaine="Compositeur"
Case $0C:Chaine="Parolier"
Case $0D:Chaine="Lieu d'enregistrement"
Case $0E:Chaine="Durée d'enregistrement"
Case $0F:Chaine="Durée du concert"
Case $10:Chaine="Capture vidéo"
Case $11:Chaine="Poisson coloré lumineux" ; => ???? => Sont fous ces anglo-saxons !!!
Case $12:Chaine="Illustration"
Case $13:Chaine="Logo artiste/groupe"
Case $14:Chaine="Logo studio/maison d'édition"
Default:Chaine="Type inconnu"
EndSelect
ProcedureReturn Chaine
EndProcedure
Procedure.i Fc_LireFrameAPIC(ArgNofichier.i,ArgNomFichier.s)
Define.i Position ; Position 0 du tag APIC dans le fichier
Define.i TagTaille,TagFlag,TailleChaine,Resultat,NoImage,TailleMemImage,TailleImageX,TailleImageY
Define.b Unicode,TagTypeAPIC
Define.i *Tampon
Define.s TagNom,TagDescAPIC,TagDescImage
Define.f Ratio
Position=Loc(ArgNofichier)
; **** Lecture En-tête Tag ****
*Tampon=AllocateMemory(10)
ReadData(ArgNofichier,*Tampon,10)
TagNom=PeekS(*Tampon,4,#PB_Ascii)
If UCase(TagNom)<>"APIC"
Resultat=#False
Goto Fc_LireFrameAPIC_Fin
EndIf
TagTaille=PeekL(*Tampon+4)
TagTaille=((TagTaille&$FF)<<24)+((TagTaille&$FF00)<<8)+((TagTaille&$FF0000)>>8)+((TagTaille>>24)&$FF)
TagFlag=PeekB(*Tampon+8)<<8+PeekB(*Tampon+9)
FreeMemory(*Tampon)
; Lecture Description Image
Unicode=ReadByte(ArgNofichier)
Position=Loc(ArgNofichier)
*Tampon=AllocateMemory(64)
ReadData(ArgNofichier,*Tampon,64)
TagDescAPIC=PeekS(*Tampon,64*(Unicode+1),#PB_Ascii+Unicode)
If TagDescAPIC="-->"
TagTypeAPIC=0
TagDescImage="Lien URL"
; ==> Code à compléter => J'ai jamais eu un type de genre sous la main pour tester
Else
Position+Len(TagDescAPIC)*(Unicode+1)+1
FileSeek(ArgNofichier,Position)
TagTypeAPIC=ReadByte(ArgNofichier)&$FF
TagDescImage=Fc_TypeImage(TagTypeAPIC)
; Capture Image
Position+2
FileSeek(ArgNofichier,Position)
FreeMemory(*Tampon)
TailleMemImage=TagTaille;-Position
*Tampon=AllocateMemory(TagTaille)
ReadData(ArgNofichier,*Tampon,TagTaille)
Resultat=CatchImage(NoImage,*Tampon,TagTaille,#PB_Image_DisplayFormat)
If Resultat
If OpenWindow(#FENETRE,220,0,410,479,"APIC",#PB_Window_SystemMenu|#PB_Window_TitleBar|#PB_Window_ScreenCentered)
If CreateGadgetList(WindowID(#FENETRE))
TextGadget(#TitCpMP3, 16, 20, 68, 20, "Fichier MP3")
StringGadget(#CpMP3, 96, 20, 300, 20, ArgNomFichier, #PB_String_ReadOnly)
TextGadget(#TitDescription, 16, 52, 64, 20, "Description")
StringGadget(#CpDescription, 96, 52, 300, 20, TagDescAPIC, #PB_String_ReadOnly)
TextGadget(#TitType, 16, 84, 64, 20, "Type")
StringGadget(#CpType, 96, 84, 300, 20, TagDescImage, #PB_String_ReadOnly)
TailleImageX=ImageWidth(NoImage)
TailleImageY=ImageHeight(NoImage)
If TailleImageX>300 Or TailleImageY>300
Ratio=Fc_MinF(300/TailleImageX,300/TailleImageY)
TailleImageX=TailleImageX*Ratio:TailleImageY=TailleImageY*Ratio
ResizeImage(NoImage,TailleImageX,TailleImageY)
EndIf
ImageGadget(#ImgAPIC, 56, 132, 300,300,ImageID(#Image1),#PB_Image_Border)
Repeat
Until WaitWindowEvent()=#PB_Event_CloseWindow
EndIf
EndIf
EndIf
EndIf
Fc_LireFrameAPIC_Fin:
FreeMemory(*Tampon)
ProcedureReturn Resultat
EndProcedure
Fc_LireFrameAPIC(NoFichier,"Ici : Nom du fichier déjà ouvert et fileseek() sur le début du Tag APIC !!!!")

EDIT 04/07/10 : Correction du type retourné par la procédure Fc_LireFrameAPIC
Dernière modification par boddhi le dim. 04/juil./2010 21:44, modifié 1 fois.
-
- Messages : 446
- Inscription : mar. 25/mai/2010 17:24
- Localisation : Bnei Brak, Israel
Re: tags des fichiers audio
merci beaucoup
c'est excellent
c'est excellent
-
- Messages : 604
- Inscription : lun. 26/avr./2010 16:14
- Localisation : S 48° 52' 31'' / O 123° 23' 33''
Re: tags des fichiers audio
You're welcome !!! 

Re: tags des fichiers audio
Voilà un topic qui avance bien !
Ou en es tu Parole De JOJO ?
Ou en es tu Parole De JOJO ?
~~~~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