begin process at 2012 02 13 12:15:18
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Multimedia

 > YOMMMP3TAG V2 - EDITEUR DE TAGV1 V2.2 ET V2.3 POUR MP3 , MP3 VBR ET MP3 ABR

YOMMMP3TAG V2 - EDITEUR DE TAGV1 V2.2 ET V2.3 POUR MP3 , MP3 VBR ET MP3 ABR


 Information sur la source

Note :
10 / 10 - par 3 personnes
10,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Multimedia Classé sous :id3v1, tag, wav, mp3, id3v2 Niveau :Initié Date de création :03/07/2004 Date de mise à jour :02/06/2007 00:57:59 Vu / téléchargé :7 177 / 1 012

Auteur : yomm

Ecrire un message privé
Site perso
Commentaire sur cette source (51)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
tout comme la version 1, gérer facilement vos tags avec ces class...définissez une variable en YommTagCtrl et le tour est joué

voici le lien de l'ancienne version :
http://www.vbfrance.com/code.aspx?ID=19447

Source

  • 'pour plus d'info voir le pdf
  • 'il est aussi dans le zip
'pour plus d'info voir le pdf
'il est aussi dans le zip

 Conclusion

tout est dans le pdf, les class , les fonctions et les types
voici en gros ce que l'on peut faire:

lire tous les tags (GetAllTags)
lire juste les TagV1 ou juste les TagV2 ou juste les TagMpeg (GetTagV1, GetTagV2 ou GetTagMpeg)
ne lire q'un seul Tag , exemple l'artiste des TagV1 ou la Duree des TagMpeg (GetOneTag)

ecrire tous les Tags (V1 et V2) (SetAllTags)
n'écrire que les TagsV1 ou que les TagV2 (SetTagV1 ou SetTagV2)

effacer tous les Tags (V1 et V2) (ClearAllTags)
n'effacer que les TagV1 ou que les TagV2 (ClearTagV1 ou ClearTagV2)

récupérer la liste des genres sous forme d'un tableau (GetGenreList)

copier les TagV1 vers les TagV2 (CopyV1ToV2)
copier les TagV2 vers les TagV1 (CopyV2ToV1)

ouvrir la fenetre de TagEditor de winamp (WinampForm)

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

05 octobre 2004 15:29:52 :
modification du source en exemple dans le zip pour une meilleur compréhension du fonctionnement de ce code
02 juin 2007 00:58:00 :
modif pour tich3012 qui m'a demandé en MP si l'on pouvait gérer l'image inclue dans certain mp3: c'est fait dans cette nouvelle version : --------------------------------------------------------------- pour récupérer l'image en variable Picture : Dim toto As New TypeTagV2 Set toto = YommTag1.GetTagV2("c:\MonFichier.mp3") set Image1.Picture = toto.Pic --------------------------------------------------------------- pour récupérer l'image dans un fichier: Dim toto As New TypeTagV2 Set toto = YommTag1.GetTagV2("c:\MonFichier.mp3") open "c:\MonFichier.jpg" For Binary Access Write As #1 put #1 , 1 , toto.PictureBinary close #1 --------------------------------------------------------------- pour affecter une image à un mp3: Dim toto As New TypeTagV2 Set toto = YommTag1.GetTagV2("c:\MonFichier.mp3") Call toto.SetPicFromFile("c:\MonFichier.jpg") Call toto.SetTag("c:\MonFichier.mp3") Attention : on ne peut affecter qu'un fichier d'extension jpg !!! --------------------------------------------------------------- PS : en même temps j'ai réglé un problème que personne n'avait soulevé mais je m'en suis aperçu là ;-)

 Sources du même auteur

Source avec Zip Source avec une capture Source .NET (Dotnet) YOMMEXPLORER.NET EXPLORER / EXPLORATEUR DE DOSSIERS RÉPERTOI...
Source avec Zip Source avec une capture Source .NET (Dotnet) DIREXPLORER EXPLORATEUR / EXPLORER DE DOSSIERS MULTIFONCTION...
Source avec Zip Source avec une capture YOMMEXPLOREROCX POUR CE QUI VEULENT UN VRAI EXPLORATEUR WIND...
Source avec Zip Source avec une capture POUR CEUX QUI PRENNENT LES LISTVIEW POUR DES LISTBOX
Source avec Zip Source avec une capture YOMMEXPLORER : OUBLIEZ LE DIRLISTBOX ET LE FILELISTBOX

 Sources de la même categorie

