Category Archives: Matroska

MKVToolNix available in the Microsoft Store

Starting today you can install MKVToolNix from the Microsoft Store. There’s one caveat, though: it actually costs money in the Store.

But why? Isn’t MKVToolNix Open Source?

Let me start by saying that yes, MKVToolNix is Open Source and always will be. Let me further make it very clear that binaries of all variants of MKVToolNix, including the ones for Windows, will always be available from its home page free of charge. Functionally there will be no differences between the Windows binaries, no matter where you get them from.

So why have a paid version in the Store? Simple: it’s a way for you to support the development of MKVToolNix. In return you don’t have to update it manually anymore as the Store will install them automatically for you.

If you want to support MKVToolNix this way, great, and thanks! Just head over to the Microsoft Store and buy it there. If you don’t want to pay for it for whatever reason, that’s perfectly fine as well! Nothing will change for you: head over to the downloads section on the home page & get it from there.

And in case you want to support MKVToolNix without having to pay, there are so many things you could do. Here are a couple of examples:

I’m really grateful for all such contributions to MKVToolNix and its community.

MKVToolNix v55.0.0 released

Heya everyone,

wait! We’ve just had a release of MKVToolNix. What’s up with doing another one so soon? Well, thing is, that previous release is buggy. Quite a bit. It included three major changes to its internals: the change from boost::filesystem to std::filesystem, the extension of languages to include ISO 639-3 codes and a complete rewrite how file identification works in the GUI.

The first of those rewrites caused a lot of pain for users on Windows. First of all UNC paths such as \\server\share\directory\file.mkv didn’t work at all: the GUI might hang, not remember the most recently used directory, refuse to create missing directories, things like that. Second, there were several situations in which non-ASCII characters (think German Umlauts, Asian characters, Emojis) were mangled. Users are constantly opening new issues in my bug tracker which is always a good indicator that quick bug fix release is warranted.

The other two rewrites also caused bugs that, while not as severe, were annoying, too. This release includes fixes for them, too.

There have been no changes concerning package maintainers.

You can download the source code or one of the binaries. The Windows and macOS binaries as well as the Linux AppImage are available already. The other Linux binaries are stil being built and will be available over the course of the next couple of hours.

Here are the NEWS since the previous release:

Bug fixes

  • all programs, only on Windows: fixed checking existence of & creating directories with UNC paths such as \\server\share\folder\file.mkv. Fixes #3041.
  • all programs, only on Windows: implemented several workarounds for bugs in std::filesystem wrt. UNC paths. The effect of those bugs was that Blu-rays and DVDs couldn’t be added from UNC paths. Fixes #3037.
  • mkvmerge, only on Windows: fixed non-ASCII characters getting mangled in the destination file name when splitting is active.
  • MKVToolNix GUI, only on Windows: fixed the GUI hanging when trying to browse for files on drives that don’t actually exist. Fixes #3046.
  • MKVToolNix GUI, only on Windows: the GUI did not remember UNC paths as the “most recently used source directory” properly.
  • MKVToolNix GUI: only on Windows: when dragging & dropping files from other applications to MKVToolNix GUI the GUI will force the drop action to be a copy action, no matter which keys were pressed by the users. This prevents Windows Explorer from deleting the dragged file when the user presses shift while dropping the file onto MKVToolNix GUI.
  • MKVToolNix GUI, only on Windows: when using the file dialog for selecting a file name to save to (e.g. when browsing for the destination file name in the multiplexer or saving an attachment in the header editor) non-ASCII characters in the default file name were mangled. Fixes #3049.
  • MKVToolNix GUI: multiplexer: the user can now configure what to do when using the “Add source files” button independently of the setting for what happens when files are dragged & dropped onto the GUI. The same options are available, but they’re distinct settings, allowing for different use cases. Fixes #3035.
  • MKVToolNix GUI: multiplexer: deriving the track language from file names doesn’t use one big regular expression of all enabled languages anymore. Instead, the file name is split into parts on a list of characters (such as . or ( and ); configurable in the preferences). This prevents the regular expression becoming too big for the regular expression library to handle when many languages are enabled. Fixes #3048.
  • MKVToolNix GUI: preferences: the language lists for “deriving track languages” and “enabling items by language” always included all the ISO 639-3 languages, even if those weren’t enabled in the “often-used languages” pane. Fixes #3047.

