Я пытаюсь прочитать WAV-файл в массив байтов, который будет отправлен по сокетному соединению и воспроизведен с другой стороны. Я столкнулся с проблемой, когда данные заголовка файла будут прочитаны, остальная часть файла просто заполнит массив байтов 0. Вот пример кода. Я пробовал несколько других подходов, но все они дают одинаковый результат.Чтение .wav-файла в массив байтов в Java
File audioIn = new File("assets/file.wav");
byte [] byteArray = new byte[filesize];
FileInputStream fileInStream = new FileInputStream(audioIn);
fileInStream.read(byteArray);
Вот данные отладки, взятые из отдельных байтов. Информация заголовка соответствует тому, что ранее извлекли методы Java. Из того, что я прочитал, звуковые данные должны начинаться с байт [44], однако я получаю результаты ниже. Остальная часть массива заполняется 0s.
Byte 0: 82
Byte 1: 73
Byte 2: 70
Byte 3: 70
...
Byte 41: 97
Byte 42: 0
Byte 43: -68
Byte 44: -1
Byte 45: 1
Byte 46: 0
Byte 47: 0
...
Следует также отметить, что данные заголовка будет отброшен здесь информация WAVE будет отправлен в течение заранее. Заранее спасибо за вашу помощь.
Соответствуют ли байт содержимому 'file.wave'? Для проверки используйте шестнадцатеричный просмотрщик ('od -h' в Unix/Linux/OSX). –
1) Я бы отправил весь файл (лишние 44 байта в голове будут иметь мало значения.) 2) Вы понимаете, что многие образцы звука начинаются с «0 объемного звука» до создания до нормального объема, не так ли? –