High-Efficiency Video Coding (HEVC), also known as H.265, is a video compression standard, regarded by many as the successor to the AVC (H.264) standard. It was developed following the same concepts as H.264 and manages to provide substantially higher video quality than H.264 at the same bit rate. HEVC videos are slowly replacing AVC videos on the Internet. Major websites have already added support for HEVC videos. Some have even got one step further and already disabled AVC videos support. While AVC playback is supported out-of-the-box, even on older Android devices, playing HEVC videos on Android can be tricky.
HEVC PlaybackVideos in HEVC format are compressed. In order to be able to play these videos, they must first be decoded. Decoding can be done by the CPU of the device (known as software decoding) or by using a special chip, designed to carry out this task quickly and efficiently (known as hardware decoding). Decoding both AVC and HEVC videos is very demanding in terms of processing power and software decoding can be very slow on some CPUs. Nearly all Android devices manufactured after 2011 feature some sort of a hardware AVC decoder, which allows them to play most videos encoded using AVC fluidly. However, things are different regarding the relatively new HEVC standard. Most devices produced before 2014 do not have an HEVC decoding chip. Even newer devices can lack an HEVC hardware decoder, especially budget devices.
Find out if your device has Hardware HEVC Decoding supportThe easiest way to find out if your device supports hardware HEVC decoding is using an App that displays codec information, like Media Codec Info. On the Codec List Tab of Media Codec Info App, check for the following:
- OMX.qualcomm.hevc.decoder on Qualcomm chipsets
- OMX.MEDIATEK.HEVC.DECODER on Mediatek chip-sets
- OMX.Exynos.hevc.dec on Exynos chip-sets
Playing HEVC Videos using Software DecodingHEVC software decoding can be done on Android using Google's HEVC software decoder or FFmpeg.
1. Google's HEVC Software DecoderGoogle advertises HEVC as a supported media format on Android from version 5.0. Support is available through Google's software decoding implementation. However, this software decoder is not guaranteed by Google to be available on all devices running Android 5.x and up. You can easily check if your device has this decoder available using the Media Codec Info App mentioned above. Search for OMX.google.hevc.decoder in the Codec List tab. If you have this decoder available, you should be able to play HEVC videos through the stock video player App of your device. Google's HEVC decoder supports HEVC Main Profile Level 3 on Mobile devices and Main Profile Level 4.1 on Android TV. It is optimized for the Android platform and can be faster than FFMpeg based decoding in some scenarios. Don't miss: Looking for a Free Professional Video Editor for Android? Try MOCR!
2. FFmpeg DecodingFFmpeg is usually found pre-installed on custom ROMs like LineageOS. It is implemented as an OMX decoding plugin for Android's MediaCodec and it enables decoding of a big number of media formats that are officially considered unsupported by Android. Although this FFmpeg implementation packs support for HEVC decoding, most often it is disabled in favor of Google's Software Decoder on newer ROMs. FFmpeg's decoder can be quite slow even with low bit-rate videos. Another way to utilize FFmpeg for decoding HEVC videos is using a Video Player that packs its own implementation of FFmpeg inside. The best one available for HEVC, is MX Player. MX Player's decoders are optimized for each CPU architecture, for example taking advantage of NEON instruction support when available. It's FFmpeg implementation is probably the fastest available.
MX Player provides three types of decoding support:
- SW: This will make use of MX Player's internal software decoders (FFmpeg). It is generally the slowest implementation and it is used as a fallback when HW and HW+ are not available.
- HW: HW will use the device's native decoders for videos. If your device packs hardware decoding support for HEVC videos (and the video player is supported by the hardware decoder), it will be used for playback.
- HW+: This is a special decoding implementation. It uses a custom media framework (built in MX Player) and enables some extra hardware decoding capabilities on several devices. Decoding does not make use of Android's native software/hardware implementations. Not all devices are supported though. Usually, unsupported devices have a heavily modified Android media framework by the manufacturer. In this case, installing an aftermarket ROM, if available, might enable this feature. If your device is supported, enabling HW+ might speed up HEVC decoding significantly.
Device Requirements for HEVC Software DecodingThere is no standard way of measuring device requirements for software decoding of HEVC videos. Devices with same hardware characteristics can behave differently since decoding performance can be affected by several factors. The best way to find out what your device can handle is conducting some playback tests. Following is a list of links to HEVC videos. These videos are categorized by bit-rate and resolution, two major factors affecting decoding speed. Best practice is to start testing videos from the start of the list which are less demanding. You could also try playing videos both using the native Android player (if your device packs native software decoding support) and MX Player. Also, please note that, although 10-bit and 4K UHD videos are available at the end of the list, decoding them in software is very demanding and most devices cannot handle the task. They are provided mostly for research purposes.
NOTE720p videos are provided through Elecard. 1080p videos of 400 and 500 Kbps bit-rate and the 4K UHD video are from x265.com. All other videos are provided through jell.yfish.us. The last site provides videos originally for testing HTPC playback capabilities.
- Tears of Steel Resolution: 1080p (1920x1080) Bit-rate: 400 Kbps Download
- Tractor Resolution: 1080p (1920x1080) Bit-rate: 500 Kbps Download
- Jellyfish Resolution: 1080p (1920x1080) Bit-rate: 3 Mbps Download
- Jellyfish Resolution: 1080p (1920x1080) Bit-rate: 5 Mbps Download
- Jellyfish 10-bit Resolution: 1080p (1920x1080) Bit-rate: 3 Mbps Download
- Big Buck Bunny 4K UHD Resolution: 4K UHD (3840x2160) Bit-rate: 3 Mbps Download