Сохранение аудио байта [] в файл WAV
В последние несколько дней были проблемы с попытками заставить это работать. Но я хочу, чтобы у нас было приложение, которое отправляет необработанные данные по сети. Затем я читаю эти двоичные данные и хочу сохранить их в файл wav (любой аудио). Могу посмотреть на сжатие позже.
Итак, проблемный код:
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);
Я тоже пытался использовать вышеприведенное утверждение, но я получаю исключение:javax.sound.sampled.UnsupportedAudioFileException: could not get audio input stream from stream
, Так что я думаю, что из-за того, что мой поток представляет собой необработанные аудиоданные и не имеет волнового заголовка, это исключение?
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);
Файл успешно записывается, но все статично. Нужно ли создавать волновой заголовок на выходе, используя что-то вродеэтот, Когда я смотрю на выведенный wav-файл в блокноте, кажется, что он имеет заголовок, который начинается с «RIFF».
Нужно ли добавлять поддельный заголовок в мой поток ввода? Должен ли я просто создать свой собственный выходной заголовок и просто сохранить его с двоичным писателем?