Version 1.2, Released: January 16, 2014

The Current State of Android and Video

A Full Overview & Best Practices of Android Video

In the OS landscape, Android is by far the most widely used for tablets and mobile devices. With over one billion current activated users and approximately 70% market share in the space, the platform is not only the most popular, but it’s also the most fragmented in terms of OEM’s and OS versions out there. Because of the diverse landscape of Android devices (and perhaps confusion out there), we thought we’d provide you with a full overview of Android and compatible video formats, as well as a look at how it came to be, its versions and best practices for using Android for video.

Android History and Origins

Android is a Java-Based operating system used for mobile phones and tablet computers. It was introduced and developed initially by Android, with financial backing from Google. Google acquired Android in 2005. Google announced their mobile plans for Android in 2007 and the first iteration of Android hit the shelves in 2008. Android is the world’s most widely distributed and installed mobile OS. However, in terms of application usage and video consumption, iOS devices lead the way. A consistent user experience and standardized video playback are two of the reasons for this.

GET 1GB/MONTH FREE ENCODING!

Performance of Video on Android

When running video on Android devices, the experience varies from OEM to OS version to media source. Because of this lack of standardization with video, we wanted to give an overall look at the top mobile devices running Android to determine how video is delivered and how it performs across a few key sites and platforms.

We tested the following top devices running the most used versions of Android (2.3, 4.0, 4.1 or 4.2):

  • Google Nexus 7
  • Google Nexus 4
  • Samsung Galaxy 4
  • HTC One
  • Samsung Galaxy II
  • HTC EVO 4G

In summary, the newer versions had overall better video capabilities and quality. On devices running 4.1 or higher, the video players were generally built in, and most were shown in one-third of the screen and ran with little interruption. On the devices running older versions of Android, the experience was inconsistent across sites and the video performance wasn’t as strong. Some of the top video sites showed the option for either video display on a player or in the web browser, and some had very poor viewing capabilities for video.

A sample look at the different variations of video transfer and display on the Android devices is below:

Video Displays on Android Devices

For a more complete reference tool on the top Android devices and their video capabilities and specifications please click here.

TRY ENCODING FOR FREE!

Open Source on Android

Because Android is open source, Google releases the code under the Apache License. For this reason, every OEM modifies the open source code for their devices.

OEM’s create their own coding and specifications for Android for each device. This makes any standardization very difficult. When testing different versions of Android on different target devices, there are a lot of inconsistencies.

Google regularly releases updates for Android which further confuses things. End users often do not upgrade, either because they don’t know how, or because their device does not support the new release. The scattered consistency of updates further confuses any efforts at standardization.

Two of the largest and most widely used Android OEM’s both released their latest open source codes earlier this year. For the Samsung Galaxy codes please click here. For the HTC One click here.

Versions of Android

Versions of Android

In 2008 Android v1.0 was released to consumers. Starting in 2009, Android started using dessert and confection code names which were released in alphabetical order: Cupcake, Donut, Eclair, Froyo, Gingerbread, Honeycomb, Ice Cream Sandwich, Jelly Bean, and now KitKat.

A historical look at the Android devices is below:

Version Code name Release date
4.4 KitKat November 2013
4.3.x Jelly Bean July 2013
4.2x Jelly Bean November 2012/td>
4.1x Jelly Bean July 2012
4.0x Ice Cream Sandwich December 2011
3.2 Honeycomb July 2011
3.1 Honeycomb May 2011
2.3.3-2.3.7 Gingerbread February 2011
2.3-2.3.2 Gingerbread December 2010
2.2 Froyo May 2010
2.0-2.1 Eclair October 2009
1.6 Donut September 2009
1.5 Cupcake April 2009

In terms of market share, Jelly Bean has now surpassed the Gingerbread as being the most used version:

Froyo 1.3% 1.3
Gingerbread 21.2% 21.2
Honeycomb 0.1% 0.1
Ice Cream Sandwich 16.9% 16.9
Jelly Bean 59.1% 59.1
KitKat 1.4% 1.4

Top Android Devices per OS version

The top devices running Android in terms of both sales and popularity come from various OEM’s, with the majority from Samsung, HTC, LG and Asus. A few of the top devices from the most widely used Android OS versions are as follows:

Mobile (4.4) KitKat

  • Moto X
  • Nexus 4
  • Nexus 5
  • Nexus 7
  • HTC One

Mobile (4.1 or 4.2) Jelly Bean

  • LG Nexus 4
  • Samsung Galaxy S4
  • HTC One
  • Samsung Galaxy Note 11
  • Samsung Galaxy Nexus (first to run 4.0 and 4.1)
  • LG Optimus G2
  • LG Optimus G Pro
  • Motorola Droid Razr

Mobile (2.3 or 4.0) Gingerbread or Ice Cream Sandwich

  • Samsung Galaxy S2
  • Samsung Galaxy S3
  • Google Nexus One
  • HTC HD2
  • T-Mobile Pulse
  • HTC EVO 4G
  • Motorola Droid X

