View on GitHub

Paradone

Peer-to-peer assisted media diffusion in the browser with WebRTC and MediaSource

Paradone is an Open-Source, peer-to-peer powered overlay network for media-diffusion in the browser. Its aim is to reduce bandwidth cost of media file diffusion for the server and ISPs while providing a better service quality to the end user.

You can download the code here

The documentation is available on the Wiki

The license of the project is APGL V3, more details at section License

If you want to receive news from the project, a Mailing List is available.

The project was created for and is laureate of the Inria Boost Your Code 2014 contest.

Paradone in depth

Project Details

Why

Did you ever tried to see a video but had to wait every 3 seconds to wait for it to load? I had this problem, a lot. That’s why, seeing how new API of HTML5 allow users to share information directly between themselves, I decided to build a system using a Mesh overlay allowing media diffusion directly between users. This way the bandwidth’s costs for the server will decrease and users will be able to retrieve the files faster.

How it works

Paradone uses WebRTC API to create a mesh overlay between the users. The first user will download the media directly from the server. When a new user request the same media, the server will tell him how to connect to the mesh where the file can be retrieved. The new user will then download parts of the file from different users and/or the server. Finally the parts are glued back together and played with the MediaSource API and a HTML5 Video tag.

For a more technical description you can check the Communication Protocol available on the wiki.

Challenges

License

Paradone is licensed under the Affero General Public License version 3 or later. See the LICENSE file for more information.

The content of this site and the wiki are licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.

Getting Started

Requirements

User side

The user will need an up-to-date web browser supporting both WebRTC and Media Source Extension. It can either be Firefox, Google Chrome (or Chromium) or Opera.

The video served to the client must be played within a HTML5 Video tag. You will need to check the codec of your file

Server side

The system needs a signaling server allowing users to initiate the communication between them. WebRTC lets you choose your preferred technology for signaling (websocket, xhr, email…).

Developer side

The project is written in JavaScript and uses npm to manage all dependencies.

Installation

Every functions of the project are referenced under the paradone namespace. You can start using the project by adding the script to your page and using the start function. The script will find the video tags and start sharing it between your users. You can pass options as argument to the function, see the documentation for more information.

<script src="./some/path/to/paradone.js"></script>
<script>paradone.start(options)</script>

Community

Contribute

There are multiple ways you can be part of the project. You can:

Documentation

The full documentation is available on the wiki

The wiki contains all information you need to know about the project (architecture and implementation details, API…).

Mailing List

You can subcribe to our mailing list to get in touch with the team, get news and updates.

Issue tracker

All the issues are tracked on Github. You can also use the Waffle board to see the progress

Roadmap Progress

You can use our Waffle board to see the progress of the project in realtime !