Голосовая конференция - как привлечь больше людей к разговору? - PullRequest
3 голосов
/ 05 февраля 2010

Прежде всего, я просто любитель, поэтому извините, если это глупый вопрос или я слишком наивен. (Это также означает, что я не могу купить дорогие библиотеки)

Это ситуация: я создаю простое приложение голосового чата в C # .NET (что-то вроде Ventrilo или TeamSpeak, но только для 15 или 20 человек и работает в локальной сети 100 Мбит / с). У меня есть рабочий сервер (поток для каждого клиента) и клиентское приложение, использующее UDP для подключения и DirectSound для захвата и воспроизведения звука. Я могу звонить «1 на 1», но не могу понять одну из самых важных вещей:

Как мне разговаривать более двух человек?

1 Ответ

2 голосов
/ 06 февраля 2010

Вам нужно какое-то централизованное место для отправки пакетов обратно через многоадресную рассылку, или же вам нужен децентрализованный подход, где каждый клиент подключен к каждому другому клиенту, и каждый клиент размещает многоадресную рассылку. Чего вы хотите избежать, так это заставить машины пересылать свои данные на каждую другую машину, что приведет к O (n) времени на отправку сообщения на каждую машину (а I / O медленный!).

В любом случае вы сталкиваетесь с одной и той же проблемой: как объединить аудиопотоки. Одним простым механизмом для достижения этой цели является объединение битовых сигналов или сигналов до того, как вы отправите их обратно (либо через сетевой порт, либо через динамики), но это предполагает, что у вас есть доступ к несжатым и разумно синхронизированным потокам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...