PC SOFT

PROFESSIONAL NEWSGROUPS
WINDEVWEBDEV and WINDEV Mobile

Home → WINDEV 2024 → ActiveX fichier mp3
ActiveX fichier mp3
Started by jmperier, Mar., 21 2006 5:08 PM - 5 replies
Posted on March, 21 2006 - 5:08 PM
Bonjour,

Je cherche un AcuveX ou des fonctions WD qui me permettraient de manipuler des fichiers audio au format MP3.
Je veux juste marquer le début et la fin de plusieurs séquences sur un même fichier mp3, et lire ces séquences.
L'idéal par la suite serait de découper ces séquences et les coller.

Si quelqu'un à une pite à me donner, merci de son aide.

Cordialement

JMP
Posted on March, 22 2006 - 9:56 AM
JMP a écrit dans le message

Bonjour,

Je cherche un AcuveX ou des fonctions WD qui me permettraient de manipuler
des fichiers audio au format MP3.
Je veux juste marquer le début et la fin de plusieurs séquences sur un
même fichier mp3, et lire ces séquences.
L'idéal par la suite serait de découper ces séquences et les coller.

Si quelqu'un à une pite à me donner, merci de son aide.

Cordialement

JMP


Bonjour,

Les fichier MP3 sont organisé en paquet de taille fixe, passé l'entête de
début (TAG), tu peux couper le fichier à n'importe quel endroit, du moment
que tu conserve des paquets entiers.

Les paquets débutent toujours par une entête sur 4 octets, voici un moyen
simple de trouver le début du paquet :
-------------------------------------------------------------------------
PROCEDURE Entete_MP3() // Renvoie vrai si l'entéte (head) est trouvé
Renvoyer (EtBinaire(Head[1],0xFE) = 0xFE) et ...
(EtBinaire(Head[2],0xE0) = 0xE0) et ...
(EtBinaire(Head[2],0x06) <> 0) et ... // Layer 0
(ETBinaire(Head[3],0xF0) <> 0xF0) et ... // Kbs 0
(ETBinaire(Head[3],0x0C) <> 0x0C) // KHz 0
------------------------------------------------------------------------

Voici une procédure qui retourne les paramètres MPEG du fichier et la
longueur de la Trame.
------------------------------------------------------------------------
Procédure Set_TrameMpeg()

Trame = 0
T est un entier court = (etbinaire(Head[2],0x18) / 8)
selon T
cas 0
Mpeg = 25
cas 2
Mpeg = 2
cas 3
Mpeg = 1
fin

T = etbinaire(Head[2],0x06) / 2
selon T
cas 1
Layer = 3
cas 2
Layer = 2
cas 3
Layer = 1
fin

si (Mpeg > 0) et (Layer > 0) alors

T = etbinaire(Head[3],0x0C) / 4
T++

selon Mpeg
cas 1
Freq = SampleRates_1[T]
cas 2
Freq = SampleRates_2[T]
cas 25
Freq = SampleRates_25[T]
fin

T = etbinaire(Head[3],0xF0) / 16
T++

si Mpeg = 1 alors
selon Layer
cas 1
Kilo = BitRates_1L1[T]
cas 2
Kilo = BitRates_1L2[T]
cas 3
Kilo = BitRates_1L3[T]
FIN
sinon
si Layer = 1
Kilo = BitRates_2L1[T]
sinon
Kilo = BitRates_2Lx[T]
fin
fin

ModeMpeg = etbinaire(Head[4],0xF0) / 64
ModeMpeg++

si (Freq > 0) et (Kilo > 0) alors
Lg est un entier long = 1152
Lg = Lg * Kilo
Lg = Lg * 1000
selon Freq
cas 8
Echant_Sec = 08000
cas 11
Echant_Sec = 11025
cas 12
Echant_Sec = 12000
cas 16
Echant_Sec = 16000
cas 22
Echant_Sec = 22050
cas 24
Echant_Sec = 24000
cas 32
Echant_Sec = 32000
cas 44
Echant_Sec = 44100
cas 48
Echant_Sec = 48000
fin

Lg = Lg / Echant_Sec

Trame = Lg / 8
fin
fin
------------------------------------------------------------------------

@+
Vincent Barré
Posted on March, 22 2006 - 11:38 AM
Tu devrais peut-etre te tourner vers des dll comme BASS ou FMOD
Cordialement
Posted on March, 22 2006 - 3:14 PM
Merci à vous deux de vos réponses.

J'ai de quoi bien commencer mon développement.

Cordialement,

