Я пытаюсь создать аудиофильтр, используя API 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 () принимает входной поток. Есть идеи?