Source avec Zip Source .NET (Dotnet) MON LECTEUR MP3 par kentharold
Source avec Zip Source avec une capture LECTEUR MULTIMÉDIA par lartiguef
Source avec Zip Source avec une capture RENOMMER SOUS-TITRES par memejoueur
Source .NET (Dotnet) "PARLEUR" EN VB 2010 par clementgeek41
Source avec Zip Source avec une capture CHANGER LE VOLUME SYSTÉME SANS ACTIVEX par kayoub5

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture MP3 ID3 TAG CLEANER par gilgamesh44
Source avec Zip CRÉATION ,MODIFICATION DES TAG ID3 V1 LECTURE DES TAGS ID3 V... par aloneinthedark
Source avec Zip Source avec une capture ECRITURE DE TAG ID3 V1 ET V2 POUR FICHIERS MP3 par BobTSMSI
Source avec Zip Source avec une capture "MPEG FILE INFO BOX + ID3 TAG EDITOR" (OCX) ET NON, PAS ENCO... par yomm
Source avec Zip Source avec une capture MP3 ID3 TAG V1 ET V2 READER par TotoBest

Commentaires et avis

Commentaire de yomm le 03/07/2004 22:35:59

le code ne diffère pas des masses de la version un mais j'ai eut besoin de tout passer en class car vb commencait a perdre les pédale avec mes ocx perso....donc je n'utilise plus d'ocx sauf si c'est vraiment nécessaire...enfin bref comme j'ai fait la modif et vu ke les modif futures seront désormais faites sur cette version, je la mets en ligne...

bonne prog a tous...

Commentaire de PaTaTe le 03/07/2004 23:42:27

Ce code est comme la version diffrente, du pur jus.

Une erruer s'est quand meme glissé :

Private Sub Drive1_Change()

    Dir1.Path = Drive1.Drive & "\"

End Sub


Il faut remplcer :

Dir1.Path = Drive1.Drive & "\"

par :

Dir1.Path = Drive1.Drive

Sinon y a erreur :)

10/10

Commentaire de yomm le 04/07/2004 01:02:46

chez moi ça fonctionne très bien avec Dir1.Path = Drive1.Drive & "\"
mais bon je sais pas...peut etre une question de service pack...

Commentaire de PaTaTe le 04/07/2004 01:33:33

chez moi c la SP6

Commentaire de spy166 le 04/07/2004 11:02:43

Euh pourquoi sur ta capture il y a deux infos différentes ?
118 secondes et 157 ?

Commentaire de yomm le 04/07/2004 18:45:41

le 118 est l'info fourni par ma class
le 157 est l'info fourni par winamp

si tu regardes le display time en haut a droite tu lis une durée de 1min58 soit 118 secondes....c'est juste pour montrer que sur ce cas , ma class donne un résultat plus proche de la réalité...

Commentaire de spy166 le 04/07/2004 21:16:32

Alors winamp se plante dans ton exemple c'est bien ça ?

Commentaire de yomm le 04/07/2004 21:26:12

sur cet exemple là oui ...

Commentaire de yomm le 04/07/2004 21:37:43

>>spy166
attention ! ne va pas comprendre ke mon controle est meilleur ke celui de winamp, loin de là...dans ce ka préci oui...mais winamp gère plein d'autres choses notament au niveau du genre des TagV2 ke je n'ai pas voulu prendre en compte dans ma class...enfin voilà je voulais préciser cela...

Commentaire de Totov le 05/07/2004 09:43:58

Je vais passer à la cls alors (mais bon, ça m'arrange de toute façon).

Commentaire de yomm le 09/07/2004 22:26:21

info de dernière minute :
j'ai trouvé un bug ...et oui ;-)

Le problème concerne les fichiers mp3 comportant une entete RIFF...j'aurai pu ne pas le voir sur 12 fichiers testés 1 seul ma posé un problème... ;-) ....Pourkoi celui là et pas les autres ? Simplement parce ke le 5ème bite (cad celui qui suis l'entete "RIFF"...) de ce fichier vaut &HFF (héxa) et ke la class comprend que c'est le début du l'entete du mp3...Mais non ;-).....

bon je vais bossé dessus et je mettrai a jour dès ke ce petit problème sera corrigé .....

@+

PS : :-( ooouuuuuuuiiiiiiiiinnnnnn..........pourkoi y a pas UNE et une seule norme ;-).......

Commentaire de yomm le 11/07/2004 15:31:48

bon voilà tout est corrigé...

Commentaire de madbob le 06/09/2004 21:40:18

Bonjour,

Flute alors :-).... Je croyais que tu récupérais les Vbr dans ton outils... En fait on récupère les même infos que winamp... Il pète un fusible désqu'il s'agit de calculer la durée en seconde sur les encodages vbr. c'est drôle meme si c'est pénible. Windows à l'air d'avoir corrigé le problème.

Sinon l'est bien, ton outil même si il m'aide pas.

Fait ça pour tes dirlistesboxes afin d'éviter les problèmes pour ceux qui donnent des noms à leurs lecteurs !!! (comme moi  :-) )
Ca marchera à tous les coups au lieu de planter ou d'y alller au débogage.

'* Lettre (lecteur) & ":\"
Dir1.Path = Mid(Drive1.Drive, 1, 3)