JMP
Posted on March, 23 2006 - 9:32 AM
Bonjour,
J'ai oublié dans le code la valeur des tableaux utilisé, je les met ici au
cas ou cela t'intéresse.
@+
Vincent
--------------------------------
BitRates_1L3[1] = 0
BitRates_1L3[2] = 32
BitRates_1L3[3] = 40
BitRates_1L3[4] = 48
BitRates_1L3[5] = 56
BitRates_1L3[6] = 64
BitRates_1L3[7] = 80
BitRates_1L3[8] = 96
BitRates_1L3[9] = 112
BitRates_1L3[10] = 128
BitRates_1L3[11] = 160
BitRates_1L3[12] = 192
BitRates_1L3[13] = 224
BitRates_1L3[14] = 256
BitRates_1L3[15] = 320
BitRates_1L3[16] = 0

BitRates_1L2[1] = 0
BitRates_1L2[2] = 32
BitRates_1L2[3] = 48
BitRates_1L2[4] = 56
BitRates_1L2[5] = 64
BitRates_1L2[6] = 80
BitRates_1L2[7] = 96
BitRates_1L2[8] = 112
BitRates_1L2[9] = 128
BitRates_1L2[10] = 160
BitRates_1L2[11] = 192
BitRates_1L2[12] = 224
BitRates_1L2[13] = 256
BitRates_1L2[14] = 320
BitRates_1L2[15] = 384
BitRates_1L2[16] = 0

BitRates_1L1[1] = 0
BitRates_1L1[2] = 32
BitRates_1L1[3] = 64
BitRates_1L1[4] = 96
BitRates_1L1[5] = 128
BitRates_1L1[6] = 160
BitRates_1L1[7] = 192
BitRates_1L1[8] = 224
BitRates_1L1[9] = 256
BitRates_1L1[10] = 288
BitRates_1L1[11] = 320
BitRates_1L1[12] = 352
BitRates_1L1[13] = 384
BitRates_1L1[14] = 416
BitRates_1L1[15] = 448
BitRates_1L1[16] = 0

BitRates_2L1[1] = 0
BitRates_2L1[2] = 32
BitRates_2L1[3] = 48
BitRates_2L1[4] = 56
BitRates_2L1[5] = 64
BitRates_2L1[6] = 80
BitRates_2L1[7] = 96
BitRates_2L1[8] = 112
BitRates_2L1[9] = 128
BitRates_2L1[10] = 144
BitRates_2L1[11] = 160
BitRates_2L1[12] = 176
BitRates_2L1[13] = 192
BitRates_2L1[14] = 224
BitRates_2L1[15] = 256
BitRates_2L1[16] = 0

BitRates_2Lx[1] = 0
BitRates_2Lx[2] = 08
BitRates_2Lx[3] = 16
BitRates_2Lx[4] = 24
BitRates_2Lx[5] = 32
BitRates_2Lx[6] = 40
BitRates_2Lx[7] = 48
BitRates_2Lx[8] = 56
BitRates_2Lx[9] = 64
BitRates_2Lx[10] = 80
BitRates_2Lx[11] = 96
BitRates_2Lx[12] = 112
BitRates_2Lx[13] = 128
BitRates_2Lx[14] = 144
BitRates_2Lx[15] = 160
BitRates_2Lx[16] = 0

SampleRates_1[1] = 44
SampleRates_1[2] = 48
SampleRates_1[3] = 32
SampleRates_1[4] = 0

SampleRates_2[1] = 22
SampleRates_2[2] = 24
SampleRates_2[3] = 16
SampleRates_2[4] = 0

SampleRates_25[1] = 11
SampleRates_25[2] = 12
SampleRates_25[3] = 08
SampleRates_25[4] = 0

StMode[1] = " Stereo "
StMode[2] = " Js-Str "
StMode[3] = " 2-Voie "
StMode[4] = " -Mono- "
Posted on March, 28 2006 - 8:31 AM
Bonjour,

Je commence à peine à me plonger dans le découpage MP3, et c'est vrai que ce n'est finalement pas aussi simple que je ne le pensais.

Merci pour les constantes tableau que je n'aurais pas pu inventer.

Avez-vous un peu plus de code sur la valorisation du tableau Head ?

J'ouvre mon fichier MP3, je le lis octet par octet mais je ne comprends pas trop la structure du fichier mp3 : je ne trouve pas d'infos utiles sur le net.

Auriez vous des adresses de site me permettant de mieux comprendre la structure des fichiers mp3 ?

Merci,

JMP