Приложение для видеоконференций 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, чтобы сэкономить время сервера, и кое-что другое для больших собраний.

Другие вопросы по тегам