Bien sur on peut aussi faire autrement.
Bonne continuation



Commentaire de yomm le 07/09/2004 08:10:17

normalement je gère le vbr...
c'est étrange...

je vais te contacter en mp pour faire comme avec d'autre et que tu m'envoi un de tes mp3 ki poz problème!
OK?

Commentaire de madbob le 07/09/2004 08:56:47

Y a pas de problème Yomm.

Sur ce fichier tu passes pas dans le code pour le vbr :
testbuffer != XING donc tu vas dans le else et là tu ne récupères pas sur ce fichier la valeur VBRI donc pas de calcul... donc pas de surcharge de durèe :-(

Y a forcément un problème de calage sur le buffer. Je regarde plus en détail.... aussi de mon coté.

Salut

Commentaire de yomm le 07/09/2004 12:30:41

J'ai la réponse à ton problème (du moins je pense) mais malheureusement, contrairement aux autres problèmes, cette fois je ne peux rien pour toi...

Quelques explication tout de même:
Le problème vient du fait que ton mp3 ne possède pas de 'header' correcte...En effet, il manque une parti du header, c'est un problème connu sous Lame (bien que cela reste mon encoder préféré ;-) )...J'ai en effet lu des problème de header sur plusieurs forums...

Pour plus de détail , je t'ai fait un comparatif entre un fichier vbr encodé en Lame 3.92 et ton fichier (encodé lui en Lame 3.90)

Pour voir le résultat voici le lien : http://yomm.no-ip.com/vbr_3.90.jpg
Légende :
-mauve : début de l'entête
-vert : chaine de caractères ( 'XING' ) devant figurée afin de lire les infos de l'encodage VBR , tu constateras qu'à l'endroit même où dans mon fichier je lis bien 'XING' on trouve 'LAME' dans ton fichier tandis que dans mon fichier , 'LAME' ce trouve plus loin
-turquoise : section manquante

Voilà, c'est du moins mon explication et elle me semble tenir la route...Mais bon j'ai pas codé Lame donc il y a peut etre une notion qui m'a échappé...Toutefois le fait que le problème ne se pose pas avec Lame 3.92 signifie peut etre bien qu'il y avait un problème avec la version 3.90...Enfin bref...

Ma Solution : Ré-encode ton mp3 LOL ;-)

@+ et désolé de rien pouvoir faire de plus pour toi :-(

PS: j'espère que finalement mon source te servira ;-)

Commentaire de madbob le 07/09/2004 12:48:29

Je suis d'accord qu'en réencodant les fichiers qui posent problème on calme le jeux ;-) c'est ce que j'ai fait en partie.

Ceci dit, on peut toujour forcer le passage dans ton test (on peut en plus vérifier la version de lame) mais là on génére une erreur et on boucle à l'infini a cause du resume. Si on force le else c'est tout pareil le calcul fait une division par 0.

Merci Yomm je vais approfondir le cas de forçage sur XING.
A+

Commentaire de yomm le 07/09/2004 13:20:47

euh.....normalement tu devrais pas boucler à l'infini...en effet dans la gestion d'erreur le test 'If EntetePostmp < FileLen(Fichier) Then' est justement sencé éviter cela...ce qui est sûr c'est qu'il va bouclé jusqu'à avoir parcouru la totalité du fichier...

Je comprend en effet que tu préfères trouver une solution qui te permettes de gérer tes fichiers mais ce que j'ai fait est sencé être un 'standard' et donc cela doit fonctionner avec n'importe quelle version...De plus je vois mal comment gérer le problème s'il manque les infos nécessaire...toutefois j'ai peut etre une solution, ou tout du moins une piste , qui pourrait t'éviter de réencoder tout tes mp3, cherche du coté des 'Lame Header Fix' j'ai pas encore chercher mais j'ai vu que l'on en parlait sur certain forum...peut etre trouveras tu ton bonheur là dedans...je cherche de mon coté si je trouve quelque chose et je te tiendrai au courant

@+

Commentaire de madbob le 07/09/2004 14:50:44

Quand je parlais de boucler c'est suite à une erreur qui déclenche le resume et donc tu n'avances pas tant que l'erreur existe(et c'est seulement quand tu forces le code!!! :-) j'avais une division par 0).... Je parlais pas de tes boucles qui sont très bien faites. 8-) comme le reste du code d'ailleurs.

Je viens de réencoder le fichier avec la même version de Lame mais cette fois ci sans vbr et là ç'est nickel. Surement que le bug concerne le vbr de la version Lame 3.90

Je te remercie pour ton attention. Je ne sais pas combien de fichiers posent problème, une toute petite minorité certainement. Mais je vais pister tout ça à l'occasion. Encore un nouveau Projet. Je te donnerai des nouvelles.

Merci pour tout
et bonne continuation
A+

Commentaire de yomm le 07/09/2004 17:16:08

