MKVToolNix v5.4.0 released


I’ve released mkvtoolnix v5.4.0. It’s a release that contains one huge improvement: the AVC/h.264 timecode assignment code has been completely rewritten. Users do not have to specify the default duration/FPS for such tracks anymore safe for the rarest cases. Apart from that there were tons of bug fixes, improvements regarding file type recognition, and a complete re-write of the (E)AC3 parsing code.

A note for package maintainers: Boost’s rational library is now required.

Here are the usual links: the home page, the source code and the Windows installer and 7zip archive.

All of the binaries that I provide myself are already available.

Here’s the full ChangeLog since release 5.3.0:

  • 2012-03-10 Moritz Bunkus <>
    • Released v5.4.0.
  • 2012-03-08 Moritz Bunkus <>
    • mkvmerge: bug fix: Fixed wrong calculation of the maximum number of ns per cluster in certain fringe cases if timecode scale was set to "auto" mode ("–timecode-scale -1"). Fix for bug 707.
  • 2012-03-07 Moritz Bunkus <>
    • build system: The C++ compiler must now support the C++11 keyword ‘nullptr’. configure checks for it. For GCC this means at least v4.6.0.
    • mkvinfo: new feature: mkvinfo will output the track ID that mkvmerge and mkvextract would use for a track. This information is shown alongside the "track number" element in verbose mode and in the track summary in summary mode.
    • mkvmerge, mmg: enhancement: The "–default-duration" in mkvmerge and the "FPS" drop down box in mmg now accept "p" or "i" as a unit — as in e.g. "25p" or "50i". Several commonly used values have been added to mmg’s "FPS" drop down box and others removed.
    • mkvmerge: bug fix: When using an external timecode file with AVC/h.264 video the default duration will be set to the most-often used duration in the timecode file.
    • mmg: enhancement: Added the values "50", "60" and "48000/1001" to the list of commonly used values for the "FPS" input field.
    • mkvmerge: bug fix: AVC/h.264 packetizer: The value given with "–default-duration" (after internal conversion from the unit given by the user to duration in nanoseconds) is now again interpreted as the duration of a frame and not of a field.
    • mkvmerge: bug fix: SRT subtitles: timecodes can contain the minus sign before any digit, not just before the first one.
  • 2012-03-05 Moritz Bunkus <>
    • mkvmerge: bug fix: Sometimes non-AC3 files were mistakenly for AC3 after the re-write of the AC3 handling code on 2012-02-26. This has been rectified. Fix for bug 723.
  • 2012-03-04 Moritz Bunkus <>
    • mkvmerge: enhancement: mkvmerge will keep the "enabled" track header flag when muxing. mkvmerge will also output its value in verbose identification mode as "enabled_track".
    • mkvmerge: enhancement: MicroDVD text subtitles are recognized as an unsupported format instead of an unknown format.
    • mmg: The warning that no default duration/FPS has been given for AVC/h.264 tracks has been removed.
    • mkvmerge: bug fix: Complete re-write of the timecode handling code for AVC/h.264 tracks. Now handles several cases correctly: interlaced video, video with multiple or changing SPS with different timing information. The timing information is extracted from the bitstream. Therefore the user doesn’t have to specify the default duration/FPS himself anymore. Fix for bugs 434 and 688.
  • 2012-02-26 Moritz Bunkus <>
    • build system: Boost’s "rational" library is now required.
    • mkvmerge: bug fix: Complete re-write of the (E)AC3 parsing and handling code. Dependent EAC3 frames are now handled correctly. Fix for bug 704.
  • 2012-02-22 Moritz Bunkus <>
    • mkvmerge: bug fix: The width and height of h.264 video tracks with a pixel format other than 4:2:0 are now calculated correctly. Fix for bug 649. Patch by Nicholai Main (see AUTHORS).
    • mkvmerge: bug fix: Fixed file type recognition and frame drops for VC1 elementary streams that do not start with a sequence header but with frame or field packets instead.
    • mkvmerge: bug fix: Fixed mis-detection as unsupported DV files (happened for e.g. PGS subtitle files).
  • 2012-02-12 Moritz Bunkus <>
    • doc: enhancement: Updates for option file usage and supported subtitle formats.

Have fun.

