Category Archives: Matroska

MKVToolNix v19.0.0 released

The year’s almost over, so I’m just in time for the last release of the year: MKVToolNix v19.0.0 is out. It’s not that big of release, but it still contains a couple of improvements all over the place — and two nice performance improvements on Windows that people will likely notice.

There were no changes for package maintainers.

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

Here are the NEWS since the previous release:

Important notes

  • The MKVToolNix project now contains a Code of Conduct.
  • The MKVToolNix project’s source code repository, bug tracker and wiki have been moved to GitLab.

New features and enhancements

  • mkvmerge: splitting by duration, by timestamps or by timestamp-based parts: mkvmerge will now consider the first key frame within 1ms of the requested value to be eligible for splitting.
  • MKVToolNix GUI: the GUI will now save and restore the widths of columns in tree and list views. Implements #2057.
  • MKVToolNix GUI: header editor: when closing or reloading a modified file, the GUI will now focus the first element that’s been modified before asking the user for confirmation regarding discarding unsaved changes.

Bug fixes

  • mkvmerge: fixed reading text files encoded in UTF-16 order UTF-32 that have different forms of line endings (new lines, carriage returns or a mix of both). Fixes #2160.
  • mkvmerge: MP4 reader: fixed mkvmerge’s interpretation of edit list entries with segment_duration == 0 when there’s more than one edit list entry. In that case mkvmerge was reading the whole content more than once. Fixes #2152.
  • mkvmerge, GUI’s multiplexer: MIME types: added the font top-level media types from RFC 8081. This means that the following new MIME types for fonts can be used: font/ttf, font/otf, font/woff and font/woff2.
  • mkvmerge: MPEG transport stream reader: fixed slow speed on Windows due to lack of buffering.
  • mkvextract: fixed slow track extraction speed on Windows due to lack of buffering. Fixes #2166.
  • MKVToolNix GUI: multiplexer: changing the "subtitle/chapter character set" drop-down was ignored when the selected track was a chapter track. Fixes #2165.
  • MKVToolNix GUI: multiplexer: once a "subtitle/chapter character set" was set for a track it couldn’t be changed back to the empty entry (= auto-detection) anymore.
  • MKVToolNix GUI: header editor: fixed re-translating several displayed strings when the GUI language is changed if the language the GUI was started with was not English. Fixes #2159.
  • MKVToolNix GUI: header editor: whenever a file did not contain a "date" element in its segment information section, the GUI would erroneously ask the user to confirm discarding unsaved changes when closing or reloading the tab. Fixes #2167.
  • MKVToolNix GUI: job queue: jobs are now saved when their status changes in addition to when the program exits. Fixes #2168.

Have fun :)

MKVToolNix moves to GitLab

Today I’ve moved MKVToolNix’ source code repository, the bug tracker and the wiki (including the FAQ) over to GitLab. You can continue using your checked-out copy of the source code if you want by simply replacing https://github.com/mbunkus/mkvtoolnix with https://gitlab.com/mbunkus/mkvtoolnix in the file .git/config.

The move was done using GitLab’s import function. This means that all issues filed by people who already have a GitLab account will remain filed under your name (by mapping it to your GitLab account). All other issues have been mapped to me with mentioning the original poster in the issue text’s first line.

Anyone who doesn’t have a GitLab account yet — don’t fret. You can easily sign in to GitLab using your GitHub account (click on the corresponding icon at the below the login form).

MKVToolNix v17.0.0 released

Here’s release v17.0.0 of MKVToolNix. The rather short timespan since the previous release is due to a nasty bug in the VC-1 code that a lot of people are hitting with v16.

Other important changes are the overhaul of mkvextract’s command line interface and all programs using the word “timestamp” instead of “timecode” (which also affects mkvmerge’s command line interface). See the news below for more information.

There were no changes for package maintainers.

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

Here are the NEWS since the previous release:

Important notes

  • The word "timecode" has been changed to "timestamp" everywhere it was used in MKVToolNix. This affects program output (including mkvinfo’s), GUI controls, command line parameters (e.g. mkvmerge --timestamp-scale …) and file formats. All programs remain backwards compatible insofar as they still accept "timecode" in all those places (e.g. mkvmerge --timecode-scale …).
    The reason for the change is wrong usage. What both the Matroska specification and MKVToolNix used "timecode" for is normally called a "timestamp" in audio & video domains. A "timecode" on the other hand has a specific meaning. As the Matroska specification is moving towards implementing real timecodes, it will also move towards correcting the verbiage. MKVToolNix is following this change.
  • mkvextract’s command line interface has been changed to allow extraction of multiple items at the same time. The first argument must now be the source file’s name. All following arguments either set the mode (e.g. tracks) or specify what to extract in the currently active mode.
    Those items that were written to the standard output (chapters, tags and cue sheets) are now always written to files instead. Therefore the respective modes require an output file name.
    For example, extracting two tracks, the chapters and the tags can be done with the following command:
    mkvextract input.mkv tracks 0:video.h265 1:audio.aac chapters chapters.xml tags tags.xml
    The old interface (specifying the mode first and the source file name second) remains working and supported. However, it is now deprecated and will be removed at the end of 2018.

