MKV, MP4, AVI: what a video container actually holds
The extension on a video file describes the box, not what's inside it. Understanding the difference explains almost every “why won't this play” problem.

A video file is a container holding several separate streams: video, one or more audio tracks, subtitles, chapter markers and metadata. The container defines how those are packaged together. The codec defines how each stream is compressed. These are different things, and conflating them is the source of most confusion.
An analogy that holds up: the container is the box, the codecs are the languages the contents are written in. A device can recognise the box and still be unable to read what's inside.
The containers you'll meet
| Container | Strengths | Watch out for |
|---|---|---|
| MP4 | Near-universal support; streams well; the safe default | Limited subtitle format support; less flexible about what it can carry |
| MKV | Carries almost any codec, unlimited tracks, proper subtitle support, chapters | Not supported natively by some TVs, phones and older devices |
| AVI | Very old, very widely readable | Dated; poor support for modern codecs, subtitles and variable bitrate audio |
| MOV | Apple's format; common from cameras and editing software | Support outside Apple platforms is patchier |
| WebM | Designed for the web; royalty-free codecs | Narrow use outside browsers |
Why a file won't play
When a video fails, it's almost always one of four things, and they're worth checking in order:
1. The container isn't recognised. The player refuses to open the file at all, often with a generic error. Common with MKV on TVs and phones.
2. The video codec isn't supported. The file opens, audio plays, the picture is black or frozen. Usually means the video is in something newer than the device can decode — HEVC or AV1 on older hardware.
3. The audio codec isn't supported. The mirror image: picture plays, no sound. Frequently multi-channel formats like DTS on devices that only handle stereo AAC.
4. The subtitles aren't supported. Everything plays, subtitles don't appear. Container-embedded subtitle formats vary widely in support.
The diagnostic is the symptom. Black picture with sound and silent picture with video point at completely different problems, and knowing which you have saves a lot of guessing.
Remuxing versus re-encoding
This distinction is worth knowing because one is instant and lossless and the other isn't.
Remuxing moves the existing streams into a different container without touching them. MKV to MP4 in under a minute, with zero quality loss, because nothing is recompressed. If your device supports the codecs but not the container, this is the fix.
Re-encoding decompresses and recompresses a stream into a different codec. Slow, and lossy — you lose quality every time. Only necessary when the codec itself is unsupported.
Try remuxing first. People routinely spend an hour re-encoding a file when a thirty-second remux would have solved it.
Useful tools
- MediaInfo tells you exactly what's inside a file — every stream, every codec. Start here; it turns guessing into knowing.
- MKVToolNix for remuxing into and out of MKV, and for adding or removing tracks.
- HandBrake for re-encoding when you actually need to.
- VLC plays essentially everything, which makes it a good way to test whether a file is broken or the device simply can't handle it.
Practical defaults
For files that need to play anywhere, including old devices: MP4 container, H.264 video, AAC audio. It's not the most efficient combination, and it's the one that works.
For a home library played on devices you control: MKV, with whatever codec gives the best quality per gigabyte, multiple audio tracks and proper subtitles. Keep the flexibility, since you can always remux to MP4 for a specific device later.