Container Formats vs. Codecs
The most common source of confusion in video playback is the difference between a container format and a codec. Understanding this explains why Chrome might refuse to play a file that VLC handles easily.
The Container (The Box)
File extensions like .mp4, .mkv, .webm, and .mov represent Containers. Think of a container as a cardboard box. The box itself isn't the video; it just holds the pieces together. It multiplexes (muxes) a video stream, an audio stream, and subtitles into a single file so they play synchronously.
The Codec (The Contents)
Inside the box are the Codecs (Coder/Decoder). These are the complex mathematical algorithms used to compress the raw pixels and sound waves. Examples include H.264, VP9, AV1, and AAC.
The MKV Problem
If you have an .mkv file containing H.264 video and AAC audio, Chrome has the ability to decode the video and audio perfectly. However, Chrome refuses to play the file. Why? Because Chrome's engineers chose not to write a parser for the Matroska (MKV) container. It cannot open the box, so it never reaches the codecs inside.
The solution is not re-encoding the video (which reduces quality and takes hours). The solution is remuxing: taking the video and audio streams out of the MKV box and placing them into an MP4 box, which takes seconds.