Lire/Ecrire Entête fichier Wav

Résolu
EvilGost Messages postés 235 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 16 mai 2011 - 12 mars 2007 à 23:15
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 - 13 mars 2007 à 21:01
Bonjour à tous,

voilà, j'ai un problème bien épineux. Je dois lire et écrire une entête d'un fichier wav. Je m'explique, j'ai une appli (qui n'est pas à moi, donc je n'ai pas les sources) qui écrit quelques choses dans l'entete d'un fichier wav (fichier audio non compressé).
J'ai donc besoin de récupérer le contenu de cette entete (header) et ,éventuellement, de pouvoir modifier cette entete.

J'ai bien trouvé quelques sources diverses sur internet, mais c'est du C, alors j'ai un peu de mal et je ne suis pas sur que cela corresponde.

En vous remerciant infiniment,

Cyril

10 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
13 mars 2007 à 21:00
Re
En deux mots (j'ai faim)
Il te suffit de préparer la structure comme ceci :
   Private Type typeFichierWAV
      Identification   As String * 4
      Donnée1         As Long
      Donnée2         As Long
      ...
   End Type
Bien sûr, il faut que la déclaration du type corresponde pile poil à l'entête
Tu dimensionnes une variable avec ce type
   Dim EnTete As typeFichierWav
Ensuite, tu ouvres ton fichier avec Open en mode Binary et tu n'as plus qu'à faire un
   Get #NoFichier, 1, EnTete
C'est tout. Il saura combien de bytes il doit lire puisque ta variable a une dimension fixe et définie
Tu n'auras plus qu'à extraire les données contenues dans
   EnTete.Identification
   EnTete.Donnée1 ...

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Champion du monde de boule de cristal - 2005
Le savoir est la seule matière qui s'accroit quand on
3
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
12 mars 2007 à 23:47
Salut
Comme tout fichier tehnique, il possède un entête.
Il est généralement composé d'un code de reconnaissance, 3 ou 4 lettres, puis d'une suite de valeurs correspondant aux caractéristiques technique du fichier (durée, nombre de trames, ...)
Il faut d'abord que tu trouves le document technique expliquant la structure de cet entête.
Ensuite seulement, tu pourras tenter de le lire et de le réécrire.
Pour cela, il suffira de créer une structure de variable "compatible en type" avec cet entête et de lire l'entête.
"compatible en type" c'est à dire qu'elle sera composée d'une suite de variables, genre :
- texte de 4 caractères
- suivi d'un entier Long dans lequel est stockée la durée (*)
- suivi d'un tableau d'octets représentant des options,
- suivi de ... je ne sais quoi
- suivi des données du fichier proprement dit
(*) La durée : en quelle unité ? C'est aussi pour cela qu'il faut trouver la description de l'entête

En général, quand je cherche ce genre d'info, je tape ceci dans mon moteur de recherche : "structure fichier WAV" ou "WAV file structure"
Jette aussi un oeil à ce site qui répertorie les extensions de fichiers avec, quelques fois, des liens vers ce genre d'infos plus pointues : clique ici

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Champion du monde de boule de cristal - 2005
Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
12 mars 2007 à 23:51
Tiens, bah en faisant un simple essai de recherche, je suis tombé la dessus : http://crteknologies.free.fr/programmation/ressources/wav.html

Pour la partie programmation, regarde comment sont faites les manipulations de TAG dans les fichiers MP3.
La structure du fichier d'entête est différente, mais la technique d'accès reste la même.
0
EvilGost Messages postés 235 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 16 mai 2011 2
13 mars 2007 à 00:08
Merci à toi pour la rapidité de ta réponse, effectivement, c'est un peu ce que j'avais lu sur le net, j'étais tombé sur la page de structure....et de la manière dont tu l'exposes, ca a l'air simple, mais je vois pas du tout comment je peux faire....
Je faisais surtout un appel pour quelqu'un qui aurait eventuellement une fonction qui aurait cette utilité...car je pense que je vais avoir un peu de mal à créer cette fonction de lecture.ecriture de header tout seul...

EvilGost [;)]
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
violent_ken Messages postés 1812 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 26 octobre 2010 2
13 mars 2007 à 14:27
Violent Ken

Salut, tu peux t'inspirer de çà :
http://www.vbfrance.com/codes/CLASSES-POUR-RECUPERER-INFOS-SUR-FICHIERS-BMP-GIF_41104.aspx
en adaptant les offsets à la structure de l'entête des WAV files.

@+
0
violent_ken Messages postés 1812 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 26 octobre 2010 2
13 mars 2007 à 14:28
Violent Ken

Ah pardon, c'est du .Net...

Désolé, @+
0
EvilGost Messages postés 235 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 16 mai 2011 2
13 mars 2007 à 14:56
Voui :p ....suis un peu paumé :(

EvilGost [;)]
0
violent_ken Messages postés 1812 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 26 octobre 2010 2
13 mars 2007 à 15:02
Remarque, tu peux toujours utiliser les APIs ReadFile, CreateFile et WriteFile (voir exemple en VB6 dans ma classe de gestion de fichiers)

@+
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
13 mars 2007 à 15:39
wotsit.org nous donne les specs du format :
http://www.wotsit.org/download.asp?f=wave&sc=227093154

Renfield
Admin CodeS-SourceS- MVP Visual Basic
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
13 mars 2007 à 21:01
PS : Exemples données en VB6. A toi de traduire ces pauvres instructions en .Net
0
Rejoignez-nous