Welcome to Doom9's Forum, THE in-place to be for everyone interested in DVD conversion.

Before you start posting please read the forum rules. By posting to this forum you agree to abide by the rules.


Go Back   Doom9's Forum > Capturing and Editing Video > New and alternative a/v containers

Thread Tools Search this Thread Display Modes
Prev Previous Post   Next Post Next
Old 16th February 2014, 21:20   #1  |  Link
gMKVExtractGUI author
gpower2's Avatar
Join Date: Aug 2003
Location: Greece / Thessaloniki
Posts: 251
gMKVExtractGUI v2.6.4

As a personal bet, I developed a small GUI utility to use mkvinfo and mkvextract cli tools from MKVToolnix pack, in order to extract tracks, chapters and CUE sheets from mkv files.

Though there are already other GUI utilities, I found them rather slow (original MkvExtract GUI), or inefficient (MkvExtractGUI-2 does not extract attachment tracks correctly).

So, gMKVExtractGUI was born, written in pure C# .NET v2 (.NET v4 since v1.9.0) and it works!

Current version is v2.6.4 and you can always find the latest executable file here:


Other download locations:

Buy me a beer

From v1.6.4 Linux is fully supported through MONO framework.
For use with MKVToolNix v9.0.0 and later, v1.7.0 or newer is required.
From MKVToolNix v9.6.0 and later, the JSON output from mkvmerge is used, so Newtonsoft.Json.dll is required (bundled).
From v1.9.0 .NET Framework v4 is required.
Batch support is supported from v2.0.0.