Tablets 4.1 or 4.2

  • Google Nexus 7
  • Google Nexus 10
  • Asus Transformer Pad Inifinity
  • Kindle Fire HD
  • Samsung Galaxy Note 10.1
  • Samsung Galaxy Tab 8.9
  • Asus Transformer Pad 300 (ICS)

More companies have been rolling out plans to support the latest version from Android. There have been reported video playback problems with the Nexus 7 using Kit Kat, and there are rumors that Samsung could possibly break free from Android with the S5.

For a full list of Android supported devices click here.

The market share of the top Android phones is also available.

SIGN UP FOR A FREE ENCODING.COM ACCOUNT

DRM Content on Android

Android offers a DRM framework for all devices running their 3.0 OS and higher. Along with their DRM framework, they offer consistent DRM for all devices using Google’s Widevine DRM (free on all compatible Android devices) which is built on top of their framework. On all devices running 3.0 and higher, the Widevine plugin is integrated with the Android DRM framework to protect content and credentials. However, the content protection depends on the OEM device capabilities. The plug in provides licensing, safe distribution and protected playback of media content.

The image below shows how the framework and Widevine work together.

Android and Widevine Interaction

For information on the Android DRM and integrating the Widevine plugin into products click here.

Android now supports the Common Encryption (CENC) for MPEG-DASH, providing a standard, multiplatform DRM scheme for managing protecting content. Apps can take advantage of CENC through Android’s modular DRM framework and platform APIs for supporting DASH.

Closed Captions on Android

As developers know, closed captioning is not a simple “feature” of video that can be simply activated. There are a number of formats, standards, and approaches and it’s especially challenging for multiscreen publishers. On Android devices, closed captioning varies from app to app. However, any device using Jelly Bean 4.1 or higher can use their media player which supports internal and external subtitles. Click here for more information.

For any device using the Gingerbread version or lower which do not have any support for rendering subtitle, you can either add subtitle support yourself or integrate a third party solution. Or encode your content with Encoding.com?

Most larger broadcasters pushing content to OTT devices now serve closed captioning on Android (Hulu Plus, HBO GO, and Max Go to name a few).

Encoding.com is the first and only encoding service to offer universal closed captioning support for delivery to all devices. Our powerful, reliable, scalable feature set for closed caption workflows enables digital video distributors to successfully reach their objectives. Click here for more information on our universal closed captioning support, and for a complete guide to processing closed captions on Android with Encoding.com click here.

GET A FREE CONSULTATION WITH AN ENCODING EXPERT!

Does Android support HLS?

Android has limited support for HLS (Apple’s HTTP Live streaming protocol), and device support is not the same from one version or one device to the next. Android devices before 4.x (Gingerbread or Honeycomb), do not support HLS. Android tried to support HLS with Android 3.0, but excessive buffering often caused streams to crash. Devices running Android 4.x and above will support HLS, but there are still inconsistencies and problems.

Android 2.3 (Gingerbread)

  • No Support, despite being the most popular version of Android

Android 3.0 (Honeycomb)

  • Streams cause tablet devices to crash

Android 4.0 (Ice Cream Sandwich)

  • VOD streams do not seek
  • Aspect ratios are not detected and cause image deformation
  • Fullscreen causes videos to restart from the beginning

Android 4.1+ (Jelly Bean)

  • Aspect ratio issue is fixed, but seek is still unavailable
  • Chrome does not understand HLS leading to broken mimetype detection
  • Taking video fullscreen causes devices to throw an error and stop.

See the attached article for reference from www.longtailvideo.com.

The latest KitKat Android 4.4 updates the platform’s HTTP Live Streaming (HLS) support to a superset of version 7 of the HLS specification (version 4 of the protocol). See the IETF draft for details.

For more detailed information on HLS click here.

MPEG-DASH Support in Android

Android 4.4 brings formal support for adaptive playback into the Android media framework. Adaptive playback is an optional feature of video decoders for MPEG-DASH and other formats that enables seamless change in resolution during playback. The client can start to feed the decoder input video frames of a new resolution and the resolution of the output buffers change automatically, and without a significant gap.

Resolution switching in Android 4.4 lets media apps offer a significantly better streaming video experience. Apps can check for adaptive playback support at runtime using existing APIs and implement resolution-switching using new APIs introduced in Android 4.4.

Vid.ly for Android

Encoding.com offers a universal video platform for playback on any device and OS. The user experience on Android is consistent and seamless, and on the back end we offer complete video security (IP, Time, Token), QR code to video, full CSS customization, video in email clients, and advance mobile device statistics.

On all Android devices, Vid.ly delivers clean, consistent videos as seen below:


For more information click here.

GET 1GB/MONTH FREE ENCODING NOW!

Best Practices for Video on Android

For deploying video on Android, there are several suggested specifications to follow.

Below is a list of files supported by Android devices. Developers can also use media codecs either provided by any Android-powered device, or additional media codecs developed by third-party companies. If you want to play videos on Android, find a multi-format video player or convert videos to Android compatible formats using an encoding company.

