# Change Log
# Version 50.0.0 "Awakenings" 2020-09-06
## New feature: IETF BCP 47 language tags
* I've written up a nice FAQ entry ( https://gitlab.com/mbunkus/mkvtoolnix/-/wikis/Languages-in-Matroska-and-MKVToolNix )
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. Part of the implementation of #2419.
* 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. Part of the implementation of #2419.
* 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. Part of the implementation of #2419.
* 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. Part of the implementation of #2419.
* mkvmerge: IETF BCP 47/RFC 5646 language tags: added an option `--disable-language-ietf` that causes mkvmerge to only write the legacy
* 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. Part of the
implementation of #2419.
* 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. Part of the implementation of #2419.
* 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. Part of the implementation of #2419.
* MKVToolNix GUI: multiplexer: added full support for IETF BCP 47/RFC 5646 language tags for both track and chapter languages. Part of the
implementation of #2419.
* MKVToolNix GUI: chapter: added full support for IETF BCP 47/RFC 5646 language tags for chapter languages. Part of the implementation of #2419.
* 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. Part of the implementation of #2419.
## 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. Implements #2898.
* MKVToolNix GUI: multiplexer: the file selection dialogs now include the extension `.dtsma` for DTS files. Implements #2901.
* mkvmerge: MP4 reader: sped up parsing MP4 DASH files with a lot of segments (`trun` atoms) quite a bit. Part of the fix of #2900.
* 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. Part of the fix of #2899.
* all programs: Windows: all programs now support long file names on Windows 10 release 1604 if they're turned on in the registry. Implements #2916.
## Bug fixes
* 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. Fixes #2895.
* 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. Part of the fix of #2899.
* mkvmerge: mkvmerge will now read-buffer file I/O when probing text file formats which increases its speed significantly on Windows. Part of the fix
* mkvmerge: MP4 reader: fixed handling of `tkhd` atoms of version 1. Fixes #2900.
## Build system changes
* The PCRE2 library (the 8-bit variant) is now required.
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 formats (AAC, FLAC, MP2, MP3, (E)AC3, DTS/DTS-HD, Vorbis, RealAudio) and also most subtitle formats (SRT, PGS/SUP, VobSub, ASS, SSA, etc.). MKVToolNix is a cross-platform application that will work on Windows® (both 32 and 64-bit versions), Mac® OS X® and Linux. Please note that from this page you can download the Windows® (installer and portable) and Mac® OS X® versions. If you're looking for a Linux version, you can download one from MKVToolNix homepage.
Trademark Note 1: Microsoft®, Windows® and other product names are either registered trademarks or trademarks of Microsoft Corporation in the United States and/or other countries.
Trademark Note 2: Mac and OS X are trademarks of Apple Inc., registered in the U.S. and other countries.
Note: I tested MKVToolNix on Windows® 7 Ultimate 32-bit using mkvmerge GUI and several other tools opened from the Command Prompt such as mkvinfo. Therefore, if you're looking for more information on how to compile MKVToolNix yourself, check the README file (online). I wanted to test two things: the mkvmerge GUI (software interface) and see how easy or hard is to use the command line for all the other tools such as "mkvinfo."
The software interface (mkvmerge GUI)
As soon as the setup finished, I opened the "mkvmerge GUI" shortcut from my desktop. At a first look, the interface seems quite intuitive, so my first action was to open an MKV file, select an option and see the result. I went to program interface at the "Input" tab and used the "Add" button (it also works using the "drag and drop" method.
I selected a 710 MB MKV file and I wanted to split this (from "Global" tab - select "Split Mode" - "split after size" and then I specified the size - in this case 50M = 50MB) in smaller files with a size of 50 MB for each. Finally, I clicked on "Start Muxing" button.
The program required just 45 seconds for this operation, and the result was 14 smaller MKV files. After this, I wanted to mux the content of an AVI file in MKV format. Again, I went to "Input" tab and used the "Add" button, I selected an AVI file from my computer, and I noticed that the program displayed the Output filename automatically with the name of the same file but this time in MKV (Matroska) format.
Again, the same button called "Start Muxing" was doing all the magic. This time the process was even faster - at the end I could read the following message "Muxing took 34 seconds".
Other command line tools (example: mkvinfo)
To use all the other command line tools in Windows®, open a Command Prompt window. Just hit the "Start" button, click on "Search programs and files" (Windows® 7 and Vista) or "Run" (Windows® XP and others) and type either "cmd" or "command prompt" (without the quotes).
In the command prompt, you can try each program (mkvmerge, mkvinfo, mkvextract, mkvpropedit) by typing its name and the usage parameters. An example would be: "mkvinfo --help" that will display a list with all the commands available. I tried mkvinfo using this command: "mkvinfo -g" and the result was a small interface that allowed me to open an MKV file and see all kind of technical details about it. I was also able to save the results in the TXT format.
You can launch an instance of mkvmerge GUI (software interface) directly from the command prompt. Just type "mmg" and hit "Enter."
Besides of the usual standard documentation from the command prompt (I hate it because it's hard to read) you can find and read the online documentation available on MKVToolNix documentation homepage here: (use the blue links for mkvmerge, mkvinfo, mkvextract, mkvpropedit and mmg to access the online help).
You can learn how to use several main features in minutes but to master the program, it does require more time. Your best bet is to experiment all of his options and whenever you need some help, check the FAQ section (filled with great answers to common issues), start with the guide of mkvmerge GUI here and check the documentation for all the other tools - here (provided once again). MKVToolNix is a "must-have" software if you work with MKV files. It has an incredible amount of features that are not listed on the homepage. Ultimately, if you appreciate this tool, please consider a DONATION to support the work of Mr. Moritz Bunkus, the author of MKVToolNix.