Domanda

Sto leggendo un file .wav in un array di byte con il seguente codice.

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

Esiste un modo semplice per rimuovere le intestazioni .wav prima o dopo aver letto nell'array di byte?

È stato utile?

Altri suggerimenti

I dati del metodo read () AudioInputStream sono già dati wav grezzi. Quindi non è necessario preoccuparsi dell'intestazione .wav. Se si desidera accedere all'intestazione, utilizzare l'oggetto AudioFormat associato a questo AudioInputStream.

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

A proposito, a meno che il tuo file .wav non sia veramente piccolo, non otterrai tutto con una sola lettura come hai fatto con il tuo campione. Dovrai mettere le tue letture in un ciclo while, come nel primo frammento di codice nel tutorial sopra citato.

Se corretto, l'intestazione .wav è lunga 44 byte, quindi salta / rimuovi i primi 44 e il gioco è fatto.

Non lo so per certo.

L'intestazione di un file wav ha una dimensione fissa? In tal caso inputStream.skip?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top