New features and enhancements

  • mkvmerge: AC-3: during identification regular AC-3 and E-AC-3 tracks will now be identified differently for most container formats (exception: AVI, Real Media, Ogg/OGM). The codec will be reported as AC-3 for regular AC-3 and as E-AC-3 for E-AC-3 tracks instead of the combined AC-3/E-AC-3.
  • mkvextract: the command line interface has been changed to allow extraction of multiple items at the same time. See section "Important notes" for details.

Bug fixes

  • mkvmerge: AAC ADTS parser: mkvmerge will now parse the program_config_element if it is located at the start of an AAC frame in order to determine the actual number of channels. This overrides invalid channel configurations in the ADTS headers, for example. Fixes #2107.
  • mkvmerge: fixed AC-3 being misdetected as encrypted MPEG program streams under certain conditions.
  • mkvmerge: Dirac: under certain conditions (e.g. only muxing a single Dirac track without any other tracks) mkvmerge was always setting the pixel width & height to 123. The frame rate was wrong, too.
  • mkvmerge: E-AC-3 in Matroska: if AC-3 cores and their corresponding E-AC-3 extension are located in two different Matroska blocks, then mkvmerge will now re-assemble them into a single block and only use the first block’s timestamp.
  • mkvmerge: SRT reader: fixed calculating the duration of entries starting with at a negative timestamp.
  • mkvmerge: VC-1: under certain conditions (e.g. only muxing a single VC-1 track without any other tracks) mkvmerge was always setting the pixel width & height to 123. The frame rate was wrong, too. Fixes #2113.
  • mkvmerge: command line options: an error message will be output if the single-value-form of the --sync option is used and it isn’t a number (e.g. --sync 0:asd). Fixes #2121.
  • mkvpropedit, GUI’s header editor: both programs will now show proper error messages instead of crashing when certain kinds of data corruption is found when reading a file. Fixes #2115.

Have fun :)

MKVToolNix v16.0.0 released

I’ve just released v16.0.0 of MKVToolNix. This release is mostly a bug fix release.

Changes for package maintainers: libMatroska v1.4.8 is now required.

You can download the source code or one of the binaries. The Windows and macOS binaries have been built already and are available for download. The Linux binaries will be available later today.

Here are the NEWS since the previous release:

New features and enhancements

  • mkvmerge: MP4 reader: added support for Vorbis. Implements #2093.

Bug fixes

  • configure: the checks for libEBML and libMatroska have been fixed to require libEBML 1.3.5 and libMatroska 1.4.7 as intended.
  • mkvmerge: AAC reader: mkvmerge will now emit an error message for AAC files whose header fields imply a sampling frequency or number of channels of 0. See #2107.
  • mkvmerge: AVC/h.264 ES parser: fixed the calculation of reference information for P and B frames. This also fixes some P frames being marked as B frames and vice versa.
  • mkvmerge: AVC/h.264 ES parser: only non-key frames that have the NALU header field nal_ref_idc set to 0 will be marked as "discardable" in SimpleBlock elements. Other half of the fix for #2047.
  • mkvmerge: HEVC/h.265: the generation of the HEVCC structure stored in CodecPrivate was wrong in two places: 1. the position of the number of sub-layers was swapped with reserved bits and 2. the VPS/SPS/PPS/SEI lists did not start with a reserved 1 bit.
  • mkvmerge: output: the doc type version will be set at least to 2 if certain elements are written (CodecState, CueCodecState, FlagInterlaced).
  • mkvmerge: output: the track header attributes MinCache and MaxCache will not be written anymore. Fixes #2079.
  • mkvmerge: Matroska reader: the "key" and "discardable" flags of SimpleBlock elements will be kept as they are. Partial fix for #2047.
  • mkvmerge: Matroska reader: if present in the file, the "white colour coordinate x" track header attribute was written to both "white colour coordinate x" and "white colour coordinate y" in the output file.
  • mkvmerge: Opus output: mkvmerge will now put all frames with discard padding into their own block group. Fixes #2100.
  • MKVToolNix GUI: header editor: removed the check for external modification when saving the file. Fixes #2097.
  • MKVToolNix GUI: job queue: fixed calculation of total progress when automatic removal of completed is enabled. Fixes #2105.

Build system changes

  • libEBML v1.3.5 and libMatroska v1.4.8 are now required. In fact v15.0.0 already requires libEBML v1.3.5 and libMatroska v1.4.7 but did not include proper version checks for them (nor was there a NEWS.md entry for the new libMatroska requirement). New is the requirement for libMatroska v1.4.8 due to it fixing writing block groups for tracks with the track number 128 (see #2103).

Have fun :)