2014-08-29 6 views
1

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

Редактировать Клиент для Windows и Linux Сервер

+1

Правильный ответ на этот вопрос полностью зависит от вашей операционной системы. Приложение, работающее в Microsoft Windows, делает это полностью иначе, чем приложение, работающее в Linux. Используемая здесь операционная система должна быть указана. –

ответ

3

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

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

Смежные вопросы