Software Update: MKVToolNix 20.0.0

Spread the love

Version 20 of MKVToolNix has been released. This collection of open source programs allows viewing, editing and conversion of Matroska files. For example, sound tracks and subtitles can be added, removed or set as default. MKVToolNix is ​​a collection of separate command line tools, but a graphical user interface is also included. Downloads are available for Windows, various Linux distributions, and macOS. The changelog for this release looks like this:

Important notes

  • Feature removal: several deprecated features have been removed:
    • mkvmerge: the deprecated options –identify-verbose (and its counterpart
      -I), –identify-for-gui, –identify-for-mmg and
      –identification-format verbose-text
    • all command line tools: support for the deprecated, old, proprietary format
      used for option files
    • all command line tools: support for passing command line options via the
      deprecated environment variables MKVTOOLNIX_OPTIONS, MKVEXTRACT_OPTIONS,
  • mkvinfo: most of its code was re-written in order to lay the groundwork for
    including its functionality in MKVToolNix GUI but with more features than
    the existing mkvinfo GUI. The result is that a lot of its output has been
    changed slightly while keeping the basic layout. Changes include but aren’t
    limited to:
    • Several element names are a bit clearer (eg Maximum cache instead of
    • All timestamps and durations are now output as nanoseconds in formatted
      form (eg 01:23:45.67890123). All additional formats (eg floating
      point numbers output in seconds or milliseconds) were removed.
    • Element names for chapters and tags are now translated if a translation is
    • Elements located in wrong positions within the Matroska document are
      handled better.
      While mkvinfo’s output is mostly kept very stable, it is not designed to be
      parsed by other utilities. Even though I’ve tried hard to cram all changes
      and cleanups into this version, additional changes may be made in the next
      couple of releases depending on user feedback and bug reports.

New features and enhancements

  • mkvmerge: AVC/h.264 packetizer (framed): access unit delimiter NALUs will
    now be removed. implementations #2173.

Bug fixes

  • mkvmerge: AVC/h.264 parser: when fixing the bitstream timing information
    mkvmerge will now use exact representations of the desired field duration if
    possible. For example, when indicating 50 fields/second num_units_in_tick
    is set to 1 and time_scale to 50 instead of 5368709 and 268435456. Part of
    the fix for #1673.
  • mkvmerge: AVC/h.264 parser: mkvmerge no longer assumes that encountering
    sequence parameter set or picture parameter set NALUs signal the start of a
    newframe. Fixes #2179.
  • mkvmerge: AVC/h.264 packetizer (framed): when mkvmerge is told to fix the
    bitstream timing information, it will now update all SPS NALUs, not just the
    ones in the AVCC. Part of the fix for #1673.
  • mkvmerge: MPEG TS reader: TS packet payloads will only be treated as PES
    packets if the payload actually starts with a PES start code. the prior
    behavior led to wrong timestamps and potentially broken frame data. Fixes
  • mkvmerge: MPEG TS reader: mkvmerge will now drop incomplete PES packets as
    soon as an error is detected in the transport stream instead of passing the
    incomplete frame to the packetizer. An error is assumed either if the
    transport_error_indicator flag is set or if the value of the
    continuity_counter header field doesn’t match the expected value. Fixes
  • mkvmerge: Opus: when re-muxing Opus from Matroska mkvmerge will now write
    “block duration” elements for all block groups where a “discard padding” is
    set, too. Fixes #2188.
  • mkvmerge: SRT reader: mkvmerge can now handle SRT files with timestamps
    without decimal places (eg 00:01:15 instead of 00:01:15000).
  • mkvmerge: read buffer I/O class: the class could get out of sync regarding
    the file position of the underlying file I/O class causing wrong data to be
    returned on subsequent read operations. One result was that trying to
    identifying MPLS files that refer to very short M2TS files caused mkvmerge
    to segfault.
  • mkvmerge: multiplexer core: if there’s a gap in audio timestamps, a new
    block group/lace will be started for the first frame after each gap. before
    the fix the frame after the gap was often stored in the previous block group
    causing the gap to be in the wrong place: at the end of that block
    group. Fixes #1700.
  • mkvextract: AVC/h.264: if two consecutive IDR frames with the same
    idr_pic_id parameter and no access unit delimiters are found between them,
    mkvextract will insert an access unit delimiter in order to signal the start
    or a new access unit. Fixes #1704.
  • MKVToolNix GUI: update check dialog: Markdown links will now be converted to
    clickable links. Fixes #2176.
  • build system: fixed a race condition when creating new directories if rake
    is run with -jN in newer versions of Ruby/rake. Fixes #2194.

Build system changes

  • cmarkthe CommonMark parsing and
    rendering library in C, is now required when building the GUIs.

Version number 20.0.0
Release status Final
Operating systems Windows 7, Linux, macOS, Windows 8, Windows 10
Website Moritz Bunkus
License type GPL
You might also like