Если вкратце мы используем webrtc протокол для этого, потому что на момент создания это казалось идеальным вариантом, остается ли это хорошим вариантом? Хроший вопрос...
У нас есть Publisher (grabber-agent, комп участника) и Subscriber (зритель). И между ними есть signalling со встроенным sfu (selective forward unit). signalling нужен для пересылки сообщений и т.д. (очень простое описание), а sfu, чтобы треки (медиапотоки) не encod-ились для одного и того же publisher-а больше одного раза.
Если интересно как это устроено изнутри, то можно почитать в README репозитория, а также сущесвует Issue, в которой я написал proposal, где описывается к чему я стремлюсь.
В целом я пытаюсь уменьшить нагрузку на компы участников и на сервер по возможности, это моя основаная цель, а также ловить всякие страшные баги по типу deadlock-ов.
Сущесвует админка граббера, где можно посмотреть состояние пиров (участников, онлайн или нет). Если пир красненький, то стоит пингануть в чат и написать все номера, которые красные, чтобы мы могли перезапустить у них граббер.
Админка еще есть у жюри, они просто переодически следят за участниками, а также у ТК.
С вас, как волонтеров, просто требуется написать правильный advanced.json, чтобы мы могли использовать TeamView, в целом есть много примеров с прошлых лет.