MKV with DTS or AC3 audio on Android: why there's no sound and how to fix it
It's one of the most common problems: you open a video on your phone or TV, the picture looks perfect and there's no sound. Or you get an "unsupported audio format" message. The culprit is almost never the file itself, but the audio codec inside it.
Container and codec aren't the same thing
MKV, MP4 and AVI are containers: boxes that hold one or more video, audio and subtitle tracks together. What matters for playback is how each track is compressed, the codec. The same MKV can carry H.264 video with AAC audio (which plays everywhere) or HEVC video with DTS audio (which many devices can't decode).
The audio codecs that cause trouble
| Codec | Where it's used | Why it fails |
|---|---|---|
| AC3 (Dolby Digital) | DVDs, TV broadcasts, many movie copies | It requires a license. Several manufacturers don't include it in the system decoder |
| E-AC3 (Dolby Digital Plus) | Streaming services, recent copies | Same problem as AC3, and on some devices it only works when sent to a soundbar over HDMI |
| DTS and DTS-HD | Blu-ray | Android doesn't decode it out of the box on almost any phone |
| TrueHD | Blu-ray with Dolby Atmos | Very heavy tracks, meant for an AV receiver |
Why some apps play it and others don't
Most players on Android use the system decoder (MediaCodec). If the manufacturer didn't include DTS, the app can't do anything about it. Players that bring their own software decoder, like VLC, mpv or Kodi, can: they decode the audio on the processor and output sound any speaker understands.
Under the hood, Spectaculum uses the mpv engine (through the media_kit library) on Android, Android TV and Windows. That's why it plays MKV files with DTS, AC3, E-AC3 and TrueHD without converting anything, and lets you switch between whatever audio tracks the file has (for example, Latin American Spanish and English).
Fixes, from simplest to most work
1. Use a player with its own decoder
This is the quickest. You open the same file and it plays with sound. With the cloud there's nothing to download: Spectaculum plays it straight from OneDrive, Google Drive, Dropbox, MEGA or your NAS.
2. Pick a different audio track
Many files have two tracks: one in DTS and another in AC3 or AAC. In the player's audio menu you can choose the one your device supports.
3. Convert just the audio
If you need the file to play with sound in any player, you can convert only the audio track to AAC and copy the video untouched, which is quick and doesn't lose any picture quality. With the free ffmpeg tool, it would look something like this:
ffmpeg -i movie.mkv -map 0 -c:v copy -c:s copy -c:a aac -b:a 384k movie_aac.mkv
Keep a copy of the original before converting.
What about the browser?
Browsers are more limited than a native app: they handle MP4 and MKV with H.264 video and AAC or Opus audio just fine, but generally don't decode DTS or AC3. In the web version of Spectaculum those files will play without sound; for them, the Android or Windows app is the better choice.
The video doesn't show either
If on top of having no sound the picture is black or choppy, the problem may be the video codec. 10-bit HEVC (H.265) or AV1 are demanding for devices that are a few years old. In those cases the device's hardware decoding makes the difference, and the only definitive fix is an H.264 copy.