View Full Version : MKVToolNix v24.0.0 released
Inviska
21st January 2018, 18:07
Of course there is: don't use mkvinfo in the first place but "mkvmerge --identification-format json --identify yourfile.mkv" As I've said numerous times. Using mkvinfo for that is the wrong tool.
Thanks a lot, that'll make things a lot easier.
I must admit, I never even looked at the mkvmerge documentation and just assumed mkvinfo was the tool to use. I see now I've done things in completely the wrong way. I'll rework it to use mkvmerge rather than mkvinfo.
Thanks again.
gpower2
21st January 2018, 19:29
You can check gMKVExtractGUI source code here:
https://sourceforge.net/p/gmkvextractgui/code/HEAD/tree/gMKVToolNix/
Or you can use the .NET DLL "gMKVToolNix.dll" in your application if you want an easy solution to get the mkv info. ;)
Thanks to Mosu, mkvmerge since MKVToolNix v9.1.0 reports all the necessary info for identifying the mkv tracks!
tormento
22nd January 2018, 16:12
Sometimes happens that a MKV is muxed inserting delays between tracks and/or changing fps.
Is there a way to reverse engineer what happened from the resulting MKV?
I have tried Media Info but there is no sign of it.
sneaker_ger
22nd January 2018, 16:19
If anything mkvinfo could help.
But of course you need to know what to look for. Better if you just upload samples, command lines and logs if you suspect mkvtoolnix is doing something wrong. Then we can analyze.
About fps also read:
https://gitlab.com/mbunkus/mkvtoolnix/wikis/Wrong-frame-rate-displayed
tormento
22nd January 2018, 17:08
If anything mkvinfo could help.
But of course you need to know what to look for. Better if you just upload samples, command lines and logs if you suspect mkvtoolnix is doing something wrong. Then we can analyze.
About fps also read:
https://gitlab.com/mbunkus/mkvtoolnix/wikis/Wrong-frame-rate-displayed
I mean intentionally. For example if you have a 23.976 video and 24 "fps" audio from another language or source.
sneaker_ger
22nd January 2018, 17:15
Changed video fps is not really detectable from the container. Maybe you can find info in the bitstream of original fps (e.g. in H.264 time_scale and num_units_in_ticks - I think MediaInfo even shows this).
Changed audio depends. Sometimes the audio is stretched so that the frames overlap or have gaps. eac3to will detect this if you demux/recode such tracks. If otherwise constant you can compare duration in mkv container with duration of extracted stream.
Very often the mkv container cannot offer you such informations except the duration. Merging video and audio from different sources is more of a trial and error process.
Sm3n
22nd January 2018, 19:52
Hi,
Today I noticed that I'm no longer able to see any tracks in the mkvextractgui except some chapters or attachement:
https://picload.org/view/ddiapgow/attach.jpg.html
https://picload.org/view/ddiapglr/chapt.jpg.html
Any idea what could be the cause or the reason for this sudden change? Can't say when was the last time I used my "working" extractgui and what change I could make since. Program is uptodate.
thx in advance.
sneaker_ger
22nd January 2018, 20:07
MKVToolNix 20.0.0 changed output of mkvinfo (among other things). It was already discussed a few posts earlier and also in other threads.
Try gMKVExtractGUI (https://forum.doom9.org/showthread.php?t=170249). It stuck to the recommendations of the MKVToolNix author and thus didn't break with 20.0.0.
Sm3n
22nd January 2018, 20:58
I have to admit I didn't think to look if it was discussed. Sorry about that. thx so much.
Inviska
22nd January 2018, 22:59
Of course there is: don't use mkvinfo in the first place but "mkvmerge --identification-format json --identify yourfile.mkv
Sorry to keep bothering you, but am I right in saying that command doesn't show if tags and cuesheets are present in the file?
Muxing the same file with and without tags shows the same output, so there's nothing to indicate the presence of the tags, even thought they are definitely there and can be extracted. Likewise with a cuesheet, I can't see anything that indicates its presence, even though it is there and can be extracted.
Mosu
22nd January 2018, 23:06
Track statistics tags are indeed not reported, but if other tags are present, then they are reported.
Cuesheets aren't a concept in Matroska. Instead they're a combination of chapters and tags. Both are reported if they're present.
kuchikirukia
23rd January 2018, 01:36
Ok, if anyone is looking for the missing EVR.DLL, MFPLAT.DLL, MF.DLL, and MFCORE.DLL needed to get mkvtoolnix working, I've uploaded them here: http://s000.tinyupload.com/?file_id=56255835202073920387
So glad I did this. The latest Windows update removed them.
sierramike
24th January 2018, 17:12
Hello,
Don't know if this has already been asked, but I noticed that I cannot use mkvtoolnix gui since version 11 on Windows Server 2012 R2 because of missing evr.dll file.
Is there any workaround for this ?
I'm used to RDP on my VM host running Windows Server 2012 R2 to re-package my videos and I'm stuck with version 10 of mkvtoolnix because of this issue.
Thanks for helping!
Mosu
24th January 2018, 17:16
See this FAQ entry (https://gitlab.com/mbunkus/mkvtoolnix/wikis/DLLs-not-found).
Sakura-chan
26th January 2018, 00:07
Thanks very much for the new version... :thanks:
In some short tests I found no problems with the new mkvextract CLI interface. MKVExtractGUI2 and the latest GUI by GPower2 worked without issues, AVStoDVD and StaxRip also worked so far.
Even my hack for using the software under WinXP still works... :D
Cheers
manolito
I also noticed MKVExtractGUI2 breaking with v20. I wasn't aware of gMKVExtractGUI. It blows the old GUI2 out of the water, it even has batches (jobs). Thx.
Is there any intention of adding mkvextract functionality to MKVToolNix? Not asking when, even if it's in 5 years. Now with gMKVExtractGUI providing batches I really can't think of needing more. Just for having everything in one tool?
clsid
26th January 2018, 00:53
Qt also supports DirectShow. You can choose between MF and DS.
gonca
27th January 2018, 01:34
I'm trying to add
--colour-matrix 0:9 --colour-transfer-characteristics 0:16 --colour-primaries 0:9
to a mkv file
I use the gui and go to Output > Additional Optionsand enter the info
Then I multiplex the file
When I view the output in MediaInfo it doesn't show the colour information
What am I doing wrong?
sneaker_ger
27th January 2018, 01:45
Those aren't global options so they should be entered via the "input" tab. Mark the track and at the bottom of its settings you can find the field for track specific extra options. (Hover the mouse for a tool tip.)
If MediaInfo doesn't show check with the Header Editor. (You can also use the Header Editor to add them to mkv files.)
gonca
27th January 2018, 01:49
Those aren't global options so they should be entered via the "input" tab. Mark the track and at the bottom of its settings you can find the field for track specific extra options. (Hover the mouse for a tool tip.)
If MediaInfo doesn't show check with the Header Editor. (You can also use the Header Editor to add them to mkv files.)
Thanks
I figured it out a couple of minutes ago
Found the miscellaneous entry under Input
Thanks for the help
Inviska
1st February 2018, 03:25
I was testing my software in MacOS when I came across an issue when reading the output from mkvmerge -J and mkvinfo. The issue doesn't occur in Windows or on older MacOS MKVToolNix versions, but starts in MKVToolNix version 14.
I was having some problems with one file on the Mac so I printed the output of mkvmerge -J to a QPlainTextEdit with:
TextExit->insertPlainText(MKVToolNix.readAllStandardOutput());
What I found is that on version 14+ on the Mac some Russian text caused the output to end immediately. Here's the output from mkvmerge -J on MacOS using MKVToolNix v13 (https://www.inviska.com/images/MKVMergeV13.txt), and here's the output using MKVToolNix v14 (https://www.inviska.com/images/MKVMergeV14.txt) and MKVToolNix v20 (https://www.inviska.com/images/MKVMergeV20.txt). Likewise with mkvinfo, here's the output on MacOS using MKVToolNix v13 (https://www.inviska.com/images/MKVInfoV13.txt), and here's the output using MKVToolNix v14 (https://www.inviska.com/images/MKVInfoV14.txt) and MKVToolNix v20 (https://www.inviska.com/images/MKVInfoV20.txt).
When I run mkvmerge and mkvinfo from the terminal the output appears without issues on all Mac versions of MKVToolNix. I'm therefore not sure if it's me being stupid. I'm just confused as to why it works without issues on Windows versions and on MacOS versions up to v13, but not on newer MacOS versions.
Luke M
1st February 2018, 08:24
I'm using mkvtoolnix GUI v20.0.0 (for the first time, so be gentle).
When loading multiple MKVs, it appears to show info for each file seperately...is that right? Should it look the same for each file as when loading only one file? Or is the info from multiple files somehow mushed together?
The reason I ask is because when I load a single file, I see different info (specifically, default track flags) than when I load multiple files. So I'm confused. Don't know whether it's a bug or just something I don't understand.
sneaker_ger
1st February 2018, 13:22
In track field you see the values for "default" and "forced" as they will be in the output file, not necessarily as they are in the input files. If you put multiple files mkvmerge will often just want to make the first track of a type (video, audio, subtitles) the default.
https://gitlab.com/mbunkus/mkvtoolnix/wikis/Default-and-forced-flags-and-default-yes-no-in-the-GUI
Luke M
1st February 2018, 20:03
In track field you see the values for "default" and "forced" as they will be in the output file, not necessarily as they are in the input files. If you put multiple files mkvmerge will often just want to make the first track of a type (video, audio, subtitles) the default.
Thank you. That makes perfect sense.
Mosu
2nd February 2018, 19:23
I was testing my software in MacOS when I came across an issue when reading the output from mkvmerge -J and mkvinfo. The issue doesn't occur in Windows or on older MacOS MKVToolNix versions, but starts in MKVToolNix version 14.
I cannot reproduce that problem here:
https://www.bunkus.org/pics/mtx-20-macos-russian.png
I also do not really support macOS (https://gitlab.com/mbunkus/mkvtoolnix/wikis/Officially-supported-operating-systems-and-versions); therefore that's as far as I'm willing to investigate.
arrgh
3rd February 2018, 19:00
...I'm surprised and confused :
also Version 20 does obviously not support the muxing of avc/ssif packages… on the other hand it supports the “interleaved” tag for 3D…
Mosu
3rd February 2018, 19:09
Well, the latter is simply a flag in the headers. It's trivial to support all values for such a flag. It isn't trivial to add full support for 3D video at the bitstream level.
arrgh
3rd February 2018, 21:35
ok, understood...
…a cautious question : any plans to support this at some point of time?
Mosu
3rd February 2018, 22:06
Yes, for the sake of completeness — but if I'm entirely honest, then that feature probably has the lowest priority of all the things that I still want to implement. Mostly because I have zero interest in 3D myself.
Inviska
6th February 2018, 12:16
I cannot reproduce that problem here:
https://www.bunkus.org/pics/mtx-20-macos-russian.png
Yes, the problem only occurs when mkvmerge -J is run from a QProccess. I've been trying to identify the cause for ten days, but I don't know why it's happening.
I don't suppose you could read the first post here (https://forum.qt.io/topic/87438/problem-processing-output-from-qprocess) and give your opinion on whether you think it is a Qt issue or an MKVToolNix issue?
If you think it's Qt I can file a bug report, but if you think it's MKVToolNix I'll just work around it by sending the output to a file and reading it from that.
Mosu
6th February 2018, 12:41
Yes, the problem only occurs when mkvmerge -J is run from a QProccess. I've been trying to identify the cause for ten days, but I don't know why it's happening.
Try letting mkvmerge redirect its output to a file (mkvmerge --identification-format json --redirect-output whatever.json --identify whatever.mkv) and then read that file. If the file is truncated, then it's likely that environment variables such as LC_ALL, LC_CTYPE, LANG play a part.
Edit: I highly doubt it's a Qt error because MKVToolNix GUI is a Qt program that uses the very same QProcess model for querying mkvmerge's identification output you're trying to implement. In general it definitely works, it just doesn't in your particular program.
Inviska
7th February 2018, 16:46
Try letting mkvmerge redirect its output to a file (mkvmerge --identification-format json --redirect-output whatever.json --identify whatever.mkv) and then read that file. If the file is truncated, then it's likely that environment variables such as LC_ALL, LC_CTYPE, LANG play a part.
Thanks for your input. No problems reading the JSON file, and no problems reading the output if I run "cat output.json" in a QProccess. It's an incredibly strange issue that only occurs on MacOS with MKVToolNix 14+. Oh well, I'll admit defeat and go with a workaround for the Mac version.
Thanks again for your advice.
Perenista
10th February 2018, 15:54
Following what I wrote here:
https://forum.doom9.org/showthread.php?p=1833334#post1833334
I installed ffmpeg and tried this command:
https://imgur.com/a/i5qY6
Is this correct? Either is taking too much time or it's stuck there.
BlockABoots
10th February 2018, 21:02
I have a few episodes in mkv file format that i want to remove the Japanese language audio from but i have noticed if i add the 10 or so files to MKVToolNIX GUI input window it just seems to output 1 large file and not there own separate files, how do i get MKVToolNix to output each files individually?
Mosu
10th February 2018, 21:06
Go to the "Preferences" → "Multiplexer" and set "When dropping files" to "Always ask the user". The drop the files & select the appropriate action from the dialog that'll pop up.
BlockABoots
10th February 2018, 21:24
Go to the "Preferences" → "Multiplexer" and set "When dropping files" to "Always ask the user". The drop the files & select the appropriate action from the dialog that'll pop up.
Thanks, or though im not sure what option i need to select?
Each file lists...
MPEG-4p10/AVC/h.264
AAC ENG
AAC JPN
SubRip/SRT
Is there a way i can select 'AAC JPN' for removal for all the episode files in 1 go or do i have to click on each episode individually and remove the AAC JPN?
Mosu
10th February 2018, 21:33
Well, on the shell (with "bash" or "zsh"; thinks will look differently with "cmd.exe" which I cannot help you with) you could do something like this:
for file in *.mkv ; do
mkvmerge -o "out/$file" -a '!jpn' "$file"
done
If you want to use the GUI, you can use the "enable only certain tracks" feature: in the "preferences" go to "Multiplexer" → "Enabling tracks" and set the controls appropriately.
If you don't get that to work, you can still deselect the Japanese tracks manually.
BlockABoots
10th February 2018, 21:49
If you want to use the GUI, you can use the "enable only certain tracks" feature: in the "preferences" go to "Multiplexer" → "Enabling tracks" and set the controls appropriately.
Yes that worked!, had to tick 'Video' and 'Subtitles' and then add 'English (eng)' to the 'selected' window. Then after that all files i added had the 'ACC JPN' line unticked. Thanks
BlockABoots
10th February 2018, 21:52
Final question, is there a way to get the program to start 'multiplexing' all the files at once rather than having to click on each header tab and then selecting 'multiplexing'?
Mosu
10th February 2018, 21:56
Why don't you have a look in the "Multiplexer" menu?
BlockABoots
10th February 2018, 21:59
And this program doesn't alter the quality of the video at all right?
hubblec4
11th February 2018, 15:42
And this program doesn't alter the quality of the video at all right?
Right. MKV is a container, not a codec.
tormento
12th February 2018, 13:12
Is there a fast and easy way to split a mkv from a wanted position to another wanted position in time?
Mosu
12th February 2018, 13:14
That's called "splitting by parts" in MKVToolNix.
tormento
12th February 2018, 18:27
That's called "splitting by parts" in MKVToolNix.
I saw now and read the popup with description too.
My mind thought it was only to split in two parts.
Thanks.
Inviska
21st February 2018, 18:43
Regarding that problem where the output of mkvmerge -J is truncated after the first Unicode character when running MKVToolNix 14+ from a QProccess on MacOS, it was caused by LANG.
The problem specifically is that on MacOS LANG is not in the list of Qt system environment variables. Running printenv LANG on MacOS returns en_GB.UTF-8, so LANG is set on the system. However, if I print out the list of environment variables returned by the below, LANG isn't present on MacOS, though it is present on Linux.
QProcessEnvironment::systemEnvironment().toStringList().join('\n')
Setting LANG with proccess.setEnvironment(QStringList("LANG=en_GB.UTF-8")) resolves the problem of the output being truncated.
Two questions:
1) A since QProcessEnvironment::systemEnvironment() doesn't report LANG on MacOS there's no way to get the LANG for the system. I was therefore going to set LANG to en_US.UTF-8 on all systems. Would running MKVToolNix in en_US.UTF-8 create any problems on non-English systems?
2) Would you consider it an bug that LANG isn't present in the Qt systemEnvironment() on MacOS? If so I'll file a bug report with Qt.
Mosu
21st February 2018, 19:21
1) A since QProcessEnvironment::systemEnvironment() doesn't report LANG on MacOS there's no way to get the LANG for the system. I was therefore going to set LANG to en_US.UTF-8 on all systems. Would running MKVToolNix in en_US.UTF-8 create any problems on non-English systems?
It shouldn't as I don't think anyone would ever run a mac with a non-UTF-8 locale (such as e.g. ISO-8859-15). Don't know if that is even possible.
As UTF-8 is Unicode, output should work regardless of system language and content.
2) Would you consider it an bug that LANG isn't present in the Qt systemEnvironment() on MacOS? If so I'll file a bug report with Qt.
I really couldn't say.
Ripman
23rd February 2018, 00:33
Thanks for the new version 19 & 20.
Based on your release announcements, we knew that certain options and features would be retired (e.g., text options files, -I).
So I was playing around and using the new -i. If I also use a -v for verbosity — it doesn’t seem to have an effect.
Is there a valid use case for making -i -v kind of like the old -I. I can’t say I ever used the extra info from the old -I (e..g., private codec data).
If that’s something you want to do one day, say as much and I’ll write it up.
Mosu
23rd February 2018, 07:13
No. The old verbose identification format is gone for good. Use the JSON identification format instead. It contains all the information the verbose format did in a standardized format.
Mosu
24th February 2018, 11:22
Hey everyone.
It's time for MKVToolNix v21.0.0. The biggest change is that mkvinfo's GUI portion has been removed. Its functionality is now incorporated into MKVToolNix GUI. I am aware that the functionatliy isn't on par yet, but it will be in time for release v22.0.0.
Here are the usual links: the MKVToolNix home page (https://mkvtoolnix.download/), the Windows installer/portable version & macOS DMG (https://www.fosshub.com/MKVToolNix.html) and the source code (https://mkvtoolnix.download/source.html).
The Windows and macOS binaries are available already. The Linux binaries are still being built and will be available of the course of the next couple of hours.
Here are the NEWS (https://mkvtoolnix.download/doc/NEWS.md) since the previous release:
# Version 21.0.0 "Tardigrades Will Inherit The Earth" 2018-02-24
## New features and enhancements
* mkvmerge: track statistics tags: the `TagDefault` element will not be written anymore as it was always set to the default value `1` anyway. Implements #2202 (https://github.com/mbunkus/mkvtoolnix/issues/2202).
* mkvmerge, MKVToolNix GUI: JSON files can now contain C++-style line comments outside of strings (e.g. something like this: `// this is ignored`). Such comments, even though not part of the official JSON specifications, are now ignored when reading JSON files.
* MKVToolNix GUI: chapter editor: opening a Matroska file without chapters in it will now open the file in an empty chapter editor instead of showing an error message. Implements #2218 (https://github.com/mbunkus/mkvtoolnix/issues/2218).
* MKVToolNix GUI: an "info" tool has been added, replacing the functionality of mkvinfo's GUI. The functionality is not on par yet but will be for release v22. Implements most of the functionality of #2104 (https://github.com/mbunkus/mkvtoolnix/issues/2104).
## Bug fixes
* build system: `configure` was treating `--disable-ubsan` and `--disable-addrsan` the same as `--enable-ubsan` and `--enable-addrsan`. Fixes #2199 (https://github.com/mbunkus/mkvtoolnix/issues/2199).
* build system: an error message is output if a command to execute is not found instead of silently failing.
* build system: in addition to looking for the `gettext` C function and library, `configure` now also verifies the presence of the `msgfmt` program instead of simply relying on it.
* mkvmerge: appending files with additional parts at the same time was broken if more than one additional part was appended (e.g. when appending files from DVDs with something like `'(' VTS_01_1.VOB VTS_01_2.VOB ')' + '(' VTS_02_1.VOB VTS_02_2.VOB ')'`). In such a situation the content from files `VTS_02_1.VOB` and `VTS_02_2.VOB` where laid out in parallel to the content from the earlier files.
* mkvmerge: FLV reader: a single invalid AAC frame was written for AAC audio tracks with codec initialization data longer than five bytes.
* mkvmerge: FLV reader: timestamps will be normalized down to 0. Fixes #2220 (https://github.com/mbunkus/mkvtoolnix/issues/2220).
* mkvmerge: MP4 reader: if an AAC track doesn't contain an AAC-specific decoder configuration in the ESDS portion, then a default decoder configuration will be generated based on the track's header data instead of skipping the track. Fixes #2221 (https://github.com/mbunkus/mkvtoolnix/issues/2221).
* mkvmerge: MP4 reader: fixed reading HEVC/h.265 video tracks if they're stored as Annex B byte streams inside MP4. Fixes #2215 (https://github.com/mbunkus/mkvtoolnix/issues/2215).
* mkvmerge: Ogg Opus reader: mkvmerge will now emit a warning instead of aborting when it encounters an Ogg Opus page with no data in the packet. Fixes #2217 (https://github.com/mbunkus/mkvtoolnix/issues/2217).
* mkvmerge, mkvextract: Matroska parser: fixed a segmentation fault that occurred whenever the first level 1 element after resyncing after an error in the file structure isn't a cluster. Fixes #2211 (https://github.com/mbunkus/mkvtoolnix/issues/2211).
* mkvmerge, MKVToolNix GUI multiplexer & header editor: fixed a crash during file type detection for attachments if MKVToolNix is installed in a path with non-ASCII characters (e.g. German Umlauts). Fixes #2212 (https://github.com/mbunkus/mkvtoolnix/issues/2212).
* mkvinfo: the `--hex-positions` parameter did nothing in summary mode.
* mkvinfo: Windows: line endings will be written as `\r\n` (carriage return & line feed) again instead of just `\n` (line feed).
* mkvpropedit: adding track statistics tags: for tracks with content encoding (compression) mkvpropedit is now accounting the uncompressed number of bytes, not the encoded (compressed) number of bytes. Fixes #2200 (https://github.com/mbunkus/mkvtoolnix/issues/2200).
* MKVToolNix GUI: multiplexer: the subtitle character set can now be set for appended subtitle files, too. Fixes #2214 (https://github.com/mbunkus/mkvtoolnix/issues/2214).
* MKVToolNix GUI: multiplexer: when appending, all tracks appended to disabled tracks will start out disabled, too.
## Build system changes
* mkvinfo: the GUI portion has been removed. mkvinfo is now a pure command-line program again.
Have fun :)
sneaker_ger
24th February 2018, 12:28
Thx.
When flagging H.264 frames from mp4 as discardable is mkvmerge using mp4 container info (is there such info?) or is it parsing the H.264 bitstream? Because I see different results as when reading H.264 ES.
vBulletin® v3.8.11, Copyright ©2000-2026, vBulletin Solutions Inc.