Заполнение тишины в конце wav-файла до 160-октетного кадра

#java #file-io #wav #outputstream #javasound

#java #file-io #wav #outputstream #javasound

Вопрос:

У меня проблема с воспроизведением файлов wav, когда проигрыватель отправляет поток RTP по сети. Последний байт отправляемого wave-файла дополняется 00 00 00 …, чтобы сделать его 172-байтовым пакетом. Это дополнительное заполнение вызывает звук щелчка в конце файла при прослушивании. Чтобы избежать этого звука щелчка, мне нужно заполнить файлы wave тишиной (вместо 00 00 00). Заполнение должно быть таким, чтобы оно создавало полный 160-октетный кадр в конце файла, чтобы избежать добавления проигрывателем нулей.

Для этого мне нужно написать небольшую служебную программу. Я изучил java sound api, и я в значительной степени выяснил, как добавить wav-файл к другому файлу или создать новый wav-файл, записав биты в выходной поток.

Мне нужна помощь в том, как мне записать тишину в конец wav-файла, чтобы сделать его полным 160-октетным кадром. Кроме того, я не могу добавить 0s для добавления тишины, должен ли я написать 0xff для создания тишины?

Пожалуйста, помогите? Спасибо.

Ответ №1:

Значение PCM для тишины равно 0!

Я ничего не знаю о потоковой передаче RTP, поэтому отнеситесь к этому с некоторым скептицизмом. Я подозреваю, что проблема заключается не в самом заполнении (если это действительно просто строка из 0), а в переходе от фактического wav к заполнению.

Если wav звучит в конце, то резкий переход к 0 может быть проблемой. Возможно, вам потребуется обеспечить какое-то уменьшение громкости вместо резкого перехода к значениям 0.

Обеспечивает ли декодирование RTP чистый способ распознавания конца передачи wav?