This is a freeswitch-based multi-point videoconferencing server to implement a "plenary" model, where a handful of people are "on stage", and a much larger number of people are in the audience.
The ansible/ directory contains an ansible
configuration for deploying a complete server.
The app/ directory contains a nodejs app for serving the videoconference.
WebRTC in general, and freeswitch in particular, present some challenges to develop for efficiently, given that the whole nature of the problem its solving is peer-to-peer communication between different browsers. Browsers also have strict security policies about serving WebRTC over https, and not serving from localhost. As a result, it becomes easiest to do development with an actual server running distinct from the development machine.
As a result, the recommented process of development is as follows:
- Deploy a server with freeswitch. The ansible configuration is a start. (TODO: document variables that need to be replaced).
- Run the webapp locally with
make dev.
Verto docs Freeswitch mod_conference docs Chad's cluecon talk gist
An example salt config for freeswitch. See especially the Freeswitch conf templates.
Documentation for nginx-rtmp-module, and the fork that seems most up to date (original is abandoned).
Dash.js and other players: