Skip to content
This repository has been archived by the owner on Apr 2, 2021. It is now read-only.

mitmedialab/unhangout-plenary-server

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

66 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Plenary Server

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.

Development

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:

  1. Deploy a server with freeswitch. The ansible configuration is a start. (TODO: document variables that need to be replaced).
  2. Run the webapp locally with make dev.

Resources

Verto docs Freeswitch mod_conference docs Chad's cluecon talk gist

Other links (maybe useful)

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:

  • dash.js - canonical, but buggy.
  • shaka - google's, more reliable; though still doesn't fully tolerate nginx-rtmp-module's bugs.
  • video.js - good for playing flash
  • hls.js - HLS emulation using Media Source Extensions