Key features:
  • Use almost 100% of mkvextract functionality (supports extraction of tracks, attachments, chapters in XML, OGM and CUE, timecodes, tags and CUE sheet)
  • Use mkvinfo to analyse mkv elements really really fast
  • Automatically detects MKVToolnix installation directory from registry
  • It doesn't require the executable to be placed inside MKVToolnix directory, but it still checks for it if registry search fails
  • Uses file extensions for tracks according to CODEC_ID as defined in official mkvextract documentation
  • Uses separate thread for invoking mkvextract in order to have a responsive GUI
  • It incorporates a job mode for batch extracting (new in v1.6)
  • Supports Linux through MONO (new in v1.6.4)
  • Supports all MKVToolnix versions from v4.x and newer
  • Supports batch extraction of multiple files (new in v2.0.0)
  • Supports custom output filename patterns (new in v2.5.0)


  • Minor code optimizations
  • Add final Trim when generating the output filename (thanks tormento!)

  • Fix calculating delays from mkvinfo. (Thanks kedautinh12!)

  • Fix attachment filename for all cases. (Thanks mastrboy!)
  • Improve track selection when filter value is an empty string
  • Optimize algo to avoid unnecessary comparisons

  • Replace invalid file characters with underscore character ('_') from output filename

  • Add support for new element "Language IETF"
  • Minor code optimizations/modernization

  • Fix issue in checking for an existing job when adding a new job

  • Fix finding delays with newer mkvinfo versions
  • Optimize finding delays with mkvinfo by searching only for tracks that couldn't find delays with mkvmerge

  • Ask the user to create the output directory if it doesn't exist
  • Various improvements on Form Controls
  • Added new "Options" form to support custom output filename patterns
  • Check if a file with the same filename already exists before extracting and add a counter to the output filename to avoid overwritting the original file

  • Stop trying to find delays in matroska files that don't contain any video tracks

  • Fix attachment extraction

  • Enclose language in [] characters in the output filename for tracks, in order for MKVToolNix GUI to be able to derive it
  • Quote output filename in chapters, tags and cuesheet when using the new MKVToolNix cli
  • Fix the necessary input fields check when extracting tags and cuesheet
  • Refactor output filename calculation

  • Add new setting for default output directory
  • Switch to "timestamps_v2" instead of "timecodes_v2" for MKVToolNix v17+
  • Add support for the new mkvextract syntax for MKVToolNix v17+
  • Add a new commandline argument --mkvtoolnix="..." to specify a manual path for MKVToolNix

  • Change the output directory behavior
  • Add custom DPI scaling code and enable it on all forms
  • Add new manifest Property "dpiAwareness" for newest Windows Versions (Windows 10 v1607+)
  • Added new Audio Codec_ID A_EAC3 and A_MLP
  • Added some missing video and subtitle codec_id
  • Remove unnecessary separator in context menu
  • Increase the width of the percentage labels in Main form
  • Decrease the height of the buttons in Log Form

  • Fix Linux issues
  • Fix adding files from command line
  • Add support for passing directories from command line
  • Make right click to change selection in the TreeView

  • New form that supports batch extracting!
  • Fix bug when removing multiple jobs from Job Manager
  • Add the filename in the track progress report label in the Job Manager
  • Add new properties in the gMKVSegmentInfo class

  • Add more Log messages
  • Add more functionality to the Log Form
  • Fix some cases where settings were getting overriden during start up (thanks Bal65, RyFeR26!)
  • Switch to using --gui-mode for mkvextract versions v9.7.0 and newer, while keeping existing functionality for backwards compatibility
  • Hopefully solve all remaining issues with locale on Linux (thanks djcj!)

  • Implement new method to read standard output character by character (fixes Linux parsing)
  • Replace hard-coded newline characters with Environment.NewLine
  • Improve parsing of mkvinfo output
  • Add exceptions to the log
  • Change version identification in Linux
  • Add more sanity checks
  • Fix copy-paste bugs in Settings
  • Add more log messages in Settings
  • Simplify version checking for Linux and OSX for mkvinfo and mkvmerge
  • Fix small cosmetic bug for Linux in main Form
  • Add LICENSE.md for NewtonSoft
  • Add log for detecting versions
  • When on Linux, check for mkvmerge in /usr/bin first

  • Switch to .NET v4
  • Add new JSON parser for reading the JSON identification info from mkvmerge (Based on NewtonSoft JSON.NET, Newtonsoft.Json.dll)
  • Fix issues with Linux case sensitivity (hopefully!) (thanks djcj!)
  • Fix locale issues with Linux (hopefully!) (thanks djcj and Mosu!)
  • Make application dpi aware (thanks stax76!)
  • Fix initial size when there is no ini file (thanks bin_ch!)
  • Fix bug when in job mode and popup checkbox is unchecked and adding a job results in status label showing "Extraction completed!" (thanks bin_ch!)
  • Switch to using SaveFileDialog and OpenFileDialog instead of FolderBrowserDialog (thanks arestarh!)
  • Fix rare case where Track properties in mkvmerge verbose identification occupy more than one line
  • Change namespace from gMKVToolnix to gMKVToolNix

  • Change minimum size in main form
  • Play Windows Asterisk sound when success popup does not show
  • Make mkvinfo's output parsing more robust
  • Add parsing of mkvmerge's new output data (thanks Mosu!!!)
  • Add as many fallback mechanisms as possible, in order to maintain compatibility with older versions
  • Clear input file textBox in main form, when MKVToolNix path is changed
  • Clear status and progress bar in main form, when an error has occured during extraction and no popup was selected
  • Add new setting for showing popup message in success in job manager
  • Fix some UI issues in Job Manager form
  • Add a workaround for buggy output from mkvmerge in older versions (v4.0)
  • Changed the main form's minimum size to 400x400
  • Added horizontal scroll bar to mkv track list
  • Add job counter in the text of the jobs groupbox
  • Make Jobs Grid Columns Autofill

  • Add support for the new --no-gui parameter of mkvinfo for MKVToolNix v9.0.0 and newer, without breaking compatibility with older MKVToolnix versions
  • Add option to not show the success popup messagebox
  • Add setting for showing or not the success popup messagebox

  • Fix minutes in Cue Sheet Chapter Format (thanks bin_ch)
  • Add support for older mkvtoolnix versions (v4.x)

  • Fix parsing the number of chapter entries in case there is only one chapter entry (thanks johnsonlam, rock)
  • Change gMKVToolnix to gMKVToolNix
  • Add new extraction mode "cues" (thanks bin_ch)
  • Add new Chapter Type "CUE" which transforms XML chapters to Cue Sheet (thanks isidroco)

  • Add support for Linux (thanks djcj)
  • Add a start up check to ensure that gMKVToolnix.dll is present in the same directory as gMKVExtractGUI.exe
  • Fix progress labels position in JobManager form (thanks kypec)
  • Add check on closing in order to ensure that an extraction process does not get interrupted unintentionally (thanks magsood)
  • Fix Job Manager form Minimum Size
  • Add context menu to Job Manager Form in order to easily reset job states

  • Fix finding mkvtoolnix path for mkvtoolnix v8.4 (while keeping compatibility with older versions)
  • Add hevc extension

  • Fix the wrong setting of the initial form position in the ini file when the form is minimized
  • Fix typo bug (UFT-8 instead of UTF-8) (thanks bin_ch!)
  • Add WindowState setting
  • Make Form remember the last window state
  • Add a fallback mechanism, in order to use the UserAppData folder for storing the app settings when the current user doesn't have read/write permissions to the app path

  • Changed Log Form to refresh the log text when Activated and not when Shown (thanks kongfl888!)
  • Fix adding Jobs to the Job Manager after loading jobs from XML (thanks kongfl888)
  • Added CodecPrivate property to gMKVTrack class (thanks dade49)
  • Removed PostProcessing of segment lists to gMKVHelper class
  • Changed ExitCode check, in order to avoid error messages when only warnings are present in the output
  • Remove UTF-8 parameter from mkvinfo

  • Add job manager feature
  • Add Job Mode to the settings
  • Changed AutoScaleMode to DPI, hoping it will fix issues with people using larger font schemes
  • Add gRichTextBox and switch single line text boxes to gTextBox in main form
  • Some tweaking to Log form
  • Make main form to show the jobs manager when in job mode from Log button

  • Add gTaskbarProgress class to wrap the ITaskbarList3 interface in order to take advantage of Windows Vista+ taskbar features
  • Fix TrueHD Audio file extension (thanks Giwyy)
  • Move classes to respective folders
  • Significantly decrease control flickering
  • Change taskbar mode while reading file contents
  • Changed frmLog to gForm class
  • Comment out a Debug.WriteLine statement in gCheckedListBox

  • Enforce english ui language when executing mkvextract
  • Always make sure that progress bar is set to 100% before showing the completion success message

  • Fixed setting the window's initial position to negative coordinates
  • Added the window's size to settings
  • Removed the help tooltip

  • Fix parsing for Attachment Filenames for newer mkvmerge versions (ignore uid tag)
  • Added tooltip information about the track list
  • Added functionality to remember window position

  • Increase the drag and drop area for the input file to the group box of input file info
  • Add a context menu for easy selection of tracks

  • Hopefully fix Abort button from being drawn out of line in some OS (Windows XP ?)
  • Fix some visual issues
  • Added Output Directory and Lock Output Directory to the Settings
  • Replace escape characters in mkvmerge
  • Changed extraction mode to support grouping of similar tasks into one process call
  • Added support of finding the delays in video and audio tracks
  • Now extracted audio tracks have the relative to the video delay
  • Add an extra check when selecting timecodes extraction mode
  • Made a few more performance improvements

  • Added abort button. Works per track extraction.
  • Added Abort All button, to abort all the extraction processes at once.
  • Refactored ini file and settings in general. Now the chapter type is also included in settings.
  • If MKVToolnix path is already set, ask the user before changing it.
  • Added validity check for when setting MKVToolnix path.
  • Added lock output directory feature. If locked, ouput directory doesn't change.
  • Changed extension of OGM chapters from ".ogm" to ".ogm.txt".
  • Make exception messages from mkvextract more sane.
  • Added check for mkvextract.exe, mkvinfo.exe and mkvmerge.exe existance just before invoking them.
  • Detect the audio delay via the track's timecodes and add it to the output filename.
  • Set the Browse... buttons to show the folder that is already specified by the user.
  • Check for a valid directory when drag and dropping in the output directory textbox.
  • Added timecodes extraction mode.
  • Changed the Status Strip Layout.
  • Changed the Extract Buttons to one Extract Button and a Combo Box.

  • Fix loading of ini file
  • Don't keep the input file in the input textbox, if it is invalid
  • Add checks for user input when selecting an action

  • Use a simple ini file to store the last used MkvToolnix path
  • Enable command line arguments in order to allow users to open files with gMKVExtractGUI
  • Change the tags output filename to "filename_tags.xml"
  • Use the --identify-verbose option of mkvmerge for checking the track contents of the matroska files, instead of mkvinfo
  • Removed --gui-mode parameter to mkvinfo since it broke compatibility with older versions of MkvToolnix
  • Changed the extension filter of the open file dialog to provide with an option that contains all valid extensions of matroska files

  • Make XML chapters to be written in UTF-8 without BOM
  • Added more allowed extensions (.mka, .mks, .mk3d, .webm) (thanks sneaker_ger)
  • Added --ui-language parameter to mkvinfo with 'en' value to avoid translations
  • Added --gui-mode parameter to mkvinfo in order to double check that all output text will be in english
  • Added --command-line-charset parameter to mkvinfo with value "UTF-8"
  • Added --output-charset parameter to mkvinfo with value "UTF-8"
  • Added new Log form, which show the Log of the application
  • Added new 'Show Log' button in main form which shows the Log form

Hope you enjoy this little utility and feedback is always appreciated!

Last edited by tebasuna51; 2nd February 2023 at 10:50.
gpower2 is offline   Reply With Quote

extractor, gmkvextractgui, matroska, mkv, mkv extract, mkvextract, mkvextractgui

Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump

All times are GMT +1. The time now is 10:59.

Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2024, vBulletin Solutions Inc.