Je suis désormais sûr et certain qu'il y a un problème avec le vbr et les headers vu le nombre de message que j'ai pu croiser sur différents forums...

Cela vient vraissemblablement des paramètres passés en ligne de commande à l'encoder...J'ai rien de plus precis car j'ai vu que cela dépendait de pas mal de chose...Toutefois comme je te l'ai dit, moi je n'ai pas eut le problème avec la version 3.92...Peut etre que ce bug est corrigé...

Bon courage à toi...

@+ ;-)

Commentaire de PaTaTe le 07/03/2005 16:15:56

Je suis entrain de me poser une question ... Est-il possible d'aller plus loin comme MediaMonkey ki ajoute les lyric dans le tag ?

Commentaire de mandark le 09/10/2005 21:21:17

Super code mais j'ai un probléme avec :
La pluspart des éditeurs de tag V2 proposent de mettre "a la main" le genre, par exemple, dans la liste habituelle, y'a pas le genre "Bachata", donc dans le champ "Genre" on écrit "Bachata" a la main, ce que propose de faire ton programme, mais si on le fait, il plante dans GetGenreIndexFromTag, index hors de plage.
Je ne sais pas comment corriger ce probléme car je n'ai pas comprit comment étaient gérés ces "genres" non "numérotés"
Sinon ta source est super et j'aimerait vraiment pouvoir l'utiliser ! (:

Commentaire de yomm le 10/10/2005 22:52:16

>>MANDARK
je regarderai cela dès ke possible...merci de l'info...

Commentaire de M51 le 20/01/2006 13:55:10

Question, est ce que tu gères le tags des covers. A première vu non, car à la base je cherchais ce genre de code (j'en ai trouvé un) mais il plante pour l'écriture.

Commentaire de firens le 23/01/2006 15:54:17

Hello,

j'ai testé le module de Yomm avec les tags mp3 mais j'ai un petit soucis....

j'ai donc déclaré tout ca pour pouvoir lire le fichier mp3 test.mp3

Dim mp3File As TagType

Set mp3File = YommTag1.GetAllTags("C:\test.mp3")

mais ca me mets un type mismatch...seulement on voit très bien que lorsqu'on écrit la fonction GetAllTags elle demande un type String...
J'ai essayé de mettre str("C:\test.mp3) pour voir.. mais ça plante mon prog....

Quelqu un aurait une solution ?                          Merci

Commentaire de yomm le 24/01/2006 22:29:29

>> Firens

Salut,
déjà, il ne te mankerait pas une truc du genre "NEW" ???

-----------------------------------------
dim mp3File as New TagType
-----------------------------------------

en fait , j'ai même testé sans le new et ça marche....c'est peut etre plutot un probleme de déclaration générale je pense...mais en tous les cas , ce que tu as tapé là devrait fonctionner sans problème!!!!

Commentaire de JLN le 16/04/2006 11:47:37

Salut à tous,

     A en juger des remarques de tous les utilisateurs de ta classe (et precedament de ton ocx) je pense sans me tromper pouvoir dire BRAVO et mon respect le plus profond. Je cherchais quelques chose qui me mette sur la voie des tags mp3 et je tombe sur une Rolls, que dire de plus, je suis comblé et je m'en vais mettre ca dans ma prochaine appli. Bonne continuation et merci au nom de tous. Ha ! juste une chose (il fallait que j'en trouve une) le lien http://www.yomm.fr.st/dl.php?ID=1 ne fonctionne pas.

Bonne prog,
@+ JLN

Commentaire de yomm le 16/04/2006 13:21:58

Salut, en effet le lien ne fonctionne plus et depuis longtemps ;-)

si tu veux les infos pdf , envoie moi ton mail en MP et je ferais le necessaire

Commentaire de yomm le 16/04/2006 13:23:10

oups...j'avais oublié, il est dans le zip...donc le lien n'est plus très util ;-)

Au fait, merci pour tes comments JLN

Commentaire de JLN le 16/04/2006 14:27:17

Merci à toi surtout Yomm pour avoir bien voulu partager le fruit de tes efforts et en effet le pdf est dans le zip, je n'avais pas encore ouvert et j'ai de plus testé et ca marche nickel.

@+ JLN

Commentaire de mazty le 12/05/2006 15:45:15

Salut, je suis débutant en VB (pas en programmation...). Je viens d'installer "Visual Basic 2005 Express Edition". Je crée un nouveau projet, ouvre tes classes (.cls) et dans le main de mon module1 crée un objet d'une de tes classes mais celui-ci n'est pas reconnu, la syntaxe de tes .cls ne semble pas être reconnue... Si quelqu'un pouvait me dire comment régler ca ou m'envoyer vers un tutoriel qui puisse le faire. Merci à tous

Commentaire de JLN le 12/05/2006 16:37:51

Il s'agit de classes VB6 et je pense qu'elle ne sont pas compatiblent directement sans adaptation.