Video Formats for Android

Android video formats (file extension) Codec Note
3GPP (.3gp)MPEG-4 (.mp4) H.263
3GPP (.3gp)MPEG-4 (.mp4)MPEG-TS (.ts) H.264 AVC MPEG-TS with AAC audio only
3GPP (.3gp) MPEG-4 SP
WebM (.webm)Matroska (.mkv, Android 4.0+) VP8 Streamable only in Android 4.0 and above

Video Specifications for Android

Below are the recommended encoding parameters for Android video from the Android developer homepage. Any video with these parameters are playable on Android phones.

Recommended Video Parameters for Android

Android video encoding HD (only partial devices) SD (high quality) SD (low quality)
Video codec H.264 H.264 H.264
Video resolution 1280 x 720 px 480 x 360 px 176 x 144 px
Video frame rate 30 fps 30 fps 12 fps
Video bitrate 2 Mbps 500 Kbps 56 Kbps
Audio codec AAC-LC AAC-LC AAC-LC
Audio channels 2 (stereo) 2 (stereo) 1 (mono)
Audio bitrate 192 Kbps 128 Kbps 24 Kbps

Video Encoding Recommendations

This table below lists examples of video encoding profiles and parameters that the Android media framework supports for playback. In addition to these encoding parameter recommendations, a device’s available video recording profiles can be used as a proxy for media playback capabilities. These profiles can be inspected using the CamcorderProfile class, which is available since API level 8.

Examples of supported video encoding parameters.

HD (not available on all devices) SD (high quality) SD (low quality)
Video codec H.264 Baseline Profile H.264 Baseline Profile H.264 Baseline Profile
Video resolution 1280 x 720 px 480 x 360 px 176 x 144 px
Video frame rate 30 fps 30 fps 12 fps
Video bitrate 2 Mbps 500 Kbps 56 Kbps
Audio codec AAC-LC AAC-LC AAC-LC
Audio channels 2 (stereo) 2 (stereo) 1 (mono)
Audio bitrate 192 Kbps 128 Kbps 24 Kbps

For video content that is streamed over HTTP or RTSP, there are additional requirements:

  • For 3GPP and MPEG-4 containers, the moov atom must precede any mdat atoms, but must succeed the ftypatom.

  • For 3GPP, MPEG-4, and WebM containers, audio and video samples corresponding to the same time offset may be no more than 500 KB apart. To minimize this audio/video drift, consider interleaving audio and video in smaller chunk sizes.

For information about how to target your application to devices based on platform version, read Supporting Different Platform Versions.

Encoding.com Android Support

Encoding.com offers many simple and effective ways to deliver video for Android. You can utilize any of our key platforms. The best way to automate your encoding workflow is through the Encoding.com API.

We suggest the following template for Android:

Android 3G (240p @ 350kbps, 3MB/min) XML template


<format>
<output>mp4</output>
<destination>ftp://***** your output link **** .mp4</destination>
<file_extension>mp4</file_extension>
<size>0x240</size>
<framerate>24</framerate>
<video_codec>libx264</video_codec>
<keyframe>120</keyframe>
<profile>baseline</profile>
<bitrate>350k</bitrate>
<audio_codec>dolby_heaac</audio_codec>
<audio_bitrate>64k</audio_bitrate>
<audio_sample_rate>44100</audio_sample_rate>
</format>
</query>

Android 4G (360p @ 700kbps, 6MB/min) XML template


<format>
<output>mp4</output>
<destination>ftp://***** your output link **** .mp4</destination>
<file_extension>mp4</file_extension>
<size>0x360</size>
<framerate>30</framerate>
<video_codec>libx264</video_codec>
<keyframe>150</keyframe>
<profile>main</profile>
<bitrate>700k</bitrate>
<audio_codec>dolby_heaac</audio_codec>
<audio_bitrate>64k</audio_bitrate>
<audio_sample_rate>44100</audio_sample_rate>
</format>

Web Interface


The web interface is a great place to start testing the power of the encoding.com platform. All the settings required for optimized HLS content are at your fingertips in an easy to use interface.

video encoding encoding.com

Desktop Uploader


desktop uploader encoding.com hls http live streaming

Our new Desktop Uploader makes it easy for anyone to batch upload large source files and process them in parallel at a massive scale. Simply drag source files into the Encoding.com icon in your toolbar and your done! Customers with a Max plan or greater can even take advantage of our blazing fast Aspera servers.

Watch Folder


There are several options for creating online watch folders. S/FTP, Amazon S3, Rackspace Files, Aspera, Microsoft Azure, and Dropbox can all be configured as watch folder locations. You can set the check frequency of your watch folder anywhere from 5 minutes to 1 day. When content is detected in your watch folder it is ingested by Encoding.com and ready for processing. Users can set the region for their watch folder so files are sent to the nearest entry point to Encoding.com.

Watch Folder