Pergunta

Estou lendo um arquivo .wav em um array de bytes com o seguinte código.

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

Existe uma maneira simples de remover os cabeçalhos .wav antes ou depois de ler na matriz de bytes?

Foi útil?

Outras dicas

Os dados do AudioInputStream read () método já é de dados wav matérias. Portanto, não há necessidade de se preocupar com o cabeçalho .wav. Se você quiser acessar o material de cabeçalho, você usaria o objeto AudioFormat associado a este AudioInputStream.

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

BTW, a menos que seu arquivo .wav é muito pequeno, você não vai conseguir tudo isso com uma única leitura como você fez com sua amostra. Você terá que colocar suas leituras em um loop while, como no primeiro trecho de código no tutorial acima citada.

Se estiver correta o cabeçalho .wav é de 44 bytes de comprimento, então pule / remover a primeira 44 e aí está.

não sei com certeza embora.

É um arquivo wav cabeçalho um tamanho fixo? Se assim for inputStream.skip?

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top