How to Properly Encode Video for Android Devices

By Ryan Whitwam

The ins and outs of video encoding for Android.

Android is still without an built-in video solution. That means you will be confronted with a painful reality should you adopt one of these devices, you will need to encode your own videos. Encoding your video in the first place is troubling, but knowing what settings to use for your Android device can end up a nightmare. 


Know your device 

This can also cause compatibility issues. Android is a diverse ecosystem, and this is one of those times you feel the sting of it. Some phones we have tried will playback a 720p video file just fine on a small device. Other times, not so much. If you only intend to watch this file on your phone, consider limiting it to the size of your screen. This also saves you on encoding time and file size.

You will also need to take note of the chip you have in your device. For most current gen tablets, that's going to be a Tegra 2 SoC. For most phones, you're looking at some sort of ARMv7 instruction set chip, probably based on the Cortex A8 core. There are, however, phones that use the Tegra, like the Atrix and Optimus 2X. These devices will need a few video tweaks to operate correctly.

Encoding for ARMv7 phones 

Handbrake application on your desktop to convert your files. The settings you can use for most phones are a little more loose than the newer Tegra devices on the market. In Handbrake, you will see a list of baseline standard encodes on the right-hand side. One of them should say "High Profile". Go ahead and pick that one.

Select your source file or folder with the button at the top. In the Picture tab at the bottom, check that the resolution isn't too high. Again, we suggest not exceeding the limit of your screen since some phones don’t like that. For most devices, this will be the only setting you have to worry about. When you're all set, just hit the Start button. If you get poor performance, try again with the Normal profile selected.

When you move the file over to your device, make sure you put it in a folder specifically for videos. The Android video player is tucked away in the Gallery app, so you have to go through there to find your files. Alternatively, you can use a file manager like Astro to navigate to them.

Encoding for Tegra 2 devices

Normal setting. You shouldn't notice any real change in the video quality. 

The drawback for this compression is that your resulting file will be larger and less efficient at playback. The Tegra should be able to decode it, though. So after you select the Normal mode, check your Picture tab and verify the video resolution. Go to the Advanced tab, and turn off CABAC, B-Frames, and Weighted Prediction. The loss of CABAC accounts for most of the file size increase.

Some users are reporting that the Atrix chokes on 720p and higher video files unless you change some settings. You can lower the resolution to around the actual screen resolution of 960x540, or go to the Video tab, and change the Codec to FFmpeg. This is an older codec, but some have had success with it. For tablets like the Xoom, you have more pixels to push, so the resolution problem is less concerning. 

These are new devices, and there will be differences from one to the next, but these settings should work well for most users. If you are still encountering issues, try starting with different presets. or instance, the old iPhone setting for instance, as it drops most of the encoding bells and whistles.

General encoding tips 

If you're having trouble pinning down the codec to use, take one small file, and encode it a few different ways. No need to test with your entire three hour wedding video (or whatever it is, we won't ask). Handbrake allows users to enter command line options for encoding, so if you find a user that claims to have gotten video working on your device, while you cannot, have them copy the command from their advanced tab. You can input it and use their settings.

For some files, you might want to check out apps like RockPlayer to skip the encoding all together. This app uses software deciding to play many different files types. We have found it to be fine for casual viewing, but frame rates are not always where we'd like them to be. In general, your phone can do a better job if you let it decode with the hardware. Battery life is also better like this.

We certainly feel your pain Android users, especially those of you wrestling with new Tegra 2 chips. The lack of an integrated video solution on Android has brought us here, and we'd really like to see Google work something out. Still, if you find the right settings for your device, you can get any DVD you have on your device, it just takes a little work. 
What methods do you use to encode your videos for mobile playback? Share your tips in the comments section below!