[Flávio Ribeiro] BemTV: Hybrid CDN/P2P Architecture for HLS Broadcasts

During the last three years I’ve been working on the Live Video infrastructure at Globo.com and I’ve realized that one of the biggest problems we had here in Brazil is related to CDN throughput and telecom infrastructure in general. Looking at what has been happening with online streaming of live events around the world (as The Oscars and True Detective Finale) and the fights involving OTT services and telecom carriers, one can realize that this is a common problem everywhere.

With that in mind, I decided to explore this problem and as I’m attending the last year of my Master’s and my colleagues at work were bootstraping a new team to develop a video player from scratch, it happened to be the perfect timing. I joined this new team and defined my Master’s thesis theme aiming to develop a Hybrid CDN/P2P architecture for online live broadcasts using the popular HLS protocol together with WebRTC.

First, we baptized the new player as Clappr - the name “clapper” comes from clapperboard - and open-sourced the project. You can follow our progress on github and yes, we’re aware that we’ll need to write some documentation on how to deploy the player and write plugins, it is already on our backlog. A nice logo and better UI are also on the go.

After that, I’ve created a clappr plugin that tries to drain video segments from peers in order to decrease the number of requests to CDN servers, reducing the cost of transmission and enhancing system’s scalability. If something goes wrong between the peers, it will get from the CDN without impacting user experience. This project is called BemTV and today I’m releasing its first version.

BemTV in action

BemTV is open source. I must warn you that this is a nightly build and needs some improvements before debut on production environment (I’ve performed just some controlled tests) but I’m inviting you to test it on http://bem.tv and also look at the code. The video in there is in loop, emulating a live video streaming behavior.

I’ll be more than happy to answer questions and fix bugs or problems that arise. Call friends near you, look at the statistics box and tell me if the video segments are being exchanged between you guys!