(Note: simply copied from www.matroska.org.)
Matroska aims to become THE Standard of Multimedia Container Formats. It was derived from a project called MCF, but differentiates from it significantly because it is based on EBML (Extensible Binary Meta Language), a binary derivative of XML. EBML enables the Matroska Development Team to gain significant advantages in terms of future format extensibility, without breaking file support in old parsers.
If you need any more info please head over to Matroska's homepage.
mkvmerge and mkvmerge GUI (or just mmg) are two programs created by Moritz Bunkus. They're part of the mkvtoolnix package. mkvmerge can read a lot of different multimedia files and put their contents into Matroska files. Unfortunately this is a command line program, and not everyone is comfortable working on the command line. This is where mkvmerge GUI comes into play. It is a GUI that provides the user with an intuitive but powerful interface to mkvmerge.
Both programs are available for both Windows and GNU/Linux and other Unix derivatives. The program is licensed under the GPL, so the source code is available to anyone interested.
You can always find the latest version of mkvtoolnix on Moritz Bunkus' website. Windows users will have to download the runtime DLLs as well as the mkvtoolnix binaries. Linux/Unix users will probably download the sources and compile mkvtoolnix themselves.
This guide only focusses on the GUI part of these tools. All command line options are explained in detail in mkvmerge's man page/HTML page.
(Note: This section does not cover compilation and
installation. mkvmerge's own documentation and the
README
files that are included in the
mkvtoolnix package.)
The only thing that mmg needs to know is the location of the mkvmerge binary. Under normal circumstances it will be found automatically. But if not then you can select the binary to use on the Settings tab. |
Use this button to select the path to the mkvmerge program. |
mkvmerge strictly differentiates between files and tracks. An input file usually contains one or more tracks. mkvmerge needs at least one input file and the file name of the Matroska file it should create before it can do any work. Starting with this minimal set of options the user can add more input files, select advanced options for each track, apply some more global options etc.
The typical basic steps are:
When mmg starts up it shows the first and probably most important tab: the input tab. Here you see four different elements. The topmost input box lists all input files. Directly under this box are options that apply to the currently selected input file. The two buttons to the right of the upper list box can be used to add files to the list box with the + button and to remove the selected entry with the - button. |
Use these buttons to add and remove files. |
|
Once the user selects an input file in the upper list box the second list box will contains all tracks that can be read from this file. Each track is ENabled by default and will be muxed into the resulting file. However, you can change that by simply clicking on the check box right in front of the track's name in the second list box. For each of these tracks the user can select track specific options with the input boxes and check boxes below the track listing. These options will be described in the following sections. |
Three enabled tracks and one disabled track. The fourth track will not be copied into the output file. |
Once the user has added and selected an input file he can set
options that apply to this specific file. At the moment three such
options have been implemented, and they all are only available for
Matroska files: No chapters
, No
attachments
and No tags
. These options tell
mkvmerge not to copy any chapters / attachments / tags from
the current source file.
Note: At the time of writing mkvmerge cannot copy tags
from a source Matroska file. You have to extract them with
mkvextract first.
More information about chapters can be found in the section about the chapter editor in this document and in mkvmerge's own documentation.
Depending on the type of the currently selected track (audio, video, subtitles) and even depending on the contents of the track only a subset of all the track specific options are available. The options are:
|
|
Matroska files can also contain other files, called attachments. This works basically just like with your favourite email program. The idea is to provide additional information about the file. Some examples could be cover photos for a CD rip, additional background information in text form about the movie or even some compressed fonts for the subtitles. Every attachment needs two things: the file name (obviously) and the MIME type that should be associated with the file. The usage is very easy and similar to adding files on the input tab. On the second tab of the GUI, the attachment tab, you can add a file with the + button and remove the selected attachment with the - button. Once an attachment has been selected the other controls on this tab will be available. You do have to select a MIME type for each attachment, but the description is optional - although it is a good idea to always provide a description. This makes it easier for others to identify what you've attached to this Matroska file. The last option, |
|
The third tab, Global, is packed full of options that apply to the complete file and not just to one or more tracks.
3.5.1. File/segment title
|
|
|
3.5.2. Automatic splitting and file linkingThe
Matroska supports file linking which simply says that a specific file is the predecessor or successor of the current file. To be precise, it's not really the files that are linked but the Matroska segments. As most files will probably only contain one Matroska segment I simply say 'file linking' although 'segment linking' would be more appropriate. Each segment is identified by a unique 128 bit wide segment UID. This UID is automatically generated by mkvmerge. The linking is done primarily via putting the segment UIDs of the previous/next file into the segment header information. mkvinfo prints these UIDs if it finds them. If a file is split into several smaller ones and linking is
used then the time codes will not start at 0 again but will
continue where the last file has left off. This way the
absolute time is kept even if the previous files are not
available (e.g. when streaming). If no linking is used then
the time codes should start at 0 for each file. By default
mkvmerge uses file linking. If you don't want that you
can turn it off by enabling this 3.5.3. Manual file/segment linkingRegardless of whether splitting is active or not the user can tell
mkvmerge to link the produced files to specific
UIDs. This is done by entering a valid segment UID into the
two input boxes, If splitting is used then the first file is linked to the UID
given in the 3.5.4. ChaptersWith the browse button you can select the chapters to add to the output file. A full explanation of all aspects around chapters can be found in the Chapter editor section. 3.5.5. Global tagsUnlike the tags you can select for each track on the input tab the tags selected here have to contain the track UIDs. These tags are not assigned to any track automatically. In 99% of all cases this is NOT the option you want to use! The full explanation can be found in mkvmerge's documentation. |
|
Once everything has been set up the muxing process can be
started. The last thing to do is to chose where to mux
to. With the If everything has been set up correctly mmg will show the muxing dialog. The progress is shown at the top, as is a general description of what mkvmerge is doing at the moment (muxing, 1st pass of splitting files or 2nd pass of splitting files). mkvmerge knows three different 'severity levels' for its messages: status reports, warnings and errors. All status report messages are shown in the upper window. These include the track types encountered and other interesting things. Warnings are shown in the middle window. mkvmerge will not abort when it issues a warning, but it might stop muxing the track for which the warning was printed. You should pay close attention to all warning messages. Errors are show in the lower window. Errors are always fatal, and mkvmerge will stop muxing right after it has printed the error message. Such a message might be that the hard disc is full or that the source file is damaged and cannot be processed any further. The button |
|
All your hard work of setting options does not have to be lost when
you exit the program. You can save all your muxing settings into
text based configuration files with the Save settings
option in the File
menu and restore them later with the
Load settings
option. The default extension is
.mmg
and is usually not used by other programs. You can
also associate this extension with mmg so that it
automatically loads the settings if it is called with the name of
such a settings file.
One of the new features of mmg is a full-featured chapter editor. It can read text based chapter files, import chapters from existing Matroska files, write text based chapter files that can be selected on the global tab and write chapters directly to existing Matroska files.
Unlike a lot of other systems Matroska supports nested chapters. This basically means that you can define sub chapters for chapters.
A chapter entity in Matroska consists of at least four items: The UID of the track(s) it applies to, the chapter title/name, it's start time and the language code associated with it. Additional elements are optional and include the end time, more language codes and country codes. Usually the user will only need the mandatory elements. Of these he can only specify the name, the start time and the language code. mkvmerge will then automatically assign all chapters to the complete file.
The first example is a simple one. The movie in question contains four parts: The intro starting at the beginning, the first act, the second act, and the credits. Note that the end timestamps are optional.
Intro (from 00:00:00, language English)
Act 1 (from 00:01:00, language English)
Act 2 (from 00:05:30, language English)
Credits (from 00:12:20 until 00;12:55, language
English)
A more complex example including sub chapters. Let's take Ludwig van Beethoven's opera Fidelio. For the sake of brevity I'm only including the first three pieces of the two acts.
The first act contains:
The first act, which will be our first chapter, has a combined length of 11:20. Our second act has a length of 17:06. These chapters would look like this:
Erster Akt (from 00:00:00 until 00:11:20, language German,
country Germany)
Ouvertüre (from 00:00:00 until 00:06:24, language German,
country Germany)
Arie: 'Jetzt, Schätzchen, jetzt sind wir allein' (from
00:06:24 until 00:11:10, language German, country Germany)
Dialog: 'Armer Jaquino' (from 00:11:10 until 00:11:20, language
German, country Germany)
Zweiter Akt (from 00:11:20 until 00:28:26, language German,
country Germany)
Ouvertüre und Arie: 'Gott! welch Dunkel hier!' (from 00:11:20
until 00:22:06, language German, country Germany)
Melodrama und Duett: 'Wie kalt ist es' (from 00:22:06 until
00:27:27, language German, country Germany)
Dialog: 'Er erwacht!' (from 00:27:27 until 00:28:26, language
German, country Germany)
mkvmerge and mmg's chapter editor both support different formats for chapter files.
One of the most basic formats is the format used in OGM files. It is a text based format. Each chapter entry contains of two lines, the first containing the start time, the second the chapter's title/name. All lines are numbered.
The first example from above can be expressed in this format:
CHAPTER01=00:00:00.000
CHAPTER01NAME=Intro
CHAPTER02=00:01:00.000
CHAPTER02NAME=Act 1
CHAPTER03=00:05:30.000
CHAPTER03NAME=Act 2
CHAPTER04=00:12:20.000
CHAPTER04NAME=Credits
The second example cannot be expressed in this format because it supports neither language specifications nor end times or nested chapters. The advantage is that such files are very easy to create, and there are several tools available for both Windows and Unix/Linux that create such files directly from DVDs.
Due to its limitations mmg cannot output chapters in this format.
I've created a XML based chapter format that closely matches the system Matroska uses. With this format you have the full control over all features. I won't describe this format here in detail. Please have a look at the example XML chapter files that came with mkvtoolnix.
The chapter editor can read chapters directly from Matroska files. These can be written to XML chapter files or back to the same Matroska file or another Matroska file. All features are supported.
The chapter editor consists of three parts: the tree view of all chapters, the four buttons used for adding and removing chapter entries, and the input boxes which are used for setting the chapter entry's data. In Matroska files one chapter is defined by having a start time, a name and a language that is associated with that name. You can have several names for one chapter and each associated with a different language. You may also add an end time, but that is not mandatory. A new chapter file is started with the The After selecting a chapter entry you can change its data. The
format for the start and end time are either
Creating many chapters and always changing the language can
be quite some work. Therefore you can select which language
and country tags mmg should add by default with the
Saving chapters to XML files can be done with |
|
You can load existing chapter files or chapters from Matroska files
by selecting the Load
option from the Chapter
editor
menu. mmg will automatically detect the file
type used and read the chapters.