A downloaded 1080p film often arrives as a .mkv file a few gigabytes in size. Open it
on a phone and the result is unpredictable: one app plays it instantly, another shows a black
screen with sound, a third says "unsupported format". The file is the same. The difference is
the software's ability to decode what is inside the container.
MKV is a box, not a codec
Matroska (MKV) is a container format. It holds video, audio, subtitles and metadata in one file — like a ZIP archive for media. The container says nothing about how the video is compressed. A typical MKV from a download site contains:
- Video: H.264 (most common), H.265/HEVC (4K releases), or AV1 (newer releases).
- Audio: AAC (common), AC-3/E-AC-3 (from disc), DTS (from Blu-ray), FLAC or Opus (lossless releases).
- Subtitles: SRT, ASS/SSA or PGS (blu-ray image subtitles).
- Chapters and title metadata the player may show or ignore.
Android's built-in media framework understands a decent set of these — and nothing more. If the file uses HEVC in 10-bit, or AC-3 audio, or ASS subtitles with complex styling, the default player can fail even though the container is "supported".
Why some Android players fail where others succeed
There are two kinds of video applications on Android. The first delegates decoding to the platform's MediaCodec framework. That is efficient and battery-friendly, but the set of codecs is fixed by the device's chipset and vendor. The second ships its own decoding engine — the approach taken by VLC and by players built on LibVLC, such as PurePlay. That engine knows how to demux Matroska, decode the video and audio itself when hardware decoding is unavailable, and render subtitles properly.
In practice: a phone from 2019 with a Snapdragon chipset will hardware-decode H.264 and most HEVC, but may lack AC-3 audio decoding and ASS rendering. A platform-only player then shows video with no sound, or no video at all. An engine-based player falls back to software and plays both.
What to check before you install anything
If an MKV will not play, identify what is inside it. On a computer, ffprobe gives
you a one-screen answer:
ffprobe -hide_banner movie.mkv
Look at the Stream lines. Video: hevc (Main 10) means 10-bit HEVC.
Audio: ac3 means Dolby Digital. Subtitle: ass means styled subtitles.
Those three are exactly the ones that trip up simpler players.
The practical options on Android
1. A player built on LibVLC
This is the direct solution for downloaded MKV files: the engine handles the container, the codecs and the subtitles, and falls back to software decoding when the chipset gives up. PurePlay is one of these players — it is free, has no ads inside the app, and also handles your music library. VLC itself is another. The difference is interface and philosophy rather than format support.
2. Convert the file first
If you must use a platform-only player, converting to H.264 + AAC in an MP4 container makes the file compatible with everything. The cost is time, quality loss (one more encode) and storage. For a single file it is fine; for a library it is a bad habit.
3. Streaming apps for local files
Some apps that advertise "MKV support" are streaming clients wrapped around a local file picker. They usually work, but they add an account, ads, or both — and they still need to decode the file on the phone. For local media, a local player is simpler and faster.
What "without ads" actually means
The ad-supported players on Android typically show a banner in the library and a full-screen ad when you pause or finish. That is legal and sometimes the only way a free app is funded — but it is a poor fit for a player: you opened it to watch a film, not to look at advertising. When choosing, check where the ads appear, not just whether the app is free.
PurePlay's position is simple: the app has no ad SDK, no analytics and no account. The project is funded by advertising on this website only. That is a choice with a cost — the app is a single download rather than a growth machine — and it is the reason the playback screen is empty of everything except your video.
Step by step: play an MKV on Android
- Copy the file to the phone, or point the player at it from an SD card or USB drive.
- Open the player and grant media access so it can list the file in its library.
- Tap the file. If it is an MKV with HEVC or AC-3 audio, expect the engine to decode in software on older devices.
- If subtitles are missing, load the external
.srtfrom the subtitle menu — or keep it in the same folder with the same name so it is picked up automatically. - For a film with two audio tracks, switch language from the audio menu without restarting.
Frequently asked
Does MKV support 4K and HDR? Yes, but playback depends on the device's decoder and screen. A 4K HEVC file on a 1080p phone will be decoded and downscaled; HDR content on a non-HDR screen may look washed out unless tone mapping is applied.
Why is the file so large? MKV releases usually keep the original video bitrate and lossless or high-bitrate audio. That is the point — no quality loss. If size is a problem, remuxing to remove unused audio tracks is lossless and can save gigabytes.
Do I need a separate app for music? Not with a player that handles audio as well as video. PurePlay's Music tab reads the phone's audio library, including FLAC and ALAC, and plays it in the background with lock-screen controls.
If you want the short version: identify the codecs, choose a player with its own engine, and keep the subtitle file next to the video. That is the whole job.