Commentaire de mazty le 12/05/2006 16:47:24

Comment puis-je faire pour les utiliser dans ce cas (utilisation d'un autre environnement de dévelloppement ?, conversion ?) ?

Commentaire de JLN le 12/05/2006 16:54:38

Je pense qu'il faut adapter les classes VB6 à VB .NET 2005 et là je ne serai d'aucun secours parce que je n'utilise pas. Regarde les forums à ce sujet.

@+ JLN

Commentaire de mazty le 12/05/2006 17:01:54

Mais comment utilisez-vous les classes vous ?

Commentaire de PaTaTe le 13/05/2006 00:45:22

Avec Visual Basic 6 :)

Commentaire de federki le 10/08/2006 02:26:55

Hola YOMM..
1º) je ne parle pas très bien français, pardon si je me trompe.
Ton source est IMPRESSIONNANT!!
Je veux te faire une question:
Pour mon programme, j'ai besoin d'obtenir le temps précis que durent les archives mp3. Je veux: heures, minutes, seconds et frames.(Bitrate variable évidemment)
Ton code: j'ai vu que le résultat, par exemple, pour ton archive test.mp3 est 4 seconds.
Il est exactament 4.545 seconds. 1 seconde - 100 frames
J'ai modifié BitRatetmp a single et Dureetmp aussi a single, mais le résultat n'est pas bon..Pourquoi?

Est-ce que tu peux m'aider??

Commentaire de yomm le 28/08/2006 23:47:48

Salut FEDERKI

je me suis jamais posé la question...il faudrait que je cherche un peu...dès que j'ai le temps je regarde ça...

Commentaire de yomm le 29/08/2006 00:06:43

re FEDERKI

j'ai trouvé très vite l'info dont tu as besoin:
dans la class TypeTagMpeg
dans la fonction GetTag
il y a un ligne comme ça:
Dureetmp = Fix(((TailleTmp - EntetePostmp) * 8 / 1000) / BitRatetmp)
en fait le fix coupe la partie entière (4.545 devient 4)
toi, il faut que tu prenne:
((TailleTmp - EntetePostmp) * 8 / 1000) / BitRatetmp
par contre, en effet, il faut mettre un autre type à la variable DureeTmp ou créer une autre variable ce qui serait plus propre

proposition : dans la class TypeTagMpeg

*************************************************
private ReelTimeTmp as Single

Public Property Get RealTime() As Single
    RealTime = RealTimeTmp
End Property
Public Property Let RealTime(ByVal Param As Single)
    RealTimeTmp = Param
End Property

'et dans la fonction GetTag:
'remplace
        If BitRatetmp <> 0 Then
            Dureetmp = Fix(((TailleTmp - EntetePostmp) * 8 / 1000) / BitRatetmp)
        End If
'par
        If BitRatetmp <> 0 Then
            Dureetmp = Fix(((TailleTmp - EntetePostmp) * 8 / 1000) / BitRatetmp)
            RealTimeTmp = ((TailleTmp - EntetePostmp) * 8 / 1000) / BitRatetmp
        End If

'et plus loin
        .Vbr = Vbrtmp
    End With

    Exit Function

'par
        .Vbr = Vbrtmp
        .RealTime = RealTimeTmp
    End With

    Exit Function

*************************************************

tu auras ainsi la durée en single
d'ailleurs, au lieu de 5,545 tu auras : 5,54525

Voilà

@+ et bon devs

Commentaire de federki le 02/09/2006 04:50:00

Merci bp.
j'avais trouvé une autre façon de le faire, le résultat est ce dernier( le même).
Gracias

Commentaire de yomm le 02/06/2007 01:00:08

modif pour tich3012 qui m'a demandé en MP si l'on pouvait gérer l'image inclue dans certain mp3:
c'est fait dans cette nouvelle version :
---------------------------------------------------------------
pour récupérer l'image en variable Picture :

Dim toto As New TypeTagV2
Set toto = YommTag1.GetTagV2("c:\MonFichier.mp3")
set Image1.Picture = toto.Pic

---------------------------------------------------------------
pour récupérer l'image dans un fichier:

Dim toto As New TypeTagV2
Set toto = YommTag1.GetTagV2("c:\MonFichier.mp3")
open "c:\MonFichier.jpg" For Binary Access Write As #1
    put #1 , 1 , toto.PictureBinary
close #1

---------------------------------------------------------------
pour affecter une image à un mp3:

Dim toto As New TypeTagV2
Set toto = YommTag1.GetTagV2("c:\MonFichier.mp3")
Call toto.SetPicFromFile("c:\MonFichier.jpg")
Call toto.SetTag("c:\MonFichier.mp3")

Attention : on ne peut affecter qu'un fichier d'extension jpg !!!

---------------------------------------------------------------

PS : en même temps j'ai réglé un problème que personne n'avait soulevé mais je m'en suis aperçu là ;-)

