Étape 7: Lecture de l’en-tête de wav
Fichiers WAV sont enregistrées avec une taille de données et fréquence spécifiée.
Cette information est contenue dans un en-tête de 44 octets au début d’un fichier wav.
Même si certains logiciels étend l’en-tête (après octet 35), rendant l’endroit des données taille plus difficiles à localiser.
Pour lire l’en-tête, nous créons un tampon et copier le début du fichier.
La fréquence est stockée dans 4 octets à partir de 24 octets dans le fichier.
lire la fréquence spécifiée dans l’en-tête de fichier wav
headbuf Byte [60]
tempfile.Seek(0) ;
tempfile.Read(headbuf,60) ;
retval = headbuf [27] ;
retval = (retval << 8) | headbuf [26] ;
retval = (retval << 8) | headbuf [25] ;
retval = (retval << 8) | headbuf [24] ;
Serial.Print (F "(fréquence de fichier)) ;
Serial.Print(retval) ;
.
La meilleure façon de trouver les informations de taille de données consiste à rechercher le mot « données » dans l’en-tête.
Puis extraire les 4 octets suivant, qui constituent la valeur de type long
unsigned long retval ;
int mypos = 40 ;
pour (int i = 36; i < 60; i ++) {}
Si (headbuf [i] == avait ') {}
{if(headbuf[i+1]=='a')}
{if(headbuf[i+2]=='t')}
{if(headbuf[i+3]=='a')}
Enfin nous l’avons
Mypos = i + 4 ;
J’ai = 60 ;
}
}
}
}
}
tempfile.Seek(Mypos) ;
retval = headbuf [mypos + 3] ;
retval = (retval << 8) | headbuf [mypos + 2] ;
retval = (retval << 8) | headbuf [mypos + 1] ;
retval = (retval << 8) | headbuf [mypos] ;
.
OK, nous avons la longueur des données et la fréquence !
Les données audio suit les 4 octets qui composent la valeur de longueur de données.