Частен блог - Как да напиша звук в Java в байтов масив
Как да напиша звук в Java в байтов масив
Има много задачи, при които може да искате да изпратите аудио като масив от байтове по мрежа. Java изостава много по този въпрос и отдавна не е разработила своя API за работа със звук. Това затруднява решаването на привидно прости въпроси.

Сайтът вече има пример за запис на звук с помощта на Java. Примерът е прост и записва звук само във файл.
За да опростите задачата, можете просто да прочетете файла по-късно в байтов масив, но методът "AudioSystem.write" може също да бъде извикан с поток като последен аргумент. Това веднага ще реши проблема, но не е толкова просто. Когато се опитвате да извикате метода "write" с произволен поток, възниква грешка: дължината на потока не е посочена.
Това се дължи на факта, че записът е във формат WAVE, което изисква размера на записаните данни в заглавката на файла. Този размер не може да бъде известен до края на записа, което причинява грешката.
Проблемът може да бъде решен, ако независимо внедрите AudioSystem.write за формата WAVE.
Трябва да започнете с класа, който ще отговаря за генерирането на правилния хедър на WAVE формат:
Този клас работи само с двуканално 16-битово аудио. Той ни предоставя метод за запис и getByteBuffer и решава проблема с получаването на масив от байтове със записано аудио без използване на междинен файл.
Споделете „Как да напиша звук в Java в байтов масив“