Приложение для видеоконференций WebRTC - топология "звезда": с чего начать?
Я разрабатываю приложение для проведения видеоконференций в образовательных целях, которое использует WebRTC. Это должно быть сделано в топологии "звезда", поскольку она объединяет до 20 участников.
Концептуально это легко понять, но я не знаю с чего начать, потому что у меня нет примеров.
Все клиенты будут подключаться к серверу с помощью WebRTC, а сервер будет смешивать видеопотоки в определенной компоновке и отправлять их всем клиентам. Вот мои вопросы / трудности:
Как реализовать серверную часть? Какая технология лучше (например, NodeJS)? Существуют ли простые примеры применения топологии типа "звезда"?
Как мы можем начать писать код MCU? Есть ли примеры? Или проще настроить MCU с открытым исходным кодом, как Licode/Lynckia?
Как я могу оценить правильный тип экземпляра AWS EC2, который мы будем использовать в качестве сервера MCU?
Как я могу оценить стоимость передачи данных (размер в ГБ / ТБ), которая будет передана в течение 1 часа конференции?
Большое спасибо заранее, Карлос
2 ответа
Мои два цента на твои различные сомнения:
- Лично я предпочитаю NodeJS, но из того, что я видел, сервер приложений не играет большую роль в обмене данными WebRTC, кроме передачи сообщений между одноранговыми / медиа-серверами, поэтому используйте технологию, которая вам удобна.
- Тем не менее, в качестве примера, вы можете ознакомиться с Учебниками Куренто как на Java, так и на Node.js, на примере Licode (с использованием NodeJS) и Jitsi Meet на Java.
- Да, я думаю, что использование существующего MCU - это хорошая идея, лучше - SFU, разница в том, что SFU направляет потоки, а не смешивает их, а смешивание потоков является дорогостоящим процессом, поэтому MCU должна обладать высокой вычислительной мощностью. SFU сравнительно легкие, все, что вам нужно, это хорошая пропускная способность для сервера.
О последних двух моментах, не так много, зависит от вашего варианта использования, каково разрешение видео потоков, сколько человек, вам нужно выполнить несколько тестов и контролировать его.
Simulcast - еще одна интересная идея, к сожалению, я считаю, что она все еще находится в разработке.
Мы строим решение на основе NodeJS на WebRTC. С этой технологией есть одна большая проблема - каждый посылает всем видеопоток. Если у вас 20 участников, то каждый компьютер отправляет и получает видео 19 потоков.
Мы создали ограничение "до 4 участников" на номер, и оно отлично работает.
Так что, на мой взгляд, если вы потратили достаточно времени - вы можете смешать две технологии (до 4-5 пользователей) WebRTC, чтобы сэкономить время сервера, и кое-что другое для больших собраний.