Commentaire de tich3012 le 04/06/2007 11:49:10

Hello

merci pour avoir ajouter la fonctionnalité que je t'ai demandé
j'essaie ce soir si ca fonctionne bien avec mon archos.

Bonne prog

Commentaire de titicar le 10/10/2007 22:30:22

Salut,

Incroyable, depuis toutes ces années, ce post est toujours d'actualité :-)
Ca tombe bien, je viens de le télécharger.

Cependant, y a un truc que je n'ai pas compris dans la classe du TagV2 : lors de la 'convertion de la taille de la chaine des tags en binaires', y a la ligne suivante : 'i = Len(FicTag) + 11'.
D'où provient ce fameux 11?
Est-ce une constante dû à ce calcul binaire en 7 bits et donc quelque soit la longueur de FigTag? Ou est-ce autre chose ?
... Oui c'est vrai, je ne pose pas une question sur un bug ou une fonction supplémentaire, mais juste sur un problème de compréhension.

Commentaire de titicar le 11/10/2007 22:52:52

J'annule ma question précédente car j'ai compris le fameux 11.
Je vais faire les questions réponses : Contrairement aux frames (ou champs, ou balises...), la taille donné dans l'header du tag tient compte de l'header lui-même, donc 10 octets de plus (j'avais compris autrement dans une doc... en anglais). Et vraisemblablement 1 octet de plus pour se placer sur l'octet suivant.

Commentaire de titicar le 14/01/2008 19:52:10

Bonjour,
Merci à Yoom pour la classe concernant la gestion de l'entête Mpeg car j'ai utilisé son code.

Toutefois Yoom et pour ton info, j'ai modifié très légèrement ton code dans Friend Function GetTag(...):
- J'ai préféré écrire 'Optional ByVal Advanced As Boolean = True' ...pour forcer Advanced=True
- Et j'ai ajouté 'Optional ValInit As Long = 1'
Donc :
Friend Function GetTag(ByVal fichier As String, Optional ByVal Advanced As Boolean = True, _
    Optional ValInit As Long = 1) As ...

Pourquoi cette dernière modif : parce que je suis tombé sur un mp3 qui posséde une frame 'GEOB' mémorisant une 'séquence Mpeg' (quel idée!).
(pour rappel, 'GEOB' est une frame qui peut mémoriser une séquence quelconque binaire, normalement accès sur le contenu d'un fichier externe)
Dès lors la class 'Mpeg', cherchant le début de l'entête Mpeg, 'indexe' uniquement le contenu d'une frame. Ce qui crée un beau désordre si l'on modifie le tag ID3v2.
Pour palier à ce problème, j'ai modifié la procédure qui sauvegarde l'ID3v2. A savoir que si le début de l'entête Mpeg est inférieur à la taille de l'ID3v2, alors on fait une deuxième recherche d'entête Mpeg, non plus à partir du début du mp3, mais à partir de la fin de l'ID3v2.
Ce qui m'a donc forcer à introduire ValInit en tant que paramètre à l'appel de GetTag (du Mpeg).

Voilà, c'était juste pour info.
Je n'ai pas précisé les modif dans la classe traitant de l'ID3v2 car j'en ai écrit une autre, pas encore finie dans les détails, mais qui sauvegarde TOUTES les frames existantes.
Celà dit, merci encore pour ton traitement du Mpeg, la gestion du 'VBR'... et la conversion du décimal en binaire.
Moi qui pensais que la gestion de l'ID3v2 passerait simplement par une procédure traitant l'ID3v2, je me suis rendu compte que ce traitement pour un Mp3 passe obligatoirement par la gestion de son Mpeg!
Comme quoi, tout est lié... Mais quel idée de tout lié !

Commentaire de yomm le 14/01/2008 23:13:53

Salut TITICAR,

je suis content de voir qu'un dev de 2004 serve encore aujourd'hui ;-)
Avec tous les devs en ligne de commande qu'il doit exister à ce jour, je suis content de voir qu'il y a des acharnés comme moi qui essai de faire ça "à l'ancienne" ;-), même si en effet, mon dev date un peu et qu'il n'a donc pas suivi les modifs des tags...

pour répondre à ta question d'octobre dernier (OK il était temps ;-)) en effet, cela correpondait au décalage de l'entête de l'header plus le déplacement à la zone suivante. Mais comme tu t'en est rendu compte, c'est pas facil de trouver des infos clair pour le traitement du tag Mpeg, surtout avec les différentes compression dont le VBR.

@+ et bon devs

Yomm

Commentaire de titicar le 17/01/2008 00:09:36

Et oui, comme quoi même un 'vieux' dev peut encore servir pour quelques 'acharnés'!
Cela dit si tu as des nouveautés, tu peux toujours nous tenir au courant :-).
Facile à dire car perso, je n'ai encore jamais rien 'partagé' (bouhh!).

