|
PROFESSIONAL NEWSGROUPS WINDEV, WEBDEV and WINDEV Mobile |
| | | | | |
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) / 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 |
| |
| |
| | | |
|
| | | | |
| | |
| | |
| |
|
|
|