Until recently, video content over HTTP has been delivered progressively similarly to how images load in a web browser, from top to bottom (start to finish). However, progressive video streaming has some major drawbacks: viewers can't skip around in a video without fully loading it, stream quality depends on the video file that is being downloaded and can't be changed on the fly, and there are inherent security concerns as the video can be easily saved and copied.
A number of different HTTP streaming solutions have been introduced that attempt to fix the drawbacks of progressive HTTP streaming. These HTTP streaming solutions all feature adaptive bitrate delivery, which means that they can change video quality on the fly because the actual video and audio files are broken up into smaller sized chunks and encoded into different bitrates.
A number of HTTP adaptive bitrate streaming solutions exist and this document gives an overview of the solutions that can be simulated using the HTTP Streaming Tasks.
HLS stands for HTTP Live Streaming and is a protocol developed by Apple for their iOS devices and QuickTime player. Support was added to Android 3.0 (Honeycomb) which has made HLS the ideal candidate for streaming to the widest range of mobile devices. A large number of client video players are available including the default HTML5 player and most mobile browsers.
HLS can be deployed using most HTTP servers (including Apache) or a number of commercial streaming servers such as Adobe FMS and Wowza. Also, many streaming services and CDNs can stream to HLS-compatible players via transmuxing, or dynamically repackaging existing video streams into their HLS compatible packages.
Thanks to these features, HLS has been adopted as the primary mobile streaming protocol for most video content websites.
HTTP Smooth Streaming is Microsoft's foray into adaptive HTTP streaming that runs on their IIS web server and Silverlight player. The Silverlight player detects local bandwidth and CPU conditions and dynamically switches bitrates to offer uninterrupted streaming. HSS supports multiple audio and video codecs, and is highly customizable. It is often used for very large-scale streams, such as NBC's online stream of the Olympic Games, and is part of Netflix's streaming stack.
HTTP Dynamic Streaming was developed by Adobe as an alternative to their RTMP protocol. HDS allows for adaptive streaming over HTTP to any device that's compatible with Adobe Flash or Air. A big benefit to streaming with HDS instead of RTMP is not having to rely on a FMS, which significantly decreases the cost of operating the stream. On the server side Adobe FMS is typically used to deploy HSS.
Because of the high market penetration that Flash Player has, HDS can be used for streaming to desktop computers. However, the Flash Player is not supported by Android and iOS, which limits practical use for broadcasting to mobile devices.
MPEG DASH (Dynamic Adaptive Streaming over HTTP) is an ISO Standard (ISO/IEC 23009-1) published in March 2012. As the name suggests, DASH is a standard for adaptive streaming over HTTP that has the potential to replace existing proprietary technologies (as the ones described above). MPEG DASH can be deployed using most HTTP servers and probably soon on a number number of commercial streaming servers.
A unified standard would be a boon to content publishers, who could produce one set of files that play on all DASH-compatible devices. MPEG DASH is officially supported major brands in the business such as Netflix and Microsoft. Time will tell how quickly providers adopt it and how soon software companies will produce DASH-compliant clients.