Salvando o byte de áudio [] em um arquivo wav
Está tendo um pouco de dificuldade nos últimos dias tentando fazer com que isso funcione. Mas o que eu quero é que tenhamos um aplicativo que envie dados brutos pela rede. Eu então leio esses dados binários e quero salvá-los em um arquivo wav (qualquer áudio). Pode olhar para a compressão mais tarde.
Então o código problemático:
byte[] allBytes = ...
InputStream b_in = new ByteArrayInputStream(allBytes);
try
{
AudioFormat format = new AudioFormat(8000f, 16, 1, true, true);
AudioInputStream stream = new AudioInputStream(b_in, format, allBytes.length);
//AudioInputStream stream = AudioSystem.getAudioInputStream(b_in);
Tentei usar a declaração acima também, mas recebo a exceção:javax.sound.sampled.UnsupportedAudioFileException: could not get audio input stream from stream
. Então, o que eu acho que está acontecendo é que, como meu fluxo é um dado de áudio bruto e não tem um cabeçalho de onda, isso gera uma exceção?
File newPath = new File(SystemConfiguration.getLatest().voiceNetworkPathDirectory + currentPhoneCall.fileName);
if (!AudioSystem.isFileTypeSupported(Type.WAVE, stream))
{
Logger.error("Audio System file type not supported");
}
AudioSystem.write(stream, Type.WAVE, newPath);
O arquivo é gravado com sucesso, mas é tudo estático. Preciso criar um cabeçalho de onda na saída usando algo comoisto. Quando eu olho para o arquivo wav emitido no notepad e ele parece ter um cabeçalho quando ele começa com 'RIFF'.
Preciso adicionar um cabeçalho falso ao meu fluxo de entrada? Devo apenas criar meu próprio cabeçalho de saída e salvá-lo apenas com um gravador binário?