MKVToolNix is the one of the best collection of tools (mkvmerge, mkvinfo, mkvextract, mkvpropedit and mmg) for modifying MKV files.
With these tools one can get information about (via mkvinfo) Matroska files, extract tracks/data from (via mkvextract) Matroska files and create (via mkvmerge) Matroska files from other media files. Matroska is a new multimedia file format aiming to become THE new container format for the future. You can find more information about it and its underlying technology, the Extensible Binary Meta Language (EBML), at http://www.matroska.org
The graphical user interface (GUI) allows you to manipulate Matroska (MKV) files in several ways. You can use those tools to create, split, edit, mux, demux, merge, extract or inspect Matroska files.
MKVToolnix will also work with other video formats. Such as AVI, MPEG, MP4, MPEG, Ogg/OGM, RealVideo, MPEG1/2, H264/AVC, Dirac, VC1.
And more as well as some video codecs such as VP9 video codec support – reading from IVF, Matroska, WebM files, extract to IVF files.
Moreover the program can work with audio files such as AAC, FLAC, MP2, MP3, AC3, DTS/DTS-HD, Vorbis, RealAudio. And also work with most subtitle formats including SRT, PGS/ SUP, VobSub, ASS, and SSA.
It is a cross-platform application that will work on Microsoft Windows (both 32 and 64-bit versions), Apple macOS and Linux operating systems.
Here is also the portable version which does not require installation. You just need to start the function. It can also be stored on external devices and run on any computer you have access to.
New features and enhancements
- mkvmerge, mkvpropedit, MKVToolNix GUI: IETF BCP 47 language tags: added missing support for UN M.49 regions for which there are no corresponding ISO 3166 alpha codes. This enables language tags such as `es-419` = Spanish in bLatin America and the Caribbean.
- MKVToolNix GUI: IETF BCP 47 language tags: the text in the widget displaying the current language & the corresponding edit button is now displayed like a link (depending on the theme: different color & underlined), making it clearer that not just the edit button can be clicked but the text, too.
- mkvmerge: AV1 parser: fixed mkvmerge crashing after uncaught exceptions due to certain data conditions. Found by fuzzying.
- mkvmerge: AV1 packetizer: the duration of frames wasn’t set properly. When appending AV1 IVF or OBU files this meant that the last frame of the Nth file and the first frame of file N+1 had the same timestamp.
- mkvmerge: DTS reader: fixed handling of buffers with an odd length when byte-swapped DTS is detected so that mkvmerge doesn’t abort with a failed assertion. Found by fuzzying.
- mkvmerge: h.264/AVC and h.265/HEVC elementary stream readers: mkvmerge will no longer claim to recognize data that looks like AVC or HEVC but with invalid video width/height values as that lead to failed assertions in libEBML later. Found by fuzzying.
- mkvmerge: h.265/HEVC parser: fixed mkvmerge aborting after uncaught exceptions due to certain data constellations found by fuzzying.
- mkvmerge: IVF reader: fixed mkvmerge crashing with a “division by zero” error due to certain data conditions. Found by fuzzying.
- mkvmerge: fixed mkvmerge aborting with a “division by zero” error due to the timestamp scaling factor being 0 after handling certain data constellations found by fuzzying.
- mkvmerge: track statistics: fixed a “division by zero” error when the content’s shorter than 1ms. Found by fuzzying.
- mkvmerge, mkvinfo, mkvextract, mkvpropedit: Matroska access class: fixed an invalid memory access under certain data conditions. Found by fuzzying.
- MKVToolNix GIU: IETF BCP 47/RFC 5646 language tags: the GUI will no longer open the language dialog when clicking on a disabled language display widget.
- MKVToolNix GUI: IETF BCP 47 language tags: the “variants” combo-boxes were not populated even when the language tag was valid and contained at a variant.
- MKVToolNix GUI: IETF BCP 47 language tags: when no language is selected, at least one of the other components (extended subtags, region, or variants) has something selected and “private use” is not empty, the GUI would claim this to be a valid tag, which it isn’t.
- MKVToolNix GUI: multiplexer: when the tracks/chapters/tags selection changes from “at least one entry selected” to “no entry selected”, the input controls will be reset to their default state and not just disabled.
Build system changes
- * `configure` now checks for the presence of the a system-wide installed copy
of the JPCRE2 C++ wrapper library for the PCRE2 library and uses that if
it’s new enough (at least v10.32.1). If not, the bundled version will be
used as a fallback.
New feature: IETF BCP 47 language tags
- I’ve written up a [nice FAQ entry] about the switch to using IETF BCP 47 language tags, how they interact with legacy language elements, how the programs actually behave and how to disable their use if necessary.
- mkvmerge: IETF BCP 47/RFC 5646 language tags: mkvmerge will now accept full BCP 47 language tags for all options taking a language. mkvmerge will always write “LanguageIETF” track header elements. If the language tag contains a valid ISO 639-2 language code it will also set the legacy “Language” track header element to the included ISO 639-2 code.
- mkvmerge: IETF BCP 47/RFC 5646 language tags: if present the “LanguageIETF” track header element will be reported as the `language_ietf` property in JSON identification mode.
- mkvmerge: IETF BCP 47/RFC 5646 language tags in chapters: mkvmerge will now write “ChapLanguageIETF” elements when creating chapter atoms, either when reading the simple chapter format or when generating chapters due to the `–generate-chapters` command line option.
- mkvmerge: IETF BCP 47/RFC 5646 language tags in tags: mkvmerge will now write “TagLanguageIETF” elements when creating “simple tag” elements, either when reading tag XML files or when generating them.
- mkvmerge: IETF BCP 47/RFC 5646 language tags: added an option `–disable-language-ietf` that causes mkvmerge to only write the legacy language elements.
- mkvmerge, mkvpropedit, MKVToolNix GUI’s chapter editor: IETF BCP 47/RFC 5646 language tags in chapters: when reading XML chapter files the programs will now add “ChapLanguageIETF” elements for atoms that don’t contain them. The values are derived from existing “ChapterLanguage” elements.
- mkvpropedit: IETF BCP 47/RFC 5646 language tags: setting/deleting the track language now acts on both the old language element as well as the “LanguageIETF” track header element.
* mkvpropedit: IETF BCP 47/RFC 5646 language tags: added an option `–disable-language-ietf` that causes mkvpropedit to apply changes to the `language` track header property only to the legacy language track header element.
- mkvinfo: IETF BCP 47/RFC 5646 language tags: added support for the “LanguageIETF” track header element.
- MKVToolNix GUI: multiplexer: added full support for IETF BCP 47/RFC 5646 language tags for both track and chapter languages.
- MKVToolNix GUI: chapter: added full support for IETF BCP 47/RFC 5646 language tags for chapter languages.
- MKVToolNix GUI: header editor: added full support for IETF BCP 47/RFC 5646 language tags for track header languages. The header editor allows editing of the legacy language elements and the IETF BCP 47 language elements independent of each other.
Other new features and enhancements
- mkvmerge: the chapter generation mode `when-appending` now also works with the splitting modes `parts:` & `parts-frames:` when using the `…,+…` syntax for appending other sections of the source file to the same destination file.
- MKVToolNix GUI: multiplexer: the file selection dialogs now include the extension `.dtsma` for DTS files.
- mkvmerge: MP4 reader: sped up parsing MP4 DASH files with a lot of segments (`trun` atoms) quite a bit.
- The PCRE2 regular expression library is now used instead of `std::regex` for big performance improvements in all places where regular expressions are used for parsing big chunks of text, e.g. in the subtitle parsers.
- all programs: Windows: all programs now support long file names on Windows 10 release 1604 if they’re turned on in the registry.
- MKVToolNix GUI: preferences: under certain conditions changing the selected entry in the page tree on the left did not cause the page shown on the right to be updated.
- mkvmerge: splitting text by a fixed string (e.g. `,`) is now done by using `std::string.find()` instead of using a regular-expression-based text splitting function, greatly improving its performance.
- mkvmerge: mkvmerge will now read-buffer file I/O when probing text file formats which increases its speed significantly on Windows.
- mkvmerge: MP4 reader: fixed handling of `tkhd` atoms of version 1.
Build system changes
- The PCRE2 library (the 8-bit variant) is now required.
Homepage – https://mkvtoolnix.download/
Works on Microsoft Windows (both 32 and 64-bit versions), Apple macOS and Linux operating systems.
Size: 17.6 MB