Concernant ta class Mpeg (nameTypeTagMpeg), j'ai tout de même un gros problème de compréhension : dans cette même classe Mpeg, la function (Friend) 'GetTag(...) As TypeTagMpeg' appelle elle même sa propre class 'TypeTagMpeg' en tant que résultat de cette function.
Je m'explique sans doute mal, mais tout ça pour dire que des fois, j'ai une erreur n°91 (ne me demande pas la description de l'erreur) qui signifie (il me semble) que le résultat de la fonction 'GetTag(...)' est Nothing. Donc et dans ce contexte d'erreur, je ne peux pas appeler une quelconque 'Public Property' liée à la variable (nouvelle instance?) résultante de 'GetTag(...)'.
C'est vrai que je n'utilise pas la totalité de tes sources, et que je fais appel à cette fonction par mes propres lignes de prog.
C'est vrai aussi que quand je me relie, j'ai du mal à croire que quelque puisse comprendre ce que je veux expliquer.
Si tu as compris mon problème (là, je te félicite!), essais de répondre plus vite qu'en octobre :-)
Sinon, je vais essayer de traduire ça par un exemple plus concret (plus généraliste et plus simple!) que je posterai dans le forum.

@+ et (je n'en doute pas) bon prog!

Commentaire de drum_ab le 19/01/2010 10:10:16 10/10

Bonjour

quelqu'un sait il comment récupérer l'image de la pochette contenu dans un tag... apparemment certain dise qu'on peut, d'autre pas...ce qui est sur c'est que je n'y arrive pas... lol



Commentaire de titicar le 19/01/2010 22:16:50

Houlà, quel vieux post : bientôt 6 ans !
Il n'y en a pas d'autres plus récents depuis tout ce temps ?
C'est vrai qu'il y a 2 ans, j'avais commencé à écrire quelques fonctions concernant l'ID3v2 car ceux trouvés ici et là ne correspondaient pas à mes attentes... Mais je n'ai jamais terminé !

Si! Il est possible en VB6 de gérer n'importe quelle frame de l'ID3v2, y compris les images (pochette, artiste, etc).
Je parle de la lecture ou l'écriture d'une frame quelconque.

Pour ce qui est de l'affichage des données d'une frame, c'est moins évident :
1). La norme ID3v2 propose les caractères de l'unicode. Ce qui reste quasi incompatible avec VB6.
2). Concernant l'affichage des images, la norme prévoit les types JPEG et PNG. Le format PNG n'est pas pris en compte nativement dans VB6. Faut passer par GDI+ (ou quelque chose comme ça et que je ne connais pas; celà dit y a pleins d'exemples sur ce site, concernant le GDI+). Pour le JPEG, aucun problème !

Plus haut, je disais que les sources trouvées ici et là ne correpondaient pas à mes besoins. A l'époque, les seules sources que je trouvais (y compris celle de ce post) se focalisaient sur quelques frames programmées, et le fait de sauvegarder un tag ID3v2 modifié supprimait purement et simplement les autres frames non gérées. Donc méfiance si tu testes un code source: teste sur une copie de ton mp3.

C'est là le gros problème. De mémoire, il y a environ 80 noms de frames différents dans la norme ID3v2, et souvent avec un 'formatage' différent.
Une frame 'simple' comme le nom de l'artiste ne contient que 2 infos (de mémoire) : son code de caractères (unicode ou non) et le nom de l'artiste (écrit avec ce code de caractères).
Une frame plus élaborée comme justement ta fameuse image 'pochette album' contient beaucoup plus d'informations : L'image JPEG ou PNG en question, le format de l'image, un commentaire, etc... En plus, cette frame est 'multiple' car elle peut exister plusieurs fois, contrairement à d'autres.
C'est tout le problème : le 'formatage' d'une frame n'est pas le même d'une frame à une autre. Il faut donc distinguer tous les formats possibles y compris les indépendants ou multiples, et en écrire leur gestion.

Je ne vais pas développer d'avantage. Visiblement, tu recherches surtout à récupérer une 'pochette-album' d'un MP3 (à sauvegarder en tant que fichier?), et donc juste un type de frame. C'est largement possible, même en VB6 :).
D'ailleurs, ton sujet de récupération d'image dans le tag ID3v2 avait déjà été demandé dans le forum VB, et dans le passé. Il n'y a pas de nouvelle réponse à ce jour? Perso, je n'avais pas répondu à l'époque. Et je ne suis plus au courant des sujets actuels.
Sinon, dans ce même post, Yomm avait écrit quelque chose en rapport avec ton image recherchée. Ca ne fonctionne pas ? Cela dit, perso et de mémoire, je n'ai pas testé sa procédure.

Il n'y a pas de secret : faut connaitre un peu VB, et surtout la norme ID3v2 pour en extraire une info. Après, il y a une façon de programmer face à un problème dédié... pas toujours évident.

Commentaire de drum_ab le 20/01/2010 08:56:50

Salut titicar

merci pour ta réponse

En fait, j'ai parcouru en long en large et en travers tous les sujets relatifs au tag Mp3.
J'ai fait un encodeur avec Lame et reconnaissance tag (et ce site m'a bien aidé)

