Question

Je lis un fichier .wav dans un tableau d'octets avec le code suivant.

AudioInputStream inputStream = 
    AudioSystem.getAudioInputStream(/*my .wav file */);
int numBytes = inputStream.available();
byte[] buffer = new byte[numBytes];
inputStream.read(buffer, 0, numBytes);
inputStream.close();

Existe-t-il un moyen simple de supprimer les en-têtes .wav avant ou après la lecture dans le tableau d'octets?

Était-ce utile?

Autres conseils

Les données de la méthode AudioInputStream read () sont déjà des données wav brutes. Vous n'avez donc pas à vous soucier de l'en-tête .wav. Si vous souhaitez accéder au contenu de l'en-tête, vous utiliserez l'objet AudioFormat associé à ce AudioInputStream.

http://download.oracle.com/javase/tutorial/sound/ converters.html

BTW, à moins que votre fichier .wav soit vraiment petit, vous ne l'obtiendrez pas en une seule lecture, comme vous l'avez fait avec votre échantillon. Vous devrez mettre vos lectures dans une boucle while, comme dans le premier fragment de code du tutoriel cité ci-dessus.

Si correct, l'en-tête .wav a une longueur de 44 octets, sautez / supprimez le premier 44 et le tour est joué.

Je ne sais pas avec certitude.

Un en-tête de fichier wav a-t-il une taille fixe? Si oui inputStream.skip?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top