MKVToolNix is a small collection of tools (mkvmerge, mkvinfo, mkvextract, mkvpropedit and mmg) that allows you to manipulate Matroska (MKV) files in several ways. You can use MKVToolNix to create, split, edit, mux, demux, merge, extract or inspect Matroska files. The program will also work with other video formats (AVI, MPEG, MP4, MPEG, Ogg/OGM, RealVideo, MPEG1/2, h264/AVC, Dirac, VC1) including some video codecs (such as VP9 video codec support – reading from IVF/Matroska/WebM files, extract to IVF files), audio (AAC, FLAC, MP2, MP3, (E)AC3, DTS/DTS-HD, Vorbis, RealAudio) and also most subtitle formats (SRT, PGS/SUP, VobSub, ASS, SSA etc.).
New features and enhancements
- MP4 reader: improved the detection of edit lists consisting of two identical entries, each spanning the file’s duration as given in the movie header atom. The second entry is ignored in such cases.
JSON identification: the “display unit” video track property is now reported as display_unit. The JSON schema has been bumped to v11 for this change.
mkvmerge, mkvextract: AVC/h.264: empty NALUs will now be removed.
mkvextract: VobSub extraction: empty SPU packets will now be dropped during extraction as other tools such as MP4Box cannot handle them correctly.
- E-AC-3 parser: fixed determining the number of channels for streams that contain an AC-3 core with dependent E-AC-3 frames.
Matroska reader: fixed mkvmerge buffering the whole file if a video track is multiplexed that consists of only one or a few frames.
the “display unit” video track property will now be kept if it is set in the source file.
- MKVToolNix GUI:
- multiplexer: when scanning playlists, all playlists were offered for selection regardless of the value of the “minimum playlist duration” setting.
multiplexer: deriving track languages from file names: the regular sub-expressions for ISO 639-1 codes could match on empty strings, too, causing matches in wrong places and hence no language being recognized in certain situations.
header editor: fixed a crash when saving the file fails (e.g. because it isn’t writable).
header editor: the editor was wrongfully claiming that mandatory elements with default values cannot be removed in the “status” text.
preferences: on macOS & Linux the setting “enable copying tracks by their type” wasn’t restored on program start.