cs_Jamsss
Messages postés11Date d'inscriptionvendredi 23 septembre 2005StatutMembreDernière intervention28 octobre 2007
-
19 sept. 2007 à 08:03
cs_titicar
Messages postés181Date d'inscriptionjeudi 30 mai 2002StatutMembreDernière intervention19 août 2012
-
29 oct. 2007 à 19:08
Salut,
Je voudrais savoir quelle est la différence entre les tags v1 et v2: Je sais que ça correspond aux 128 derniers octets du fichier mais pourquoi y a t il des informations également au début du fichier? Est ce que les tags v1 sont au début et les v2 à la fin ou l'inverse?
cs_titicar
Messages postés181Date d'inscriptionjeudi 30 mai 2002StatutMembreDernière intervention19 août 2012 20 sept. 2007 à 19:32
Salut,
En effet, le Tag V1 d'un mp3 est inscrit en fin de fichier et n'a qu'une longueur (plus minime!) fixé à 128 octects, avec des noms de champs eux aussi déjà fixés (artiste, album...).
Ce tag étant beaucoup trop limité, la version 2 (ID3 V2) est sorti (inscrit cette fois-ci en début de fichier). La longueur total du tag n'est plus figée, beaucoup plus de champs sont disponibles, et l'on peut même ajouter des champs personnalisés.
Voilà en gros la différence entre les deux versions.
Nota : Avec le temps, la V2 s'est déclinée en plusieurs sous versions, la dernière étant la V2.4.
cs_Jamsss
Messages postés11Date d'inscriptionvendredi 23 septembre 2005StatutMembreDernière intervention28 octobre 2007 22 sept. 2007 à 11:36
Merci pour ces réponses.
Pour les tags v1, pas de soucis j'arrive à les lire et écrire (je précise que je suis en train de créer un gestionnaire de tags en vb 2005) par contre pour les tags v2, comment faire pour les lire sachant qu'ils ont une taille variable? j'arrive à repérer les balises mais aprés ça coince. est ce qu'il faut lire autrement qu'en binaire?
Merci
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_titicar
Messages postés181Date d'inscriptionjeudi 30 mai 2002StatutMembreDernière intervention19 août 2012 2 oct. 2007 à 20:04
Je tarde un peu à répondre car je cherche aussi le moyen de gérer (lecture/écriture) les différents tags de la v2.4. La structure de cette version est plus compliqué à programmer que la version 1. Il faut réussir à comprendre (pas évident!) la structure de la v2 pour trouver toutes les différentes 'balises'.
Pour connaitre uniquement les balises principales comme le nom de l'artiste, album, année, genre, etc, c'est assez simple et il y a pleins d'exemples sur ce site. Le plus abouti à mon avis est une source de Yoom. Quoique j'ai pas tout compris :-(
Par contre, si tu veux modifier un Tag tout en gardant toutes les 'balises' déjà mémorisées dans ton mp3 (du genre jaquette du CD, tagé avec Windows Media Player, MusicMatch JukeBox,...), c'est peine perdu avec les différentes sources trouvées sur ce site, ou d'autres (VBAccelerator...). Cela dit, si je me trompe, merci de nous prévenir ! :-)
Pour ce qui est de ce familiariser avec la structure de la v2.4, y a plusieurs sites hélas en anglais : je n'ai pas trouvé de traduction... Donc si quelqu'un connais une version française...
Pour ma part, étant aussi intéressé par la gestion de la v2.4, je vais tout reprendre à zéro en commencant, avec mon peu de connaissance, par une traduction 'maison' des sites anglais (le traducteur dans Google a déclaré forfait).
cs_Jamsss
Messages postés11Date d'inscriptionvendredi 23 septembre 2005StatutMembreDernière intervention28 octobre 2007 3 oct. 2007 à 08:03
Salut,
En effet j'ai aussi trouvé les sites en anglais comme id3.org, il a l'air super bien fait mais malheureusement il est un peu trop en anglais pour moi !
Au sujet des sources j'en ai vu aussi mais j'ai un peu de mal a capter le principe de lecture en fait vu que avec la v1 je lis en binaire et que la ce n'est plus possible...
Si tu as besoin d'aide pour la traduction des sites fais moi signe, peut être qu'a 2 ce sera plus simple, a+
cs_titicar
Messages postés181Date d'inscriptionjeudi 30 mai 2002StatutMembreDernière intervention19 août 2012 3 oct. 2007 à 19:27
Je ne comprends pas trop ce que tu veux dire par "c'est pas possible de lire en binaire le tag v2". Si tu pense à un accès séquentiel (genre 'Open fichier For Input/Output...), ce type d'accès n'est valable dans aucune version de tag.
Dans tous les cas, on utilise un accès binaire (genre Open fichier For Binary Access Read/Write...)
De plus, dans la v2.4, il faut des fois faire des conversions de nombres binaires en nombres entiers, et inversement.
Sinon, merci de me proposer ton aide pour la traduction : si tu connais un site de conversion de 'grosse masse' de texte (vu que Google a déclaré forfait), ça m'évitera de découper le texte en plusieurs parties.
cs_Jamsss
Messages postés11Date d'inscriptionvendredi 23 septembre 2005StatutMembreDernière intervention28 octobre 2007 3 oct. 2007 à 21:30
J'utilise un accés binaire également et ça fonctionne bien pour la v1, mais pour la v2 ça pose pose un probleme car les champs d'information ont une taille variable et donc je repère les balises qui sont situés a la fin des champs et de là je lis en binaire un certain nombre de caractères...seulement les champs étant variables, ça marche pour un mp3 mais pas pour le suivant! je sais pas si j'ai été clair, c'est pas simple a expliquer.
Un exemple, le tag d'un mp3 que j'ai ouvert avec le bloc note:
ID33; 8; TALB 12; Let There Be RockTYER 5; 1977TIT2 15; 03-Let There Be RockTPE1 6; AC-DCCOMM 7 nt Generated By Oxilog Audio Library
Si je veux lire le titre de l'album je repere la balise TYER et je lis 16 caractères avant et j'obtiens: "Let There Be Rock", seulement si je veux lire un titre plus long la fois suivante et que je veux lire 30 caractères par exemple j'obtiendrais: " 8; TALB 12; Let There Be Rock". Voila tout mon probleme, peut être c'est moi qui n'utilise pas la bonne technique je sais pas...
Sinon au sujet de la traduction je vais chercher des sites de traduction mais je suis pas sur que ça réussisse mieux que google vu que c'est trés technique comme site mais si je trouve je te tiens au courant
cs_titicar
Messages postés181Date d'inscriptionjeudi 30 mai 2002StatutMembreDernière intervention19 août 2012 4 oct. 2007 à 21:11
Et oui évidemment, la souplesse de la v2, avec des balises personnalisable et de longueur variables, rendent la programmation plus compliquée. C'est pourquoi il faut connaitre la structure de la v2 pour comprendre comment l'utiliser.
Je vais essayer de faire un résumé sur la structure de la v2.3 (mais pas la v2.4 car elle se complique !). Tout cela juste pour te dire comment on récupère, de façon THEORIQUE, la longueur d'une balise 'normale'.
V2.3 est divisé en 2 grande partie:
- Le Header
- Les différentes balises.
1) Le header
Il a une longueur FIXE de 10 caractères (ou 10 bits ou 10 chiffres binaires, à ne pas confondre avec bytes [anglais] qui correspond à 1 octet [français]) :
- Les 3 premiers bits doivent être égal à "ID3" (dès lors, on est déjà dans une version v2): autrement dit, lors de la lecture du tag, si ce test est négatif, alors pas besoin d'aller plus loin : on quitte la procédure (sans oublier de 'fermer' le fichier qu'on vient d'ouvrir pour lire).
- Le 4ème et 5ème bits réprésente la version du Tag v2. Par exemple, c'est 03 et 00 pour dire ID3 v2.3.0... On passe...
- Le 6ème bit est un 'flag'... on passe aussi...
- Et les 4 derniers, donc de 7 à 10 représente la longueur TOTAL du tag v2, mais sans la taille du header. Ca représente donc la longueur total des différentes 'balises'. C'est très important car c'est dans cette longueur de zone qu'on va rechercher toutes les balises! Au delà de cette zone se trouve la partie 'audio' proprement dite qui n'a plus rien à voir avec le Tag.
D'un point de vue programmation, il va falloir travailler sur ces 4 bits pour les transformer en une seule valeur entière (donc sans virgule, à base décimale donc nos fameux 10 chiffres).
2) Les différentes balises
En fait, chaque balise est assimilé à un ensemble de 3 informations et cet ensemble est appelé 'Frame' dans la doc anglaise.
Et pour rechercher une balise, on va rechercher dans toutes les frames, LA frame contenant le nom associé à cette balise.
Chaque frame a donc 3 informations:
- Le nom de la balise: QUATRE bits uniquement, comme TALB, TIT2,...
- La longueur de la donnée associé à la balise, enregistré également dans 4 bits, qu'il faut convertir en un nombre entier (et voilà ton problème!)
- Et la donnée dont la longueur a été précisée juste avant.
CQFD! Voilà, tu connais maintenant la théorie pour connaître la longueur total d'un Tag, et la longueur d'une balise (ou d'un champ).
Je n'ai pas parlé de la conversion de plusieurs bits en une valeur décimale entière, mais peut-être le sais-tu déjà.
Oups, j'ai failli oublié : Pour scruter l'intérieur d'un fichier (surtout si l'on parle de binaire), j'espère que tu utilises plutôt un editeur hexa-décimale plutôt qu'un éditeur de texte.
cs_Jamsss
Messages postés11Date d'inscriptionvendredi 23 septembre 2005StatutMembreDernière intervention28 octobre 2007 28 oct. 2007 à 21:43
Salut,
Merci pour toutes ces explications elles m'aident vraiment a avancer sur mon projet, merci beaucoup!
Pour scruter l'interieur des fichiers j'utilise edithexa, c'était juste pour l'exemple le bloc note. sinon pour ceci:
"D'un point de vue programmation, il va falloir travailler sur ces 4 bits pour les transformer en une seule valeur entière (donc sans virgule, à base décimale donc nos fameux 10 chiffres)"
cela me pose un probleme car j'ai essayé d'ajouter les 4 bits en binaire puis de transformer en décimal mais ça ne fonctionne pas (peut être pas la bonne méthode)... en plus j'ai quelques mp3 qui n'ont même pas de valeur dans ces bits la!
cs_titicar
Messages postés181Date d'inscriptionjeudi 30 mai 2002StatutMembreDernière intervention19 août 2012 29 oct. 2007 à 19:08
Salut,
Tu n'utilises peut-être pas la bonne méthode pour la conversion binaire en décimal. Va voir du coté de Yomm dans sa classe pour le Tag v2.
Attention car la conversion n'est pas la même dans le Header et dans les Frames.
Sinon, c'est étonnant, mais peut être possible (je ne suis pas encore tombé sur ce cas) qu'il n'y est pas de valeur inscrite dans les bits respectifs du Header. C'est peut-être possible car plusieurs programmes ont l'air de 'bafouer' le standart de l'ID3v2 (ou alors, il y aurait plusieurs normes ???). Dès lors, pour rechercher la fin du Tag, il faudrait chercher le début de l'entête suivant, c-a-d l'entête MPEG... Oui ça se complique ! Et c'est ce que Yomm a fait.
Par curiosité, connais-tu le programme qui a 'tagger' ton mp3 ?