2015-11-04 19:04:10 +00:00
|
|
|
|
MKVToolNix 8.5.2
|
2003-04-30 11:29:10 +00:00
|
|
|
|
================
|
2003-03-04 19:09:59 +00:00
|
|
|
|
|
2015-03-27 21:02:37 +00:00
|
|
|
|
# Table of contents
|
2010-04-14 08:06:25 +00:00
|
|
|
|
|
|
|
|
|
1. Introduction
|
|
|
|
|
2. Installation
|
2014-08-21 01:11:10 +00:00
|
|
|
|
1. Requirements
|
|
|
|
|
2. Optional components
|
2015-03-27 21:02:37 +00:00
|
|
|
|
3. Building libEBML and libMatroska
|
2014-08-21 01:11:10 +00:00
|
|
|
|
4. Building MKVtoolNix
|
|
|
|
|
5. Notes for compilation on (Open)Solaris
|
|
|
|
|
6. Unit tests
|
2015-03-27 21:02:37 +00:00
|
|
|
|
3. Reporting bugs
|
2015-11-11 14:35:18 +00:00
|
|
|
|
4. Included libraries and their licenses
|
|
|
|
|
1. avilib
|
|
|
|
|
2. Boost's utf8_codecvt_facet
|
|
|
|
|
3. libEBML
|
|
|
|
|
4. libMatroska
|
|
|
|
|
5. librmff
|
|
|
|
|
6. nlohmann's JSON
|
|
|
|
|
7. pugixml
|
|
|
|
|
8. utf8-cpp
|
2010-04-14 08:06:25 +00:00
|
|
|
|
|
2015-03-27 21:02:37 +00:00
|
|
|
|
-----------------
|
2010-04-14 08:06:25 +00:00
|
|
|
|
|
2015-03-27 21:02:37 +00:00
|
|
|
|
# 1. Introduction
|
2010-04-14 08:06:25 +00:00
|
|
|
|
|
2003-09-11 17:09:10 +00:00
|
|
|
|
With these tools one can get information about (mkvinfo) Matroska
|
|
|
|
|
files, extract tracks/data from (mkvextract) Matroska files and create
|
|
|
|
|
(mkvmerge) Matroska files from other media files. Matroska is a new
|
|
|
|
|
multimedia file format aiming to become THE new container format for
|
|
|
|
|
the future. You can find more information about it and its underlying
|
|
|
|
|
technology, the Extensible Binary Meta Language (EBML), at
|
2003-03-04 19:09:59 +00:00
|
|
|
|
|
|
|
|
|
http://www.matroska.org/
|
|
|
|
|
|
|
|
|
|
The full documentation for each command is now maintained in its
|
2014-08-21 01:11:10 +00:00
|
|
|
|
man page only. Type `mkvmerge -h` to get you started.
|
2003-03-04 19:09:59 +00:00
|
|
|
|
|
2014-11-15 16:01:58 +00:00
|
|
|
|
This code comes under the GPL v2 (see www.gnu.org or the file COPYING).
|
2003-03-04 19:09:59 +00:00
|
|
|
|
Modify as needed.
|
|
|
|
|
|
2012-03-15 21:36:05 +00:00
|
|
|
|
The icons are based on the work of Alexandr Grigorcea and modified by
|
2015-03-27 21:02:37 +00:00
|
|
|
|
Eduard Geier. They're licensed under the terms of the
|
|
|
|
|
[Creative Commons Attribution 3.0 Unported license](http://creativecommons.org/licenses/by/3.0/).
|
2011-12-04 15:44:16 +00:00
|
|
|
|
|
2003-03-04 19:09:59 +00:00
|
|
|
|
The newest version can always be found at
|
2015-02-11 17:35:42 +00:00
|
|
|
|
https://www.bunkus.org/videotools/mkvtoolnix/
|
2003-03-04 19:09:59 +00:00
|
|
|
|
|
|
|
|
|
Moritz Bunkus <moritz@bunkus.org>
|
|
|
|
|
|
2010-04-14 08:06:25 +00:00
|
|
|
|
|
2015-03-27 21:02:37 +00:00
|
|
|
|
# 2. Installation
|
2003-04-11 13:42:27 +00:00
|
|
|
|
|
2005-08-25 08:05:07 +00:00
|
|
|
|
If you want to compile the tools yourself then you must first decide
|
|
|
|
|
if you want to use a 'proper' release version or the current
|
|
|
|
|
development version. As both Matroska and MKVToolNix are under heavy
|
2014-09-01 12:55:53 +00:00
|
|
|
|
development there might be features available in the git repository
|
|
|
|
|
that are not available in the releases. On the other hand the git
|
|
|
|
|
repository version might not even compile.
|
2005-08-25 08:05:07 +00:00
|
|
|
|
|
2015-03-27 21:02:37 +00:00
|
|
|
|
## 2.1. Requirements
|
2005-08-25 08:05:07 +00:00
|
|
|
|
|
|
|
|
|
In order to compile MKVToolNix you need a couple of libraries. Most of
|
|
|
|
|
them should be available pre-compiled for your distribution. The
|
2011-10-23 19:06:28 +00:00
|
|
|
|
programs and libraries you absolutely need are:
|
|
|
|
|
|
|
|
|
|
- A C++ compiler that supports several features of the C++11 standard:
|
2015-10-15 12:40:45 +00:00
|
|
|
|
initializer lists, range-based "for" loops, right angle brackets,
|
|
|
|
|
the "auto" keyword, lambda functions, the "nullptr" key word, tuples
|
2015-03-27 21:02:37 +00:00
|
|
|
|
and alias declarations. For GCC this means at least v4.7.0; for
|
|
|
|
|
clang v3.3 or later.
|
2005-08-25 08:05:07 +00:00
|
|
|
|
|
2015-10-20 13:35:38 +00:00
|
|
|
|
- [libEBML v1.3.3](http://dl.matroska.org/downloads/libebml/) or later
|
|
|
|
|
and [libMatroska v1.4.4](http://dl.matroska.org/downloads/libmatroska/)
|
2015-03-27 21:02:37 +00:00
|
|
|
|
or later for low-level access to Matroska files. Instructions on how to
|
|
|
|
|
compile them are a bit further down in this file.
|
2011-10-23 19:06:28 +00:00
|
|
|
|
|
2015-03-27 14:37:19 +00:00
|
|
|
|
- [libOgg](http://downloads.xiph.org/releases/ogg/) and
|
|
|
|
|
[libVorbis](http://downloads.xiph.org/releases/vorbis/) for access to Ogg/OGM
|
2005-08-25 08:05:07 +00:00
|
|
|
|
files and Vorbis support
|
2011-10-23 19:06:28 +00:00
|
|
|
|
|
2015-03-27 14:37:19 +00:00
|
|
|
|
- [zlib](http://www.zlib.net/) -- a compression library
|
2011-10-23 19:06:28 +00:00
|
|
|
|
|
2015-03-27 14:37:19 +00:00
|
|
|
|
- [Boost](http://www.boost.org/) -- Several of Boost's libraries are
|
2015-03-28 14:43:14 +00:00
|
|
|
|
used: "format", "RegEx", "filesystem", "system", "math",
|
2012-12-22 18:34:23 +00:00
|
|
|
|
"Range", "rational", "variant". At least v1.46.0 is required.
|
2010-08-01 09:43:08 +00:00
|
|
|
|
|
2014-08-21 01:11:10 +00:00
|
|
|
|
You also need the `rake` or `drake` build program or at least the
|
2010-08-01 09:43:08 +00:00
|
|
|
|
programming language Ruby and the "rubygems" package. MKVToolNix comes
|
|
|
|
|
bundled with its own copy of "drake" in case you cannot install it
|
|
|
|
|
yourself. If you want to install it yourself I suggest you use the
|
|
|
|
|
"drake" version because it will be able to use all available CPU cores
|
|
|
|
|
for parallel builds.
|
|
|
|
|
|
|
|
|
|
Installing "drake" is simple. As root run the following command:
|
|
|
|
|
|
2014-08-21 01:11:10 +00:00
|
|
|
|
gem install drake
|
2010-04-14 08:06:25 +00:00
|
|
|
|
|
2015-03-27 21:02:37 +00:00
|
|
|
|
## 2.2. Optional components
|
2005-08-25 08:05:07 +00:00
|
|
|
|
|
|
|
|
|
Other libraries are optional and only limit the features that are
|
|
|
|
|
built. These include:
|
|
|
|
|
|
2015-10-03 11:50:41 +00:00
|
|
|
|
- [Qt](http://www.qt.io/) v5.2 or newer -- a cross-platform GUI
|
|
|
|
|
toolkit. You need this if you want to use the MKVToolNix GUI or
|
|
|
|
|
mkvinfo's GUI.
|
2015-07-13 17:36:53 +00:00
|
|
|
|
|
2015-03-27 14:37:19 +00:00
|
|
|
|
- [libFLAC](http://downloads.xiph.org/releases/flac/) for FLAC
|
2005-08-25 08:05:07 +00:00
|
|
|
|
support (Free Lossless Audio Codec)
|
2011-10-23 19:06:28 +00:00
|
|
|
|
|
2015-03-27 21:02:37 +00:00
|
|
|
|
- [lzo](http://www.oberhumer.com/opensource/lzo/) and
|
|
|
|
|
[bzip2](http://www.bzip.org/) are compression libraries. These are
|
|
|
|
|
the least important libraries as almost no application supports
|
|
|
|
|
Matroska content that is compressed with either of these libs. The
|
2005-08-25 08:05:07 +00:00
|
|
|
|
aforementioned zlib is what every program supports.
|
2011-10-23 19:06:28 +00:00
|
|
|
|
|
2015-03-27 14:37:19 +00:00
|
|
|
|
- [libMagic](http://www.darwinsys.com/file/) from the "file" package
|
2008-09-28 17:22:35 +00:00
|
|
|
|
for automatic content type detection
|
2011-10-23 19:06:28 +00:00
|
|
|
|
|
2015-03-27 14:37:19 +00:00
|
|
|
|
- [libcurl](http://curl.haxx.se/) for online update checks
|
2005-08-25 08:05:07 +00:00
|
|
|
|
|
2015-03-27 21:02:37 +00:00
|
|
|
|
## 2.3. Building libEBML and libMatroska
|
2005-08-25 08:05:07 +00:00
|
|
|
|
|
2011-10-23 19:06:28 +00:00
|
|
|
|
This is optional as MKVToolNix comes with its own set of the
|
|
|
|
|
libraries. It will use them if no version is found on the system.
|
|
|
|
|
|
2015-03-27 21:02:37 +00:00
|
|
|
|
Start with the two libraries. Either download releases of
|
2015-10-20 13:35:38 +00:00
|
|
|
|
[libEBML 1.3.3](http://dl.matroska.org/downloads/libebml/) and
|
|
|
|
|
[libMatroska 1.4.4](http://dl.matroska.org/downloads/libmatroska/) or
|
2015-03-27 21:02:37 +00:00
|
|
|
|
get a fresh copy from the git repository:
|
2005-08-25 08:05:07 +00:00
|
|
|
|
|
2014-09-01 12:55:53 +00:00
|
|
|
|
git clone https://github.com/Matroska-Org/libebml.git
|
|
|
|
|
git clone https://github.com/Matroska-Org/libmatroska.git
|
2005-08-25 08:05:07 +00:00
|
|
|
|
|
2015-03-27 21:02:37 +00:00
|
|
|
|
First change to libEBML's directory and run `./configure` followed by
|
|
|
|
|
`make`. Now install libEBML by running `make install` as root
|
|
|
|
|
(e.g. via `sudo`). Change to libMatroska's directory and go through
|
|
|
|
|
the same steps: first `./configure` followed by `make` as a normal
|
|
|
|
|
user and lastly `make install` as root.
|
2007-07-01 18:45:23 +00:00
|
|
|
|
|
2015-03-27 21:02:37 +00:00
|
|
|
|
## 2.4. Building MKVtoolNix
|
2007-07-01 18:45:23 +00:00
|
|
|
|
|
2015-03-27 21:02:37 +00:00
|
|
|
|
Either download the current release from
|
|
|
|
|
[the MKVToolNix home page](https://www.bunkus.org/videotools/mkvtoolnix/)
|
|
|
|
|
and unpack it or get a development snapshot from my Git repository.
|
2005-08-25 08:05:07 +00:00
|
|
|
|
|
2015-03-27 21:02:37 +00:00
|
|
|
|
### 2.4.1. Getting and building a development snapshot
|
2005-08-25 08:05:07 +00:00
|
|
|
|
|
2015-03-27 21:02:37 +00:00
|
|
|
|
You can ignore this subsection if you want to build from a release
|
|
|
|
|
tarball.
|
2005-08-25 08:05:07 +00:00
|
|
|
|
|
2015-03-27 21:02:37 +00:00
|
|
|
|
All you need for Git repository access is to download a Git client
|
|
|
|
|
from the Git homepage at http://git-scm.com/. There are clients
|
|
|
|
|
for both Unix/Linux and Windows.
|
2005-08-25 08:05:07 +00:00
|
|
|
|
|
2015-03-27 21:02:37 +00:00
|
|
|
|
First clone my Git repository with this command:
|
2005-08-25 08:05:07 +00:00
|
|
|
|
|
2015-03-27 21:02:37 +00:00
|
|
|
|
git clone https://github.com/mbunkus/mkvtoolnix.git
|
2009-03-04 09:53:09 +00:00
|
|
|
|
|
2015-03-27 21:02:37 +00:00
|
|
|
|
Now change to the MKVtoolNix directory with `cd mkvtoolnix` and run
|
|
|
|
|
`./autogen.sh` which will generate the "configure" script. You need
|
|
|
|
|
the GNU "autoconf" utility for this step.
|
2009-03-04 09:53:09 +00:00
|
|
|
|
|
2015-03-27 21:02:37 +00:00
|
|
|
|
### 2.4.2. Configuration and compilation
|
2005-08-25 08:05:07 +00:00
|
|
|
|
|
2014-08-21 01:11:10 +00:00
|
|
|
|
If you have run `make install` for both libraries then `configure`
|
2005-08-25 08:05:07 +00:00
|
|
|
|
should automatically find the libraries' position. Otherwise you need
|
2015-03-27 21:02:37 +00:00
|
|
|
|
to tell `configure` where the libEBML and libMatroska include and
|
2005-08-25 08:05:07 +00:00
|
|
|
|
library files are:
|
|
|
|
|
|
2014-08-21 01:11:10 +00:00
|
|
|
|
./configure \
|
|
|
|
|
--with-extra-includes=/where/i/put/libebml\;/where/i/put/libmatroska \
|
|
|
|
|
--with-extra-libs=/where/i/put/libebml/make/linux\;/where/i/put/libmatroska/make/linux
|
2005-08-25 08:05:07 +00:00
|
|
|
|
|
2014-08-21 01:11:10 +00:00
|
|
|
|
Now run `rake` and, as "root", `rake install`. If you don't have
|
2010-08-01 09:43:08 +00:00
|
|
|
|
"rake" installed yourself then use the version bundled with
|
2015-03-27 21:02:37 +00:00
|
|
|
|
MKVToolNix: `./drake` and `./drake install`.
|
2010-08-01 09:43:08 +00:00
|
|
|
|
|
|
|
|
|
If you want to use all available CPU cores for building then you have
|
2014-08-21 01:11:10 +00:00
|
|
|
|
to use `drake` instead of `rake`. `drake` knows the parameter `-j`
|
|
|
|
|
much like `make` does. You can also set the environment variable
|
2010-08-01 09:43:08 +00:00
|
|
|
|
DRAKETHREADS to a number and the build process will automatically use
|
|
|
|
|
that number of threads for a parallel build:
|
|
|
|
|
|
2014-08-21 01:11:10 +00:00
|
|
|
|
./drake -j4
|
2010-08-01 09:43:08 +00:00
|
|
|
|
|
|
|
|
|
or
|
|
|
|
|
|
2014-08-21 01:11:10 +00:00
|
|
|
|
export DRAKETHREADS=4
|
|
|
|
|
./drake
|
2003-03-04 19:09:59 +00:00
|
|
|
|
|
2015-03-27 21:02:37 +00:00
|
|
|
|
## 2.5. Notes for compilation on (Open)Solaris
|
2010-04-14 08:06:25 +00:00
|
|
|
|
|
|
|
|
|
You can compile mkvtoolnix with Sun's sunstudio compiler, but you need
|
2014-08-21 01:11:10 +00:00
|
|
|
|
additional options for `configure`:
|
2010-04-14 08:06:25 +00:00
|
|
|
|
|
2014-08-21 01:11:10 +00:00
|
|
|
|
./configure --prefix=/usr \
|
|
|
|
|
CXX="/opt/sunstudio12.1/bin/CC -library=stlport4" \
|
|
|
|
|
CXXFLAGS="-D_POSIX_PTHREAD_SEMANTICS" \
|
|
|
|
|
--with-extra-includes=/where/i/put/libebml\;/where/i/put/libmatroska \
|
|
|
|
|
--with-extra-libs=/where/i/put/libebml/make/linux\;/where/i/put/libmatroska/make/linux
|
2010-04-14 08:06:25 +00:00
|
|
|
|
|
2015-03-27 21:02:37 +00:00
|
|
|
|
## 2.6. Unit tests
|
2012-08-07 20:48:28 +00:00
|
|
|
|
|
|
|
|
|
Building and running unit tests is completely optional. If you want to
|
|
|
|
|
do this then you have to follow these steps:
|
|
|
|
|
|
2014-08-21 01:11:10 +00:00
|
|
|
|
1. Download the "googletest" framework from
|
2012-08-07 20:48:28 +00:00
|
|
|
|
http://code.google.com/p/googletest/ (at the time of writing the
|
|
|
|
|
file to download was "gtest-1.6.0.zip")
|
|
|
|
|
|
2014-08-21 01:11:10 +00:00
|
|
|
|
2. Make `gtest` usable:
|
|
|
|
|
|
|
|
|
|
1. Either extract the framework inside the "lib" sub-folder and
|
2012-08-07 20:48:28 +00:00
|
|
|
|
rename the resulting folder "gtest-1.6.0" to "gtest"
|
|
|
|
|
|
2015-03-27 21:02:37 +00:00
|
|
|
|
or…
|
2012-08-07 20:48:28 +00:00
|
|
|
|
|
2014-08-21 01:11:10 +00:00
|
|
|
|
2. Extract the archive somewhere and create a symbolic link to it
|
2012-08-07 20:48:28 +00:00
|
|
|
|
inside the "lib" folder called or create a symbolic link called
|
|
|
|
|
"gtest".
|
|
|
|
|
|
2014-08-21 01:11:10 +00:00
|
|
|
|
3. Configure MKVToolNix normally.
|
2012-08-07 20:48:28 +00:00
|
|
|
|
|
2014-08-21 01:11:10 +00:00
|
|
|
|
4. Build the unit test executable and run it with
|
2012-08-07 20:48:28 +00:00
|
|
|
|
|
2014-08-21 01:11:10 +00:00
|
|
|
|
./drake tests:unit
|
2010-04-14 08:06:25 +00:00
|
|
|
|
|
|
|
|
|
|
2015-03-27 21:02:37 +00:00
|
|
|
|
# 3. Reporting bugs
|
2003-08-06 11:09:45 +00:00
|
|
|
|
|
2015-03-27 14:37:19 +00:00
|
|
|
|
If you're sure you've found a bug -- e.g. if one of my programs crashes
|
2003-08-06 11:09:45 +00:00
|
|
|
|
with an obscur error message, or if the resulting file is missing part
|
|
|
|
|
of the original data, then by all means submit a bug report.
|
|
|
|
|
|
2015-03-27 14:37:19 +00:00
|
|
|
|
I use [GitHub's issue system](https://github.com/mbunkus/mkvtoolnix/issues)
|
|
|
|
|
as my bug database. You can submit your bug reports there. Please be as
|
2015-03-27 21:02:37 +00:00
|
|
|
|
verbose as possible – e.g. include the command line, if you use Windows
|
2015-03-27 14:37:19 +00:00
|
|
|
|
or Linux etc.pp.
|
2012-03-09 17:07:49 +00:00
|
|
|
|
|
|
|
|
|
If at all possible please include sample files as well so that I can
|
|
|
|
|
reproduce the issue. If they are larger than 1M then please upload
|
2015-03-27 21:02:37 +00:00
|
|
|
|
them somewhere and post a link in the issue. You can also upload them
|
|
|
|
|
to my FTP server. Details on how to connect can be found in the
|
|
|
|
|
[MKVToolNix FAQ](https://github.com/mbunkus/mkvtoolnix/wiki/FTP-server).
|
2015-11-11 14:35:18 +00:00
|
|
|
|
|
|
|
|
|
# 4. Included libraries and their licenses
|
|
|
|
|
|
|
|
|
|
MKVToolNix includes and uses the following libraries:
|
|
|
|
|
|
|
|
|
|
## 4.1. avilib
|
|
|
|
|
|
|
|
|
|
Reading and writing avi files.
|
|
|
|
|
|
|
|
|
|
Copyright (C) 1999 Rainer Johanni <Rainer@Johanni.de>, originally part
|
|
|
|
|
of the transcode package.
|
|
|
|
|
|
|
|
|
|
License: GNU General Public License v2
|
|
|
|
|
URL: http://www.transcoding.org/
|
|
|
|
|
|
|
|
|
|
## 4.2. Boost's utf8_codecvt_facet
|
|
|
|
|
|
|
|
|
|
A class utf8_codecvt_facet, derived from std::codecvt<wchar_t, char>,
|
|
|
|
|
which can be used to convert utf8 data in files into wchar_t strings
|
|
|
|
|
in the application.
|
|
|
|
|
|
|
|
|
|
License: Boost Software License - Version 1.0
|
|
|
|
|
URL: http://www.boost.org
|
|
|
|
|
|
|
|
|
|
## 4.3. libEBML
|
|
|
|
|
|
|
|
|
|
a C++ libary to parse EBML files
|
|
|
|
|
|
|
|
|
|
License: GNU Lesser General Public License v2.1
|
|
|
|
|
URL: http://www.matroska.org/
|
|
|
|
|
|
|
|
|
|
## 4.4. libMatroska
|
|
|
|
|
|
|
|
|
|
a C++ libary to parse Matroska files
|
|
|
|
|
|
|
|
|
|
License: GNU Lesser General Public License v2.1
|
|
|
|
|
URL: http://www.matroska.org/
|
|
|
|
|
|
|
|
|
|
## 4.5. librmff
|
|
|
|
|
|
|
|
|
|
librmff is short for 'RealMedia file format access library'. It aims
|
|
|
|
|
at providing the programmer an easy way to read and write RealMedia
|
|
|
|
|
files.
|
|
|
|
|
|
|
|
|
|
License: GNU Lesser General Public License v2.1
|
|
|
|
|
URL: https://www.bunkus.org/videotools/librmff/index.html
|
|
|
|
|
|
|
|
|
|
## 4.6. nlohmann's JSON
|
|
|
|
|
|
|
|
|
|
JSON for Modern C++
|
|
|
|
|
|
|
|
|
|
License: MIT
|
|
|
|
|
URL: https://github.com/nlohmann/json
|
|
|
|
|
|
|
|
|
|
## 4.7. pugixml
|
|
|
|
|
|
|
|
|
|
an XML processing library
|
|
|
|
|
|
|
|
|
|
License: MIT
|
|
|
|
|
URL: http://pugixml.org/
|
|
|
|
|
|
|
|
|
|
## 4.8. utf8-cpp
|
|
|
|
|
|
|
|
|
|
UTF-8 with C++ in a Portable Way
|
|
|
|
|
|
|
|
|
|
License: custom (see lib/utf8-cpp/source/utf8.hpp)
|
|
|
|
|
URL: http://utfcpp.sourceforge.net/
|