Понимание WebRTC
Я тестирую в настоящее время Особенности WebRTC
, но у меня есть некоторые мозговые проблемы.
Что такое WebRTC?
Я читаю только "STUN", "P2P" и другие... Но что такое WebRTC правильно в техническом аспекте (см. Далее)
Что мне нужно
Я ищу конкретное решение. Для примера здесь, веб-радио:
Один клиент отправляет данные своего микрофона на сервер, а другие подключенные клиенты будут слышать его. Серверу нужны некоторые функции: только один клиент может поделиться своими данными микрофона с другим. Все остальные клиенты отключены, но другие клиенты могут запросить отправку своих данных в будущем. Закончен ли выбранный клиент, другие могут отправить.
Уточнить, что мне нужно
Нет, я не хочу создавать веб-радио; Я не хочу создавать "петь сервер". Один пользователь может выбрать песню и петь со своим микрофоном. Другие клиенты могут услышать это. Если пользователь закончил свою "песню", другие могут запросить "здесь, я хочу спеть эту песню...".
Можно с WebRTC
? В настоящее время я думаю, что нет, потому что я думаю, WebRTC
является только решением Peer-2-Peer. Сервер не может обрабатывать прямые аудиоданные, но для моего варианта мне это нужно (я не хочу, чтобы в будущем, после реализации basec, изменился поток данных, чтобы добавить некоторые функции, такие как голосовые эффекты). Я нашел несколько решений с node.js
но я нашел только в коде трансляцию пиров для клиентов; Аудиоданные никогда не достигнут сервера.
1 ответ
WebRTC - это P2P-решение, но это может быть также P2P-соединение от издателя к серверу и множество P2P-соединений от слушателей к серверу. Это именно то, что вам нужно в вашем случае.
Существует 3 основных топологии сети WebRTC:
- MESH - где каждый участник отправляет и получает медиа для всех остальных участников. Не очень хорошо масштабируется, может масштабироваться до 4-6 участников для видео-сессий максимум или 10 для аудио.
- SFU - может работать в вашем случае, может поддерживать около 10-15 участников для видео и ~20 для аудио. Самое популярное решение на данный момент и простое в обслуживании.
- MCU - может поддержать многих участников. Но нужно больше оборудования и сложнее в обслуживании.
Так что в вашем случае вам определенно нужен какой-нибудь серверный шлюз WebRTC, потому что у вас будет много слушателей.
В вашем случае, возможно, стоит попробовать и потоковые возможности.
Я могу порекомендовать попробовать Janus WebRTC Gateway, особенно 2 вещи:
- Видео Room demo. Это основано на вершине ЮФУ
- Потоковое демо