(This post is cross-posted on Mediafly’s Blog.)
Google finalized Android 3.0 (“Honeycomb”)’s SDK only last week. Also last week, Motorola released the Xoom, the first Android 3.0 tablet, and a number of other manufacturers have announced their own Android 3.0 tablets.
One of the key missing features of the Android platform had been the support of HTTP Live Streaming (also known as HLS). HLS is a media streaming protocol that has been made popular by Apple. Apple rolled out the requirement that any app streaming over cellular networks must do so using HTTP Live Streaming about a year ago, and this change has resulted in a dramatic adoption of HLS by video distributors.
With Android 3.0, Google has taken steps to close that gap. From the Android 3.0 Platform Highlights page: “The media framework supports most of the HTTP Live streaming specification, including adaptive bit rate.”
Despite the “most” disclaimer, this is a major step forward for video delivery to the Android platform. HLS is a relatively simple streaming protocol that enables:
- Dynamic bitrate switching: if you drop into a network with lower bandwidth, your video stream will gracefully switch to the lower quality stream. Conversely, if you switch to a higher bandwidth network, your player will adjust to use a higher quality stream.
- Support for open implementations: HLS has been submitted to the IETF as a proposed Internet standard.
Scalability: HLS streams (particularly for on-demand content) can be powered purely by a web server. This means that HLS can make use of all of the recent advancements in caching and scaling that web servers have built over the years.
Currently, the only support for a live streaming technology in Android has been through Adobe Flash Player and RTMP. This has proven very challenging to integrate, because:
- At $4,500, Flash Media Server is not cheap. HLS technology is included with every installation of OS X.
- Flash Media Server does not scale as well as HLS out of the box. As mentioned above, HLS can be powered purely by a web server. RTMP, however, requires a proprietary server that keeps active connections open in order to maintain connections to clients.
- Flash Player on Android only works when surrounded by the browser. This means that, as a developer, you must embed a WebView, and within that the Flash Player will operate. This additional overhead is enough to bring resource-limited phones to their knees.
- While great improvements have taken place, Flash Player on Android remains buggy. Mediafly has taken steps to ensure its Flash Player apps and RTMP streams work smoothly over Android, but not everyone has.
If you are interested in learning more about HTTP Live Streaming, Flash, and Mediafly’s business media delivery offerings, please contact us.
So, then what is the recommended way of streaming video over Android using adaptive bit rate technology?
A hybrid solution today. Rely on Flash plugin detection and serve up the WebView version for Android 2.3.x and below, and use HLS for Android 3.0+.
Wowza makes a solid, affordable streaming server that can handle both under one roof.
dude, you should totally look in to mediafly for hls – they’re, like, super awesome at it.
Good to know that the only way to stream live to Android (Flash) is on its way out.
So where’s HTML5, the big flash killer at? Can HTML5 even support live streaming? What a mess.
HTML5 isn’t really a transport technology.
In reality, the solution will be HLS, but in practice even ICS has terrible support for ICS. As you said, streaming on Android is a real mess.
For live streaming from RTMP or WM sources to HLS, this may be a good choice:
http://dv2.discovervideo.com/press/Nimbus%20Press%20Release%205-10-12.pdf
Fifty bucks per day. Great for “events”.
Is there any free solution for Android adaptive bitrate HLS?
Marc