C ++ Потоковое аудио с микрофона

У меня есть классическая клиент-серверная среда на С ++.
Теперь я хочу реализовать голосовой чат между конкретными клиентами.
Моя проблема: Как транслировать без «пауз» аудио. Я интересуюсь только теорией.
Моей первой идеей было записывать несколько байтов каждые 0,5 секунды в буфер, а затем отправлять его на сервер, который повторно отправлял заинтересованным клиентам.
Но я не знаю, как сделать это в режиме реального времени, насколько это возможно!

Клиент редактирования — Windows, а сервер — Linux

1

Решение

Вы должны выбрать кодек и поток на основе тактовой частоты, указанной этим кодеком. Например, G.711 Кодек задает тактовую частоту 8000 Гц (то есть источник входного сигнала с микрофона будет дискретизироваться 8000 раз в секунду). Также указывается, что (по умолчанию) каждый пакет должен содержать 20 миллисекунд аудио, поэтому в течение одной секунды вы будете отправлять 50 аудиопакетов (1 секунда = 1000 миллисекунд / 20 миллисекунд на пакет = 50 пакетов в секунду).

С точки зрения реализации (для реального времени) у вас будет отдельный поток с приоритетом «в реальном времени», который будет отвечать за выборку звука с микрофона, упаковку его в RTP-пакет и доставку этого пакета на ваш сервер. Ваш сервер также будет иметь отдельный приоритетный поток «в реальном времени», который будет получать каждый RTP-пакет и пересылать его каждому подписанному клиенту.

3

Другие решения


По вопросам рекламы [email protected]