Audio-Byte [] in einer WAV-Datei speichern

Ich hatte in den letzten Tagen einige Probleme damit, das zum Laufen zu bringen. Aber ich möchte, dass wir eine Anwendung haben, die Rohdaten über das Netzwerk sendet. Ich habe diese Binärdaten dann eingelesen und möchte sie in einer WAV-Datei (eine beliebige Audio-Datei) speichern. Könnte später auf die Komprimierung schauen.

Also der problematische Code:

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);                

Habe versucht, die obige Anweisung zu verwenden, aber ich bekomme die Ausnahme:javax.sound.sampled.UnsupportedAudioFileException: could not get audio input stream from stream. Ich denke also, dass dies eine Ausnahme auslöst, da mein Stream aus unformatierten Audiodaten besteht und keinen Wave-Header hat?

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);

Die Datei schreibt erfolgreich, ist aber alles statisch. Muss ich einen Wave-Header für die Ausgabe erstellen, indem ich so etwas wie benutze?diese. Wenn ich mir die ausgegebene WAV-Datei im Editor ansehe und sie scheint einen Header zu haben, da sie mit 'RIFF' beginnt.

Muss ich meinem Eingabestream einen falschen Header hinzufügen? Soll ich einfach meinen eigenen Ausgabe-Header erstellen und ihn mit einem Binärschreiber speichern?

Antworten auf die Frage(3)

Ihre Antwort auf die Frage