HTTP Live Streaming


HTTP Live Streaming is a protocol originally developed by Apple and it allows you to stream A/V media over HTTP.

And it has, apparently, pretty widespread support in most of the major web browsers, servers and content delivery networks. So I guess that's how iTunes/VLC/Plex/Kodi/et al. has implemented their streaming? Never heard of it before, but it looks pretty cool.

It looks really easy to implement with the help of FFmpeg:

ffmpeg -i movie.mp4 -c:v libx264 -preset veryfast -hls_time 10 -f hls test.m3u8

This command takes an input file, splits it up into 10 second long segments, writes them to disk as .ts files and adds the file names to a .m3u8 playlist.

To serve this playlist on a web page, you could add this HTML:

<video src="http://example.com/path/to/playlist.m3u8" height="300" width="400">

Then you just serve all the segments, playlist file and the page itself with a regular web server.

And boom! Live streaming!

References