En marge du fichier audio, dans un MP3 on peut aussi trouver

Transcription

En marge du fichier audio, dans un MP3 on peut aussi trouver
En marge du fichier audio, dans un MP3 on peut aussi trouver des Tags ou informations texte sur le
contenu du MP3. Il existe 3 types de Tag.
Le Tag ID3 v1 en fin de fichier.
Le Tag ID3 v2 en début de fichier.
Le Tag APE en fin de fichier mais avant le Tag ID3 v1.
- Le tag ID3 v1 ne comporte que 6 informations sur le fichier à savoir le titre sur 30 caractères,
l'artiste sur 30 caractères, l'album sur 30 caractères, l'année sur 4 caractères, un commentaire sur 30
caractères et le genre sous la forme d'un chiffre (1 octet) de 1 à 255 représentant le genre par rapport
à une liste de genre définit (Détail des genres). Avec la mention "TAG" au début cela fait
exactement 128 caractères (128 octets). Il existe une variante qui ne donne que 28 caractères
seulement pour le commentaire et rajoute 1 caractère de séparateur (0) et 1 caractère pour la piste
(en hexadécimal).
Pour lire ce tag il suffit de se placer à 128 octets de la fin du fichier, si les 3 premiers octets
représentent la mention "TAG", la suite des caractères est définit comme précédemment. Sinon pas
de tag.
- Le Tag ID3 v2 est beaucoup plus souple et complet (en fonction de ce que l'on y met). Il se trouve
au début du fichier et commence toujours par la mention "ID3". Si cette mention est absente, il n'y a
pas de tag. Elle est suivit de 2 octets qui représentent la version du Tag (03 00 en général). Vient en
suite un flag sur 1 octet et la longueur totale de l'ensemble des tags ID3 v2 sur 4 octets. Attention
ces 4 octets sont codés sur 7 bits, le huitième bit est toujours à 0. C'est donc des puissances de 128
qu'il faut utiliser pour connaître la longueur des tags (x3 * 128^3 + x2 * 128^2 + x1 * 128^1 + x0 *
128^0). Cet ensemble représente les 10 premiers octets du fichier.
A partir du onzième se trouve le début du premier tag sur 4 octets suivit de la longueur de
l'information sur 4 octets et d'un flag sur 2 octets. Cet ensemble a une longueur de 10 octets. Le
onzième (vingt et unième depuis le début du fichier) octet, qui est toujours à 0, marque le début de
l'information du tag. Après l'information se trouvera le tag suivant.
I D 3 vv
x3 x2 x1 t3 t2 t1 l3 l2 l1
0 zz zz zz zz t3 t2 t1 l3 l2 l1 f1
f0
f1 f0
vv
x0
t0
l0
...zz
t0
l0
f0
0 zz zz zz zz
etc...
...zz
L'entête des tags suivi de sa version vv vv (03 00 en général) sur 5 octets.
Flag sur 1 octets ???.
Longueur total des tag sur 4 octets de 7 bits.
Label du tag sur 4 octets indiquant le type d'information contenu, commence toujours par une lettre
majuscule de A à Z.
Longueur de l'information contenu sur 4 octets.
Flag sur 2 octets ???.
Texte du tag, commence toujours par un 0
Label du tag sur 4 octets indiquant le type d'information contenu, commence toujours par une lettre
majuscule de A à Z.
Longueur de l'information contenu sur 4 octets.
Flag sur 2 octets ???.
Texte du tag, commence toujours par un 0
TPE1
TALB
TIT2
TYER
TDRC
-
artiste
CD
titre
année
année
TCON
TLEN
MCDI
TENC
TCOP
- genre
- durée
- N° CD
-
TRCK - piste COMM - commentaire
D'autre information sur les types de tag ID3 v2
- Le Tag APE est surtout utilisé par le logiciel MP3GAIN pour indiquer les modifications qu'il a
apportées au MP3.
Il est situé en fin de fichier avant le Tag ID3v1.
Il commence par un entête de 32 octets et fini de même à l'exception d'un bit de flag.
L'entête commence toujours par la mention "APETAGEX" (8 octets) suivit de 4 octets pour la
version ( D0 07 00 00 = 2000 en décimal sur 4 octets inversés) puis la taille de l'ensemble du tag sur
4 octets puis le nombre d'information sur 4 octets puis un flag sur 4 octets et enfin 8 octets réservés
(à 00). Total de l'ensemble 32 octets. A l'exception d'un bit de flag, cet ensemble sera répété à la fin
du tag. Attention : la taille et le nombre d'infos sont codés sur 4 octets inversés, c'est à dire le poid
faible en premier et le poid fort en dernier (de gauche à droite en quelque sorte).
Dans le flag, le sixième bit du quatrième octet définit le début du tag s'il est à 1 ou la fin du tag s'il
est à 0.
Entre les entêtes se trouvent les informations. Ca commence par 4 octets inversés pour donner la
longueur de l'information suivit de 4 octets pour le flag puis un label de longueur variable pour
l'information. Ce label se termine par toujours par un octet à 00 (séparateur). Après le séparateur se
trouve l'information dont la longueur a été définit par les 4 premiers octets. Ce groupe est répété
autant de fois qu'il n'a été définit de nombre d'information dans l'entête du tag.
- La partie "audio" du MP3 commence par un entête de 4 octets. Ces 4 octets donnent des
informations sur le type de MP3. Cet entête se trouve après les tag ID3 v2 s'il y en a. Il n'a pas de
position précise dans le fichier, il faut le chercher. Il commence toujours par une série de 11 bits à 1
(FF Ex xx xx ou FF Fx xx xx).
1111 1111 - 111B BCCD - EEEE FFGH - IIJJ KLMM
BB version de MPEG (11-v1, 10-v2, 01-reserved, 00-v2.5)
CC numéro de layer (11-layer 1, 10-layer 2, 01-layer 3, 00-reserved)
D protection bit (0 protection par CRC, 2 octets suive l'entête. 1 pas de protection)
EEEE bitrate index.
FF sampling rate frequency index.
G padding bit.
H private bit.
II chanel mode (11-single channel, 10-dual channel, 01-joint stéréo, 00-stéréo)
JJ mode extention seulement si "joint stéréo"
K copyright (1 copyright, 0 pas de copyright).
L original (1 original, 0 copie)
MM emphasis (11-CCIT J.17, 10-reserved, 01-50/15ms, 00-none)
D'autre information sur le Header des MP3
- Après l'entête peut se trouver la mention "Xing" pour indiquer un MP3 de type VBR (compression
variable). Cette mention peut se trouver 9, 17 ou 32 octets plus loin en fonction du type de MP3
(Mpeg V1 mono 17 octets, pas mono 32 octets et Mpeg V2/2.5 mono 9 octets, pas mono 17 octets).
Si la mention Xing existe, à sa suite se trouvent 4 octets de flag. Les 2 premiers bits du dernier octet
indiquent la présence du nombre de frame sur 4 octets et la présence de la taille du fichier MP3 sur
les 4 octets suivant à la suite des flags.
xx xx
Xing f3 f2 f1 f0
aa aa aa aa bb bb bb bb
xx ...
f0 = xxxx
si z =1 nombre si y =1 taille
xxyz
de frame
du fichier
- Après l'entête peut se trouver la mention "VBRI" pour indiquer un MP3 de type VBR
(compression variable). Cette mention devrait se trouver 32 octets plus loin. Si la mention VBRI
existe, à la suite se trouvent 2 octets pour indiquer la version de VBRI. Les 2 octets suivants
indiquent le délai (je ne sais pas ce que c'est mais c'est utile pour le calcul de la durée), les 2 octets
suivants indiquent la qualité du VBRI, puis le nombre de frames sur 4 octets et encore la taille du
fichier MP3 sur les 4 octets suivants.
dd dd dd
VBRI aa aa bb bb cc cc
ee ee ee ee
xx xx xx ...
dd
VBRI + version Délai Qualité Taille MP3 Nombre de frames
...
- Calcul de la durée d'un MP3:
Pour le type Xing, c'est facile, voila la formule: durée = (bb bb bb bb * 8 / 1000) / ((bb bb bb bb *
8 / 1000) / (aa aa aa aa / 38 - 1)).
Pour le type Vbri, c'est facile, voila la formule: durée = ((dd dd dd dd - bb bb) * 8 / 1000) / (((dd dd
dd dd - bb bb) * 8 / 1000) / (ee ee ee ee / 38 - 1)).
Pour les autres, c'est un peu plus compliqué.
Tableau pour la détermination du Bitrate (EEEE)
bits V1,L1 V1,L2 V1,L3 V2,L1 V2, L2 & L3
0000 free free free free free
0001 32
32
32
32
8
0010 64
48
40
48
16
0011 96
56
48
56
24
0100 128 64
56
64
32
0101 160 80
64
80
40
0110 192 96
80
96
48
0111 224 112 96
112 56
1000 256 128 112 128 64
1001 288 160 128 144 80
1010 320 192 160 160 96
1011 352 224 192 176 112
1100 384 256 224 192 128
1101 416 320 256 224 144
1110 448 384 320 256 160
1111 bad bad bad bad bad
V1 pour MPEG V1, V2 pour MPEG V2/V2.5 (BB)
L1 pour layer 1, L2 pour layer 2 et L3 pour layer (CC)
Tableau pour la determination du sampling rate (FF)
bits MPEG1 MPEG2 MPEG2.5
00 44100 22050 11025
01 48000 24000 12000
10 32000 16000 8000
11 reserv. reserv. reserv.
MPEG > BB
Méthode 1:
Taille frame pour layer 3 et 2 : 144 * bitrate * 1000 / sampling rate - G.
Taille frame pour layer 1 : (12 * bitrate * 1000 / sampling rate - G) * 4 (le * 4, je ne suis pas sûr,
suivant les informations que j'ai trouvées, il n'est pas toujours là ? Mais comme j'ai pas de layer 1
pour tester !)
Nombre de frame : (taille fichier MP3 - taille des tags) / taille frame.
Durée pour un MPEG V2/2.5 layer 1 : nombre de frame * 132 / sampling rate
Durée pour un MPEG V1/2/2.5 layer 2 et 3 : nombre de frame * 1152 / sampling rate
Durée pour un MPEG V1 layer 1 : nombre de frame * 384 / sampling rate
Méthode 2:
((taille fichier MP3 - taille des tags) * 8 / 1000) / bitrate.
Après tests, les 2 méthodes semblent équivalentes !
Ces formules ont été testées sur des MPEG V1/2/2.5 layer 3, VBR et non VBR. Pour les autres type
ainsi que pour VBRI, je n'ai pas de MP3 (qui ne seront plus des MP3 puisque le MP3 vient du
MPEG layer 3 !).
Logiciel pour lire les informations en vrac dans le MP3 V8.3
Affiche aussi l'images contenu dans le MP3 si l'image est de type JPG, BMP ou PNG.
Toutes ces informations proviennent de:
http://mgc99.free.fr/InfoMP3.html

Documents pareils