Angesichts einer InputStream
namens in
, die Audiodaten in einem komprimierten Format (wie MP3 oder OGG) enthält, möchte ich ein byte
-Array mit einer WAV-Konvertierung des Eingangs erstellen Daten. wenn Sie Leider versuchen, dies zu tun, die Hände Javasound Sie den folgenden Fehler:Konvertieren Audiostream in WAV-Byte-Array in Java ohne temporäre Datei
java.io.IOException: stream length not specified
ich es geschafft, es zu bekommen, indem er die wav in eine temporäre Datei zu arbeiten, dann ist es wieder beim Lesen, wie unten dargestellt:
AudioInputStream source = AudioSystem.getAudioInputStream(new BufferedInputStream(in, 1024));
AudioInputStream pcm = AudioSystem.getAudioInputStream(AudioFormat.Encoding.PCM_SIGNED, source);
AudioInputStream ulaw = AudioSystem.getAudioInputStream(AudioFormat.Encoding.ULAW, pcm);
File tempFile = File.createTempFile("wav", "tmp");
AudioSystem.write(ulaw, AudioFileFormat.Type.WAVE, tempFile);
// The fileToByteArray() method reads the file
// into a byte array; omitted for brevity
byte[] bytes = fileToByteArray(tempFile);
tempFile.delete();
return bytes;
Dies ist offensichtlich weniger wünschenswert. Gibt es einen besseren Weg?
Ich muss das versuchen. Es könnte ein bisschen dauern, bevor ich es versuchen kann, daher kann ich die Antwort im Moment nicht akzeptieren. Ich werde es jedoch aufwerten. –