Как воспроизвести аудиопоток по UDP?
Я пишу приложение для Windows, оно получает аудиоданные из приложения Android, я использую UDP для передачи данных по локальной сети и использую RtAudio для воспроизведения аудиопотока.
Каждая полезная нагрузка пакета UDP представляет собой массив аудиосэмплов в формате 32k/16bit/pcm.
Когда размер данных составляет 576 байтов, другими словами 288 сэмплов, все в порядке, мы можем слышать чистый голос.
Но при размере данных в 192 байта, 96 сэмплов, другими словами, звук не чистый.
У кого-нибудь есть проблема?
1 ответ
Это уравновешивающее действие для определения оптимального размера каждого буферного пакета... слишком большого, и вы постепенно отходите от отклика в реальном времени, но слишком маленького, и код тратит пропорционально слишком много времени на согласование типовой схемы простой передачи данных. Похоже, что вы достигли этой нижней границы, когда, как вы говорите, начинает действовать 192 байта.
Это действительно независимо от транспортного механизма. Также имейте в виду, что длительность настенных часов, потребляемых при прослушивании нескольких сотен байтов, является крошечной (обычно 42 100 сэмплов в секунду для монофонического аудио качества CD), поэтому вы не потеряете много в режиме реального времени, чтобы дать себе больше, чем эта нижняя граница. ударил.