Other changes

  • mkvmerge, MKVToolNix GUI multiplexer: the functionality for changing the length of the NALU “size” field for AVC/H.264 and HEVC/H.265 tracks has been removed. The corresponding command-line option will continue to be recognized by mkvmerge as not to break existing third-party applications, but it won’t actually do anything.

Have fun 😊

MKVToolNix v54.0.0 released

Heya,

again I’m releasing a bit early, not even four weeks after the previous one. This release, however, does pack quite a bit more of a punch than the previous ones, both in terms of enhancements and bug fixes. On top of that one of the libraries used (libEBML) has just been released fixing several heap overflow bugs, and I didn’t want to wait too long to get those fixes into a new MKVToolNix release.

There have been several changes concerning package maintainers. Please refer to the NEWS below for details.

You can download the source code or one of the binaries. The Windows and macOS binaries as well as the Linux AppImage are available already. The other Linux binaries are stil being built and will be available over the course of the next couple of hours.

Here are the NEWS since the previous release:

New features and enhancements

  • mkvmerge: added support for using ISO 639-3 language codes in IETF BF47 language tags. Part of the implementation of #3007.
  • mkvmerge: AC-3 parser: added support for byte-swapped AC-3 data. Implements
    #3022.
  • mkvmerge: Matroska reader: for audio tracks that have the bit depth track header set mkvmerge will now keep that header even for codecs that don’t require it for decoding. Implements #3009.
  • mkvmerge: MPEG transport stream reader, PCM audio tracks: mkvmerge will now re-order the channels for 5.1, 7.0 and 7.1 channel tracks from the Blu-ray layout to the WAVEFORMATEXTENSIBLE layout expected in Matroska. Patch by Tom Yan. Implements #2988.
  • mkvmerge, mkvinfo, mkvpropedit, MKVToolNix GUI: added support for the following new track header elements: "hearing impaired" flag, "visual impaired" flag, "text descriptions" flag, "original" flag, "commentary" flag. Implements #3011.
  • MKVToolNix GUI: added support for using ISO 639-3 language codes in IETF BF47 language tags. As there are several thousand of them, they’re deactivated by default and must be activated in the preferences ("GUI" → "Often used selections" → "Languages"). Part of the implementation of #3007.
  • MKVToolNix GUI: multiplexer: when adding Blu-rays the user can select multiple playlists to add simultaneously in the "select playlist to add" dialog. Implements #2961.
  • MKVToolNix GUI: multiplexer: the file name extensions "eb3" and "ec3" were added for Dolby Digital Plus & "mpl" for Dolby TrueHD in the file dialogs. Part of the implementation of #3027.
  • MKVToolNix GUI: multiplexer: when adding multiple files the dialog asking the user what to do with them has gained a new checkbox. If enabled, all files containing at least one video track will always be placed in newly created multiplex setting. Implements #2966.
  • MKVToolNix GUI: multiplexer: added a menu entry in the "Multiplexer" for adding all files that are currently in the clipboard. Implements #3006.

Bug fixes

  • all: Windows: fixed compatibility with gettext 0.21 and newer on mingw.
  • all: Windows: fixed several of the programs having problems with certain Unicode characters (primarily emojis) in file names (e.g. mkvextract wrongfully complaining about an "invalid mode" or the GUI not being able to find parts of Blu-ray file structures).
  • mkvextract: AAC: fixed wrong channel mask field in the ADTS headers for 7.1 channel layouts. Fix by Tom Yan. Fixes #2636.
  • mkvextract: h.265/HEVC extraction: if the first frame starts with the parameter sets (SPS, PPS & VPS), the ones from CodecPrivate aren’t written and the ones from the first frame are kept. Fixes #3031.
  • mkvmerge: fixed the calculation of chapter timestamps read from NTSC DVDs. Fix by Tom Yan.
  • MKVToolNix GUI: IETF BCP 47 language widget: the language combo box will now always contain the language code the user enters in the free-form field, even if it isn’t in the list of often-used languages the user configured in the preferences.
  • MKVToolNix GUI: multiplexer: when browsing for the destination file name the default directory is now chosen according to the preferences regarding how the destination file name should be formed. For example, if the policy is set to "fixed output directory" then that output directory will be the one initially set when the directory selection dialog is opened. Fixes #3021.
  • MKVToolNix GUI: multiplexer: fixed the removal of appended source files if the "delete source files" end-of-job action is enabled. Fixes #3029.
  • MKVToolNix GUI: chapter editor: when importing chapters from DVDs the IETF BCP 47 language elements will be set, too, not just the legacy language elements.

