With the release of Android 5.0 Lollipop comes a host of new features as well as several big fixes. A few of these updates are critical to improving the video playback experience. In this post we’ll provide an overviews of video playback improvements.
This morning an interesting article was posted about Lollipop adoption rates. Despite the fact that Lollipop has been available for about 6 weeks, the adoption rate currently sits 0.1% of users. By comparison, Android Kit Kat 4.4 had an adoption rate of 1% after the first month. The slow adoption of Lollipop is probably due to early performance issues on several of the Nexus Android devices.
Ok, let’s dig into the Lollipop updates. Higher quality streams at lower bitrates are now possible with support for the HEVC codec. This is critical in delivery of UHD 4K 10-bit video streams. In addition, tunneled hardware video decoding makes the OS significantly more efficient by saving on power consumption and extending battery life during video playback. Most importantly several bugs have been addressed that greatly improve HTTP-Live-Streaming playback.
Let’s take a look at the HLS bugs that were squashed in this release.
Improved Closed Caption Toggling – As we found in our Labs Series, toggling closed captions on and off was often problematic in Android, if it worked at all. This bug has been addressed and now Closed Captions can be enabled and disabled pretty seamlessly.
Improved Adaptive Bitrate Switching – One of the key features of HLS delivery is the ability to switch between bitrates in real time as network conditions change, as they often do. Unfortunately the streams would sometimes freeze on previous versions of Android when ABR switching started. This has been fixed.
Handling of Packets Containing Explicit Discontinuity – In the m3u8 manifest file a the EXT-X-DISCONTINUITY tag often appears when there is a change in the type of media segments. In previous versions of Android these packets were discarded. Now, if the packet has been queued already and is explicitly discontinuous they no longer get discarded.
Support for Stream Decimal Stream Durations – Previously, if a stream was not exact in minutes or segments it was rounded off. Now stream durations are supported to the decimal.
m3u8 No Longer Required – Before Lollipop, the HLS path required the .m3u8 extension on the manifest file. This is no longer required.
Built in Stream Tests – Two stream tests have also been added. One of these verifies redirects within the HLS stream, and the other verifies query strings when interpreting relative URLs.
All of the differences between KitKat 4.4 and Lollipop 5.0 can be found in the ChangeLog.