ПРОБЛЕМА:
WebRTC предоставляет нам одноранговые видео/аудио соединения. Идеально подходит для p2p звонков, видеовстреч. Но как насчет вещания (один ко многим, например, 1 к 10000)?
Допустим, у нас есть вещатель "B" и два участника "A1", "A2". Конечно, это кажется разрешимым: мы просто соединяем B с A1, а затем B с A2. Таким образом, B отправляет видео/аудио поток непосредственно в A1, а другой поток в A2. B отправляет потоки дважды.
Теперь давайте представим, что есть 10000 участников: A1, A2,..., A10000. Это означает, что B должен отправить 10000 потоков. Каждый поток составляет ~ 40 КБ/с, что означает, что B требуется 400 МБ/с для исходящей скорости Интернета, чтобы поддерживать эту трансляцию. Неприемлемый.
ОРИГИНАЛЬНЫЙ ВОПРОС (ОБЗОЛЕТ)
Можно ли как-то решить эту проблему, так что B отправляет только один поток на некоторый сервер, а посетители просто извлекают этот поток с этого сервера? Да, это означает, что исходящая скорость на этом сервере должна быть высокой, но я могу ее поддерживать.
Или, может быть, это означает разрушение идеи WebRTC?
ЗАМЕТКИ
Флэш не работает для моих нужд в соответствии с плохим UX для конечных клиентов.
РЕШЕНИЕ (НЕ РЕАЛЬНО)
26.05.2015 - На данный момент нет такого решения для масштабируемого вещания для WebRTC, где вы вообще не используете медиасерверы. На рынке есть как серверные, так и гибридные решения (p2p + серверная в зависимости от различных условий).
Хотя есть многообещающие технологии, такие как https://github.com/muaz-khan/WebRTC-Scalable-Broadcast, но они должны ответить на такие возможные проблемы: задержка, общая стабильность сетевого соединения, формула масштабируемости (они, вероятно, не бесконечно масштабируемы)).
SUGGESTIONS
- Уменьшите CPU/Bandwidth путем настройки аудио и видео кодеков;
- Получите медиа-сервер.