Build system changes

  • libEBML v1.4.2 and libMatroska v1.6.3 are now required. The optional, bundled copies of both libraries have been updated to those versions. This bump in requirements fixes several heap overflow bugs in libEBML.
  • MKVToolNix is now using the C++17 library feature "file system library" instead of Boost’s "file system" and "system" libraries. For the GNU Compiler Collection (gcc) libstdc++ this means v8 or newer is required; for clang’s libc++ it means v7 or newer. For macOS this means that provided disk image will only run on 10.15 "Catalina" or newer.

Have fun :)

MKVToolNix v53.0.0 released

Heydiho,

trying to keep up my usual schedule in 2021 of about four to five weeks between releases. This time it’s even a bit less than four weeks. Several bug fixes and small enhancements were made.

There have been no changes for package maintainers.

You can download the source code or one of the binaries. The Windows and macOS binaries as well as the Linux AppImage are available already. The other Linux binaries are stil being built and will be available over the course of the next couple of hours.

Here are the NEWS since the previous release:

New features and enhancements

  • mkvmerge: AVI reader: added support for reading the video aspect ratio from the video properties header (vprp chunk) if present and setting the display dimensions accordingly. Implements #2993.
  • mkvmerge: MP4 reader: for h.264/AVC tracks that don’t have an AVCConfigurationBox (avcC atom) in their sample description (stsd) atom or whose avcC atom contains no content mkvmerge will now re-derive the AVCConfigurationBox from the bitstream. Implements #2995.
  • mkvextract: mkvextract will now check if any of the destination file names is the same as the source file name and abort with an error if that’s the case. Implements #3001.
  • MKVToolNix GUI: when querying the user for a file name for saving things (e.g. multiplexer settings or an attachment in the header editor), the automatically suggested file name will now be based on the situation-specific file names (e.g. the destination file name for multiplexer settings or the attachment’s name when saving an attachment in the header editor) instead of the directory’s name. Implements #3012.
  • MKVToolNix GUI: multiplexer: when deriving track languages from file names the GUI will now select the right-most match instead of the left-most one. For example, "La.vie.en.rose.(fr).srt" will now be detected as French (fr) instead of English (en). Implements #3013.
  • MKVToolNix GUI: preferences: the items in the "pre-defined …" lists can now be renamed by double-clicking with the mouse or pressing the F2 key.
  • Windows installer: the bluray_dump command-line utility will be installed into the tools sub-directory. bluray_dump can read & dump certain file types used on Blu-rays: .mpls playlists, .clpi clip information databases, .bdmv index files, bdmt_….xml disc library databases and tnmt_….xml track & chapter name databases.

Bug fixes

  • mkvmerge: stretching chapter timestamps with --chapter-sync now works correctly with floating point values including fractions of floating point numbers (e.g. 12.3/45.67). The tooltips in the GUI have been adjusted accordingly. Fixes #3002.
  • mkvmerge: MPEG 1/2 video handling: the "default duration" header field was often half the value it actually should be, resulting in all video frames having an explicit block duration with the correct value. This has been fixed with a patch by Tom Yan.
  • mkvmerge: MPEG 1/2 video handling: the data stored in Codec private and Codec state doesn’t contain extensions other than sequence & sequencea display extensions anymore. Fix by Tom Yan.
  • mkvmerge: tag handling: when remuxing a Matroska file with the --no-track-tags, existing SOURCE_ID track tags are now skipped, too.
  • MKVToolNix GUI: multiplexer: the drop-down boxes with pre-defined track names now follow the order set in the preferences instead of sorting the entries alphabetically. Fixes #2999.

Have fun :)