Мы работаем над Java-программой Voice over IP, и нам необходимо найти эффективный способ поддержания потоков и стресса на стороне сервера в разумной сумме. Мы пишем это для многопользовательской игры, и мы планируем иметь несколько разных режимов для определения того, как смешивать и отправлять аудио. Мы планируем использовать «Opt In» для того, чтобы сохранить бесполезные потоки из уравнения, если они предпочитают не участвовать в голосовом чате. Помимо этого, мы думаем о каналах, частном чате (2 человека) и близости. Если мы использовали канал с 16 + людьми в нем, мы хотим найти, есть ли способ избежать количества потоков x^2 (в данном случае 256). Нам также необходимо попытаться сохранить работу на стороне клиента на разумном уровне, так как она будет запускать игру. Мы не слишком уверены, сколько работы может обрабатывать большой сервер, поскольку он будет экспоненциальным, поскольку все больше людей находятся в канале. Нам может потребоваться ограничить количество людей на канал или позволить владельцу сервера сделать это, а также ограничить количество каналов. В зависимости от популярности эта игра может иметь около 40-500 человек на сервере, и мы не уверены в том, как справиться с этим типом стресса при обработке и пропускной способности сервера.Как обрабатывать аудиопотоки и микширование для VoIP
По существу, мы спрашиваем, есть ли у кого-либо знания существующих систем, которые имеют эффективный способ обработки этого. Мы используем JSpeex для нашей аудиокодировки, если это имеет какое-либо значение. Итак, существуют ли какие-либо методы для обработки этого или, возможно, даже некоторые идеи сообщества? Мы также планируем перепрофилировать это в меньшем масштабе Skype, как программа, которую мы разрабатываем.
256 потоков, загружаемых через сервер. x^2 потока, потому что нам нужно распространять аудио для каждого человека, от каждого человека, за исключением собственного аудио (эхо). Если бы у нас был способ «отключить» свой собственный звук при возвращении, нам понадобятся только потоки x. Его тип смешивания, и мы не уверены в том, как с ним справиться. – Kristoff
Вот что я говорю. Вам не нужен отдельный поток от каждого человека. Вам просто нужен сервер для мультиплексирования ввода от каждого человека вместе. Поэтому каждому пользователю нужен только один вход и один выходной канал. Сервер просто должен быть умным. Очевидно, что он не будет включать в себя эхо-звук. – Smitty
Мы планировали иметь только одно соединение сокета на каждого клиента. Мы просто говорим о потоках в обработке сервера. Не уверен, что я что-то пропустил, но вывод, отправляемый каждому клиенту, будет мультиплексирован. Прошу прощения, если я просто что-то упустил. – Kristoff