Слияние аудиопотоков в реальном времени с помощью Wowza Media Server - PullRequest
1 голос
/ 01 ноября 2011

Моя компания внедряет сервер аудиочата с использованием Wowza Media Server, но нам нужны некоторые рекомендации, которые помогут нам решить следующую проблему пропускной способности:

СИТУАЦИЯ:

У нас есть система аудио-чата, благодаря которой пользователи могут сотрудничать с другими. N пользователей публикуют на своем собственном аудиоканале, подписываясь на N-1 аудиоканалы (остальные пользователи минус свои).

ПРОБЛЕМА:

Пропускная способность увеличивается довольно быстро, когда вы начинаете добавлять больше пользователей. Например, скажем, 4 пользователя онлайн - Пользователь A, Пользователь B, Пользователь C и Пользователь D. Если каждый пользователь публикует аудиоканал со скоростью 8 кбит / с, на который подписываются все другие пользователи, тогда общая используемая пропускная способность будет огромной. 96 кбит / с:

Пользователь A = 24 Кбит / с (из 3 потоков: 8 Кбит / с от подписки на пользователя B, 8 Кбит / с от подписки для пользователя C и 8 Кбит / с от подписки для пользователя D) +

Пользователь B = 24 Кбит / с (из 3 потоков: 8 Кбит / с от подписки на пользователя A, пользователя C и пользователя D) +

Пользователь C = 24 Кбит / с (из 3 потоков: 8 Кбит / с от подписки на пользователя A, пользователя B и пользователя D) +

Пользователь D = 24 Кбит / с (из 3 потоков: 8 Кбит / с от подписки на пользователя A, пользователя B и пользователя C) = всего 96 Кбит / с

ЧТО Я ДУМАЮ, ЧТО МЫ ДОЛЖНЫ ДЕЛАТЬ:

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

Пользователь A = 8 Кбит / с (из 1 объединенного потока пользователей B, C и D) +

Пользователь B = 8 Кбит / с (из 1 объединенного потока пользователей A, C и D) +

Пользователь C = 8 Кбит / с (из 1 объединенного потока пользователей A, B и D) +

Пользователь D = 8 Кбит / с (из 1 объединенного потока пользователей A, B и C) = всего 32 Кбит / с

Вы можете видеть, где эта проблема может быстро выйти из-под контроля, поскольку в этом примере только 4 человека онлайн одновременно. Допустим, вы добавили еще один на общую сумму 5, тогда в соответствии с нашей текущей настройкой пропускная способность будет использовать 20 различных потоков подписки на общую сумму 160 Кбит / с. Принимая во внимание, что оптимальное объединенное решение добавило бы только дополнительные 8 Кбит / с на каждого дополнительного пользователя, таким образом, всего 40 Кбит / с для 5 пользователей, 48 Кбит / с для 6 пользователей и т. Д.

ТАК, есть ли у кого-нибудь какие-либо предложения относительно того, как мне это сделать?

1 Ответ

0 голосов
/ 04 января 2012

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

...