Monday, June 06, 2011

HLS: HTTP Live Streaming

Originally created by Apple, it works by breaking a video stream into a sequence of small HTTP-based file downloads, each download loading one short chunk of an overall potentially unlimited video stream. 


By using only standard HTTP transactions just like normal web pages, HLS is capable of traversing any firewall or proxy server that lets through standard HTTP traffic. This is very different then UDP-based protocols such as RTP.

This also makes it a little easier for Content delivery networks to implemented for any given stream since standard web servers can used to server live and recorded video now.

As the stream is playing, the player application can select from number of different alternate streams containing the same material encoded at different data rates, allowing the streaming session to adapt to the available speed of your Internet connect, known as Adaptive bit rate.

http://en.wikipedia.org/wiki/HTTP_Live_Streaming
http://developer.apple.com/resources/http-streaming/



Apple submitted HTTP Live Streaming to the IETF in 2009 as a proposed standard. This is the latest draft of the RFC at the time of this article being written.  http://tools.ietf.org/html/draft-pantos-http-live-streaming-06

Adobe added HTTP Live Streaming support to Flash Media Server. Last year Adobe came up with it's own HTTP-based streaming protocol HTTP Dynamic Streaming. The main difference is that its HTTP Dynamic Streaming uses an XML-based manifest file instead of a plain-text playlist file and the MPEG-4 fragment container format (.f4f). Also, it's only compatible with Flash Player and Adobe AIR.


Adobe throws in towel, adopts HTTP Live Streaming for iOS
Adobe's new Flash DRM comes with selective output control

HTTP Live Streaming, FFMPEG & FFSERVER, and iPhone OS 3



4 comments:

justin said...

nice collection of links and info here!

if you find yourself looking for someone to do an hls app for you, i'd recommend mediafly - They've been on the HLS train from the beginning, and regularly pump out streaming media apps for small businesses and large enterprises... www.mediafly.com

Nick said...

I'd also like to add, that Adobe's HDS has an extra level of complexity than HLS.
On the server, the lowest-level media chunks (what they call "fragments" - analogous to HLS "segments") are aggregated into multiple medium-size files (what they confusingly call "segments").

This index of "which fragments are stored where, in which segments" is stored in an f4x index file on the origin server, and must be consulted when a request for a certain fragment comes in. The fragment is then extracted from the segment and sent in response.
This is the reason you need their closed-source Apache module to serve their stuff, rather than with HLS where the client simply requests .ts segments directly.
To me, this extra load imposed on origins seems like it wouldn't scale well, something I'm trying to evaluate at the moment.

Having said that, the extra complexity might have other benefits, facilitate more features etc. (possibly more DRM) But personally, so far I'm not a fan.

Nick said...

I'd also like to add, that Adobe's HDS has an extra level of complexity than HLS.
On the server, the lowest-level media chunks (what they call "fragments" - analogous to HLS "segments") are aggregated into multiple medium-size files (what they confusingly call "segments").

This index of "which fragments are stored where, in which segments" is stored in an f4x index file on the origin server, and must be consulted when a request for a certain fragment comes in. The fragment is then extracted from the segment and sent in response.
This is the reason you need their closed-source Apache module to serve their stuff, rather than with HLS where the client simply requests .ts segments directly.
To me, this extra load imposed on origins seems like it wouldn't scale well, something I'm trying to evaluate at the moment.

Having said that, the extra complexity might have other benefits, facilitate more features etc. (possibly more DRM) But personally, so far I'm not a fan.

Anonymous said...

You can now play HLS in newer versions of Android, and 3ivx technologies have announced an implementation of HLS for WIndows 8 and Windows 8 Phone

This basically means that shortly all major consumer operating systems, Windows, Mac OS X, Android, iOS) will support HTTP Live Streaming with H.264 and AAC content