Zapisywanie bajtu audio [] do pliku wav

W ciągu ostatnich kilku dni miałem trochę kłopotów, próbując doprowadzić to do skutku. Ale chcę, żebyśmy mieli aplikację, która wysyła surowe dane przez sieć. Następnie czytam te dane binarne i chcę je zapisać w pliku wav (dowolnym audio). Może wyglądać na kompresję później.

Więc problematyczny kod:

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

Próbowałem również użyć powyższej instrukcji, ale otrzymuję wyjątek:javax.sound.sampled.UnsupportedAudioFileException: could not get audio input stream from stream. Tak więc myślę, że dzieje się tak, ponieważ mój strumień jest surowymi danymi audio i nie ma nagłówka fali, co powoduje wyjątek?

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

Plik pomyślnie zapisuje, ale wszystko jest statyczne. Czy muszę utworzyć nagłówek wave na wyjściu, używając czegoś podobnegoto. Kiedy patrzę na wyprowadzony plik wav w notatniku i wydaje się, że ma nagłówek, ponieważ zaczyna się od „RIFF”.

Czy muszę dodać fałszywy nagłówek do mojego strumienia wejściowego? Czy powinienem po prostu utworzyć własny nagłówek wyjściowy i po prostu zapisać go za pomocą programu do zapisu binarnego?

questionAnswers(3)

yourAnswerToTheQuestion