Dear Michael,
For doing what you want, you can use MCU which is basically a server side infrastructure providing group communications capabilities. There are many open source software MCUs including Licode, Jitsi Video Router and Kurento.org. The scalability limitations of such MCUs comes from the fact that every outgoing flow needs to be ciphered independently. So, if you have 100 outgoing flows on the MCU (100 consumers), then the MCU will need to cipher 100 times the stream. If you want to scale further, a possibility is to use Kurento.org HttpGetEndpoint element. Let me explain you:
- At the server, you receive one WebRTC flow using a capability called WebRtcEndpoint.
- Now, everytime a consumer connects, you create an HttpGetEndpoint to provide the media to that consumer and you execute:
WebRtcEndpoint#connect(HttpGetEndpoint)
- Kurento will automatically convert the WebRTC incoming flow into a WebM (or MP4) outgoing flow that can be consumed directly using a <video> tag.
Advantages:
- Higher scalability given that all outgoing flows are clones (you don't need to cipher them independently)
- You can feed the WebM/MP4 flow to a CDN if you want really high scalability
- All browsers (including IE) could consume the flow
Disadvantages
- HTTP pseudostreaming will have higher latency than WebRTC. So, consumers will have a delay of around 4 seconds in the video.
Best
L.