Я пытаюсь создать звуковой фильтр с помощью API JavaSound для чтения и записи аудиофайлов. В настоящее время мой код структурирован следующим образом:Запись JavaSound в аудиофайл с потоком
ByteArrayOutputStream b_out = new ByteArrayOutputStream();
// Read a frame from the file.
while (audioInputStream.read(audioBytes) != -1) {
//Do stuff here....
b_out.write(outputvalue);
}
// Hook output stream to output file
ByteArrayInputStream b_in = new ByteArrayInputStream(b_out.toByteArray());
AudioInputStream ais = new AudioInputStream(b_in, format, length);
AudioSystem.write(ais, inFileFormat.getType(), outputFile);
Это читает входной файл в виде потока, обрабатывает его и записывает его в ByteArrayOutputStream, но он ждет, пока весь файл не был обработан перед записью на диск. В идеале я бы хотел, чтобы каждый образец записывался на диск, когда он обрабатывался. Я пробовал несколько комбинаций потоковых конструкций, но не могу найти способ сделать это, поскольку AudioSystem.write() принимает входной поток. Есть идеи?