Il me manquait un truc à la mode! Pouvoir afficher la pochette et c'est là que le bas blesse.

J'ai crée un sujet dédié et en est reçu des réponses constructives auquel je vais m'attacher d'y remédier...

http://www.vbfrance.com/forum/sujet-RECONNAISSANCE-TAG-RECUPERER-POCHETTE-ALBUM_1397423.aspx#7

En tout cas, il n'y a pas de recette miracle : il faut récupérer le contenu d'une page html et l'analyser pour en extraire le lien vers l'image ... il faut de l'huile de coude quoi. lol


Commentaire de titicar le 20/01/2010 22:01:01

Salut,

D'accord, maintenant je comprends mieux ce que tu essayes de faire.
J'avais fais fausse route vu que j'ai lu ton post (http://www.vbfrance.com/forum/sujet-RECONNAISSANCE-TAG-RECUPERER-POCHETTE-ALBUM_1397423.aspx?p=2)
Je ne réponds dans ce post ci-dessus, vu que ça me parait un peu hors sujet.

Pour la partie ID3v2, tu ne veux pas spécialement lire une image 'pochette album' contenue dans le tag, mais plutôt intégrer dans ce tag, une image prise sur le net.
Dès lors que tu veux modifier/sauvegarder l'ID3v2 (et non pas seulement le lire), tu es ammené à devoir gérer toutes les frames peut-être déjà existantes dans ton tag. Ceci afin de ne pas les voir disparaitre lors de la sauvegarde (je t'en avais parlé si tu voulais utiliser les sources existantes VB6).

Par contre, pour limiter un peu ton travail et partant du principe que tes MP3 sont nouvellement encodés par Lame et donc sans tag existant, on peut supposer que la gestion des frames existantes devient superflue. Et donc que seules les quelques frames que tu veux utiliser te suffisent à la gestion de l'ID3v2.
Et dans ce cas, l'exemple de Yomm suffit amplement... Faut juste adapter un peu pour lire une image 'pochette album'.

Si dans le cas inverse, tu veux tout maîtriser, donc modifier dans un MP3 un tag qui contient déjà une multitude de frames diverses que tu ne veux pas effacer, le travail devient plus compliqué.

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Supprimer le tag ID3v2 d'un mp3... [ par wouha ] Salut tout le monde...Alors voilà j'ai un tit problème, je me suis créé un tit programme pour pouvoir trier rapidement mes MP3...Le seul truc qui manq ocx de conversion mp3 => wav [ par DDelec24 ] Bonsoir tout le monde!Voila j'ai chercher un peu partout, mais je n'arrive pas a trouvé un ocx ou module qui me permettrais de faire une conversion mp Lecteur wav et mp3 pendant durée determinée et a heures fixes [ par Oniki ] Salut a tous, Voila j'ai un gros probleme :)Je dois realiser un logiciel en vb de lecture de fichiers de mp3 ou wav (avec selection du repertoire) qui Creer un wav a partir d'extraits de MP3 [ par Killua ] Bonjour,Mon programme actuellement lit des extraits de mp3 à la suitePar exemple il va lire 1.mp3 de la 2eme à la 6eme secondepuis 2.mp3 de la 37eme à Tag MP3 [ par mutmut ] Bonjour a toud !! moi je recherche comment récupérer un tag crée par music match jukebox (appellé : "preference") ....toutes ces sources ne le permet TAG MP3 SVP JE NE COMPRENDS RIEN !!! [ par z980x ] Quelqu'un peut t-il svp me dire comment LIRE des tags de fichiers mp3...Seulement les trucs les plus communs...JE NE COMPRENDS ABSOLUMENT RIEN AUX TRU Nessound v0.81 lecteur mp3 wav rubrique multimedia [ par nessx ] Voilà je viens de créer un petit programme en vb un lecteur multimedia qui lit les wav et les mp3.Suis un débutant et voudrait avoir vos témoignage su comment ouvrire et lire un fichier wav et mp3 et comment utiliser les touche du clavier pendant boucle module do loop [ par j5em3110 ] ** comment ouvrire et lire un fichier wav et mp3. ** et comment utiliser les touche du clavier pendant boucle module do loop un peu d'aide serais MP3 ID3v2 [ par Seth ] Je cherche un code souce VB permettant de lire/ecrire les tags ID3v2 utiliser dans WinampMerci d avance ! MP3Enc.ocx (wav > mp3) [ par Stef ] Quelqu'un l'a t-il ?Existe t-il d'autre activeX pour transformer un wav en MP3 depuis VB ??Merci de votre aide.Stef


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 7,894 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales