Readme
Readme
0
================
Table of contents
-----------------
1. Introduction
2. Installation
1. Requirements
2. Optional components
3. Building libmatroska and libebml
4. Building MKVtoolNix
5. Notes for compilation on (Open)Solaris
6. Unit tests
3. Examples
4. Reporting bugs
1. Introduction
---------------
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
http://www.matroska.org/
This code comes under the GPL v2 (see www.gnu.org or the file COPYING).
Modify as needed.
The icons are based on the work of Alexandr Grigorcea and modified by
Eduard Geier. They're licensed under the terms of the Creative Commons
Attribution 3.0 Unported license (see
http://creativecommons.org/licenses/by/3.0/).
2. Installation
---------------
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
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.
### 2.1. Requirements
You also need the `rake` or `drake` build program or at least the
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.
Other libraries are optional and only limit the features that are
built. These include:
Start with the two libraries. Either get libebml 1.3.1 from
http://dl.matroska.org/downloads/libebml/ and libmatroska 1.4.2 from
http://dl.matroska.org/downloads/libmatroska/ or a fresh copy from the
git repository:
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.
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.
If you have run `make install` for both libraries then `configure`
should automatically find the libraries' position. Otherwise you need
to tell `configure` where the "libebml" and "libmatroska" include and
library files are:
./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
Now run `rake` and, as "root", `rake install`. If you don't have
"rake" installed yourself then use the version bundled with
MKVToolNix: `./rake.d/bin/drake` and `./rake.d/bin/drake install`.
If you want to use all available CPU cores for building then you have
to use `drake` instead of `rake`. `drake` knows the parameter `-j`
much like `make` does. You can also set the environment variable
DRAKETHREADS to a number and the build process will automatically use
that number of threads for a parallel build:
./drake -j4
or
export DRAKETHREADS=4
./drake
You can compile mkvtoolnix with Sun's sunstudio compiler, but you need
additional options for `configure`:
./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
OR...
./drake tests:unit
3. Reporting bugs
-----------------
If you're sure you've found a bug - e.g. if one of my programs crashes
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.