Inspiration

Stream video to all devices using HTML5 and javascript based video player.

What it does

The basic idea is to generate multiple versions of the same content (e.g., different bitrates or spatial resolutions) using FFMPEG and chop these versions into segments (e.g., two seconds).The segments are provided on a NGINX web server (using NGINX RTPM module) and can be downloaded through HTTP standard compliant GET requests. Typically, the relationship between the different versions is described by a manifest, which is provided to the client prior to the streaming session. The manifest represents the different qualities of the media content and the individual segments of each quality with HTTP Uniform Resource Locators (URLs). This structure provides the binding of the segments to the bitrate (resolution, etc.) among others (e.g., start time, duration of segments).

How I built it

Challenges I ran into

Accomplishments that I'm proud of

I have created a nice base for me and other people to continue to contribute with new functionalities (the possibilites are huge).

What I learned

Learned a lot about Dynamic Adaptive Streaming over HTTP (DASH), also known as MPEG-DASH and how to stream high quality media content over the Internet using conventional HTTP web servers.

What's next for StreamFly

There are a few performance enhancements I'm excited to look into now that MPEG chunks is delivered in HTML5. Specifically around adaptive playback in live streams, expect a higher quality stream for longer periods of time. This initial release and can be improved.

Built With

Share this project:

Updates