Требования к пропускной способности WebRTC

Кто-нибудь знает, какие минимальные требования к пропускной способности WebRTC? Меня интересуют, каковы значения с видео или без него и для разных видеорешений. Меня особенно интересует двухсторонняя конференция, но если вы знаете значения для каждой стороны, это также хорошо.

Если у вас есть фактические показатели, это хорошо, но также, если вы знаете, как я могу теоретически рассчитать это тоже хорошо.

Кроме того, разные браузеры имеют разные требования к пропускной способности?

Ответ 1

Требования к пропускной способности почти такие же, как требования к пропускной способности для opus и vp8. Звук в реальном времени обычно имеет битрейт 40-200 кбит/с. Для видео требуется не менее 200 кбит/с (500 кбит/с, если вы хотите увидеть людей).

Согласно webrtc-experiment минимальная пропускная способность для opus составляет 6 кбит/с и для vp8 100 кбит/с. Таким образом, общая сумма составляет 106 кбит/с, но когда вы учитываете накладные расходы на стек протокола webrtc и постоянно меняете условия сети, я бы предположил, что 200 кбит/с является минимальным, если требуется стабильное видео и аудио.

Chrome и Firefox используют opus и vp8, поэтому требования к пропускной способности должны быть одинаковыми. Хотя у меня нет жестких данных, чтобы доказать это.

Вы можете увидеть текущий трафик, генерируемый webrtc, перейдя в chrome://webrtc-internals и проверив все диаграммы.

Ответ 2

Для двухсторонних конференций должно хватить 500 кбит/с для хорошего качества конференции (на поток, поэтому нагрузка на пользовательскую линию 1 Мбит/с). Я согласен с другим ответом об этом.

Однако пропускная способность многопартийного WebRTC может быть узким местом не только из-за пропускной способности Интернет-участников, но также из-за потенциальных ограничений пропускной способности сервера ретрансляции мультимедиа TURN, если вы используете его - который необходим, когда невозможно подключение P2P из-за трудностей Настройки NAT. (Все подробности здесь.)

Я попытался приблизительно рассчитать, сколько пользователей может обслуживать сервер TURN, прежде чем максимально увеличить его пропускную способность:

  • Допустим, у нас есть общая пропускная способность сервера 100 Мбит/с (вход + выход), и мы хотим максимально использовать 60 Мбит/с трафиком WebRTC.

  • Так, например, при настройке сервера Coturn TURN каждый поток ввода и вывода мы устанавливаем равным 30 Мбит/с (3 750 000 байт/с, используя bps-capacity=3750000).

  • Выходной поток будет испытывать более высокую нагрузку, поскольку при наличии n участников будет 1 входной поток видео и n-1 выходных потоков видео на участника для обработки сервером TURN. Означает, что узким местом будет комбинированный выходной поток 30 Мбит/с.

  • В худшем случае (когда вообще невозможны согласованные P2P-соединения STUN), этой полосы пропускания будет достаточно для: 30 Мбит/с/500 кбит /(s * stream) = 60 видеопотоков.

  • Учитывая n участников, будет n-1 выходных потоков на участника, что означает в общей сложности n * (n-1) = n ^ 2 - n потоков. Наш макс. Тогда 60 потоков достаточно для: n ^ 2 - n = 60 <=> n = 8,26 = ~ 8 участников (расчет).

Пока не уверен, насколько это точно.