Convert MKV to MP4 without re-encoding
Changing the container without re-encoding is fast and doesn't degrade the picture: ffmpeg simply copies the video into an MP4 file. Only the audio and subtitles sometimes require a choice.
Updated on
"Copy" keeps the audio as is. "AAC" re-encodes it, for better compatibility.
How to use it
- Install ffmpeg if you haven't already.
- Open a terminal in the folder containing the MKV file.
- Copy the generated command and run it: the conversion usually takes a few seconds to a few minutes.
- Open the MP4 to check the picture, the sound and the subtitles.
When copying is enough
MKV and MP4 are containers: the first accepts almost any codec, the second is more restrictive. If the video is H.264 and the audio is AAC, copying gives you an MP4 that plays everywhere and takes a few seconds. To find out which codecs a file uses, run ffprobe, which is installed with ffmpeg.
ffprobe "movie.mkv"
When you need to re-encode
If ffmpeg returns an error or the file won't play, a codec isn't compatible with MP4: this is common with DTS or TrueHD audio, and, depending on the player, with VP9 or AV1 video. In that case, convert the audio to AAC with the option on this page, and for the video use Compatible mode on the MOV to MP4 page, which re-encodes to H.264.
Frequently asked questions
Why is there no quality loss?
The -c:v copy option copies the video stream as is, without decoding or re-encoding it.
The MP4 won't play on my TV. Why?
The container is compatible, but the original video or audio codec may not be. In that case, re-encoding is necessary.
Are all audio tracks kept?
No: by default ffmpeg keeps only one audio track and one video track. To keep several, add -map options.