6 thoughts on “MKVToolNix v5.4.0 released

  1. Lee

    Is the first track in an MKV numbered zero or one? It’s a simple question. But will you please come up with an answer and stick with it throughout all your tools.

    Now I’m not suggesting anyone involved in the MKV project is an idiot, but seriously guys will you please get a grip on the track ID situation! It’s turned into a farce with this release.

    I’m looking at an MKVEXtractGUI windows now, listing 6 tracks in my MKV, numbered 1 through 6. Good so far, nice and clear to me. But next to the number of each track shown in the GUI is a comment in brackets:

    Track 1 (track ID for mkvmerge and mkvextract:0)

    mkvinfo tells me the first track is track 1. mkvmerge and mkvextract think of it as track 0 though.
    So in fact, not track 1 at all. Or track 1 sometimes, but other times 0. WTF???

    Seriously guys, you have lost the plot. A couple of releases ago when this ID change happened, I decided stuff MKV, I’m switching to M2TS. That’s something I’m hearing time and time again.

    It looks like you are doing a fantastic job of destroying your format. Goodness knows why. Perhaps you are idiots after all.

    1. mosu Post author

      Please read this explanation about track IDs. They are something that has nothing to do with the Matroska format in general. They’re something internal to MKVToolNix: a way to tell the tools (mkvmerge, mkvextract) which track to operate on. This has always been documented, and how to retrieve those IDs hasn’t changed at all: with “mkvmerge --identify yourfile.ext” for all the file types that mkvmerge supports.

      Also I haven’t changed the ID numbering base on a whim. There was a bug that needed to be fixed, and the only way to fix it was to change how mkvmerge/mkvextract assign the ID to the tracks found in the file. All external tools that used the correct way (read: that queried “mkvmerge --identify” and parsed its output) continued working without a problem. Unfortunately MKVExtractGUI didn’t. It relied on a specific numbering scheme and even though it did call “mkvmerge --identify” in order to find out what kind of tracks there were it did not parse the track ID from that output.

      I will also not change this scheme again. As a matter of fact mkvmerge’s numbering scheme is now consistent for all input files it supports. Each track found are numbered consecutively starting at 0. Easy enough. Before it sometimes depended on header fields found in the source file — which turned out not be unique in certain cases.

      1. Lee

        Ah, well that’s all lovely then. Thanks for the update.

        However, the fact remains that from release to release, the MKVToolNix (toolkit / platform / whatever you want to call it) has, I believe, been badly managed.

        It’s noble of you to state that you didn’t change the ID numbering scheme on a whim. Only, isn’t that worse? The release of MKVToolNix v5.2.0 broke every installation out there of MKVCleaver (and MKVExtractGUI?) because of a planned change you made. Do you test releases?

        When your userbase started asking questions in the forums at, telling you exactly what was going wrong, you yourself posted what could be read as a somewhat arrogant response, stating:

        “Then either you’re doing it wrong (e.g. you haven’t overwritten existing files when extracting/instralling), or MKVCleaver doesn’t query mkvmerge for the track IDs and relies on them being assigned in a special way. Either way, not my problem.”

        Not your problem? That would explain why you fixed in in the following v5.2.1 release, only I believe you actually broke another in that release, so a chunk of the community decided to skip v5.2.0 and v5.2.1 and wait for something that actually worked.

        It’s staggering that it’s 2012, yet we still have poorly designed/developed or even tested products being released.

        My advice to everyone… forget about MKV. It’s an utterly unnecessary format. Sure, it has some nice features, but it’s basically the MPEG-2 Transport Stream (M2TS) with a few bells and whistles.

        Convert all your MKV files to M2TS and leave the bizarre planet MKV behind.

        And, Mosu, thanks for your openness, but it might be best to just drop this conversation before you do any more damage.

        Vive la M2TS!

        1. mosu Post author

          Oh, I do have an extensive test suite covering almost all of the tools’ features and most non-trivial bugs I’ve ever encountered. I run it for almost every commit I make, and definitely before each release. However, I’m only human and therefore there are still gaps in its coverage. One obvious gap was the mismatch in the track ID handling between mkvmerge & mkvextract in 5.2.0. Of course this is now covered in the test suite.

          There are also limits on what I as the sole developer can test realistically. This includes third-party tools like the GUIs, especially as they’re GUIs and they’re only available on Windows. There’s simply no way I could integrate them into my automatic test suite. And manual testing? I’m not a software company that makes money selling MKVToolNix. I don’t even make a lot via donations (roughly 100 – 200 € a year).

          What I can do and what I’m pretty conscious about is having a tight release cycle. I usually manage one normal release every four to six weeks. For emergency releases like the v5.2.1 one I’m usually faster. And regarding this particular bug: I’ve been notified about it on Dec 19 and fixed it on Dec 24 (yes, on Christmas) also providing a build for Windows. So sue me if I have other things to do in those five days leading up to it :)

          I don’t post on That was probably someone else copying from e.g. where I do offer extensive support. Yes, I often say “Might be a problem on your end” because honestly it often enough is. Just as ofteN it was actually my fault, and I do keep an open mind about it, especially if the user can offer evidence (e.g. command lines that should work and that don’t).

          Just saying. As a single developer having turned out 101 releases over the course of 9 3/4 years now I’ve got nothing to be ashamed of, and I hope you’re not disappointed if I don’t drop MKVToolNix just for you :)

  2. gianni

    This is the versions “codename” I found parsing my videos and searching trough the internet. Would you publish a full one? Could you gently explain where these names are coming from?


    mkvmerge v0.9.5 The Na Na Song
    mkvmerge v0.9.6 Every Little Kiss
    mkvmerge v0.9.7 Invisible Touch
    mkvmerge v1.0.0 Soul Food To Go
    mkvmerge v1.0.1 October Road
    mkvmerge v1.0.2 Elephant’s Foot
    mkvmerge v1.4.0 Cornflakes Girl
    mkvmerge v1.4.1 Cherry Lips
    mkvmerge v1.4.2 Jimi Thing
    mkvmerge v1.5.0 It’s alright, baby
    mkvmerge v1.5.5 Another White Dash
    mkvmerge v1.5.6 Breathe me
    mkvmerge v1.6.0 Ist das so
    mkvmerge v1.6.5 Watcher Of The Skies
    mkvmerge v1.7.0 What Do You Take Me For
    mkvmerge v1.8.0 Wise Up
    mkvmerge v1.8.1 Little By Little
    mkvmerge v2.0.0 After The Rain Has Fallen
    mkvmerge v2.0.2 You’re My Flame
    mkvmerge v2.1.0 Another Place To Fall
    mkvmerge v2.2.0 Turn It On Again
    mkvmerge v2.3.0 Freak U
    mkvmerge v2.4.0 Fumbling Towards Ecstasy
    mkvmerge v2.4.1 Use Me
    mkvmerge v2.4.2 Oh My God
    mkvmerge v2.5.0 Back To The Start
    mkvmerge v2.5.1 He Wasn’t There
    mkvmerge v2.5.2 Stranger in your Soul
    mkvmerge v2.5.3 Boogie
    mkvmerge v2.6.0 Kelly watch the Stars
    mkvmerge v2.7.0 Do It Again
    mkvmerge v2.8.0 The Tree
    mkvmerge v2.9.0 Moanin’
    mkvmerge v2.9.5 Tu es le seul
    mkvmerge v2.9.7 Tenderness
    mkvmerge v2.9.8 C’est le bon
    mkvmerge v2.9.9 Tutu
    mkvmerge v3.0.0 Hang up your Hang-Ups
    mkvmerge v3.0.1 Happy up here
    mkvmerge v3.2.0 Beginnings
    mkvmerge v3.3.0 Language
    mkvmerge v3.4.0 Rapunzel
    mkvmerge v4.0.0 The Stars were mine
    mkvmerge v4.1.1 Bouncin’ Back
    mkvmerge v4.2.0 No Talking
    mkvmerge v4.3.0 Escape from the Island
    mkvmerge v4.4.0 Die Wiederkehr
    mkvmerge v4.6.0 Still Crazy After All These Years
    mkvmerge v4.8.0 I Got The…
    mkvmerge v4.9.1 Ich will
    mkvmerge v5.0.0 Die Wahre Liebe
    mkvmerge v5.0.1 Es ist Sommer
    mkvmerge v5.1.0 And so it goes
    mkvmerge v5.2.1 A Far Off Place
    mkvmerge v5.3.0 I could have danced
    mkvmerge v5.4.0 Piper
    mkvmerge v5.5.0 Healer
    mkvmerge v5.6.0 Kenya Kane

Comments are closed.