mkvextract - extrahiert Spuren aus Matroska(TM)-Dateien in andere Dateien.
Dieses Programm extrahiert bestimmte Teile einer
Matroska(TM)-Datei in andere nützliche Formate. Das erste Argument ist der Name der Quelldatei, die eine
Matroska(TM)-Datei sein muss.
Alle anderen Argumente wechseln entweder den Modus, ändern Optionen für den momentan aktiven Modus oder geben an, was in welche Datei extrahiert werden soll. Mehrere Modi können im selben Aufruf von mkvextract benutzt werden, wodurch man mehrere Dinge in einem einzigen Durchlauf extrahieren kann. Die meisten Optionen können nur in bestimmten Modi verwendet werden, wobei einige wenige in allen Modi gültig sind.
Derzeit wird das Extrahieren von
Spuren,
Tags,
Anhängen,
Kapiteln,
Cuesheets,
Zeitstempel
und
Indexelemente
unterstützt.
Gemeinsame Optionen
Die folgenden Optionen sind in allen Modi verfügbar und werden nur einmal in diesem Abschnitt beschrieben.
-f, --parse-fully
-
setzt den Auswertungsmodus auf »full«. Der Standardmodus wertet nicht die ganze Datei aus, benutzt aber Metasuchelemente zum Orten der benötigten Elemente der Quelldatei. In 99% der Fälle reicht dies. Aber für Dateien, die keine Metasuchelemente enthalten oder beschädigt sind, kann es notwendig sein, dass der Anwender diesen Modus benutzt. Ein vollständiger Scan einer Datei kann ein paar Minuten in Anspruch nehmen, während ein schneller Scan nur Sekunden dauert.
--command-line-charset Zeichensatz
-
setzt den Zeichensatz, um auf der Befehlszeile angegebene Zeichenketten umzuwandeln. Voreinstellung ist der Zeichensatz der aktuellen Locale des Systems.
--output-charset Zeichensatz
-
setzt den Zeichensatz, in den Zeichenketten zur Ausgabe umgewandelt werden. Voreinstellung ist der Zeichensatz der aktuellen Locale des Systems.
-r, --redirect-output Dateiname
-
schreibt alle Nachrichten in die Datei
Dateiname, statt auf die Konsole. Obwohl dies einfach durch Ausgabeumleitung erledigt werden kann, gibt es Fälle, in denen diese Option benötigt wird: wenn das Terminal die Ausgabe vor dem Schreiben in eine Datei neu auswertet. Der mit
--output-charset
gesetzte Zeichensatz wird dabei berücksichtigt.
--flush-on-close
-
Weist mkvmerge an, alle gepufferten Daten auf den Datenspeicher zu schreiben, wenn eine zum Schreiben geöffnete Datei geschlossen wird. Das kann benutzt werden, um Datenverlust bei Stromausfall vorzubeugen oder bestimmte Probleme im Betriebssystem oder Treibern zu vermeiden. Der Nachteil ist, dass das Multiplexen länger dauert, da mkvmerge vor dem Beenden wartet, bis alle Daten auf den Datenspeicher geschrieben wurden. Siehe Probleme #2469 und #2480 im MKVToolNix-Bugtracker für eine tiefergehende Diskussion der Vor- und Nachteile.
--ui-language Code
-
Erzwingt, dass die Übersetzungen für die Sprache
Code
benutzt werden (z.B. »de_DE« für die deutschen Übersetzungen). Bei der Eingabe von »list« als
Code
gibt das Programm eine Liste der verfügbaren Übersetzungen aus.
--abort-on-warnings
-
Weist das Programm an abzubrechen, nachdem die erste Warnung ausgegeben wurde. Der Rückgabewert des Programms wird in dem Fall 1 sein.
--debug Thema
-
schaltet die Fehlersuche für eine bestimmte Funktionalität ein. Diese Option ist nur für Entwickler nützlich.
--engage Funktionalität
-
schaltet experimentelle Funktionalitäten ein. Eine Liste verfügbarer Funktionalitäten kann mit
mkvextract --engage list
abgefragt werden. Diese Funktionalitäten sind nicht für die Verwendung in Alltagssituationen gedacht.
--gui-mode
-
Schaltet den Modus für graphische Benutzeroberflächen an. In diesem Modus können auf bestimmte Art formatierte Zeilen ausgegeben werden, die einem aufrufenden Programm mitteilen, was
mkvmerge(1)
gerade tut. Diese Nachrichten haben das folgende Format: '#GUI#Nachricht'. Der Nachricht folgen potenziell Schlüssel/Wert-Paare wie z.B. '#GUI#Nachricht#schluessel1=wert1#schluessel2=wert2...'. Weder die Nachricht selber noch die Schlüssel werden jemals übersetzt sondern immer in Englisch ausgegeben.
-v, --verbose
-
detaillierte Ausgabe, zeigt alle wichtigen
Matroska(TM)-Elemente, so wie sie gelesen wurden.
-h, --help
-
zeigt Benutzungsinformationen und beendet sich.
-V, --version
-
zeigt Versionsinformationen und beendet sich.
@Optionsdatei.json
-
Liest zusätzliche Befehlszeilenargumente aus der Datei
Optionsdatei. Eine ausführliche Erläuterunge über die unterstützten Formate finden Sie im Abschnitt "Optionsdateien" in der Handbuchseite zu
mkvmerge(1).
Spurextrahierungsmodus
Syntax:
mkvextract Quelldateiname tracks [Optionen] TID1:Zieldateiname1 [TID2:Zieldateiname2 ...]
Die folgenden Befehlszeilenoptionen sind für jede Spur im Extrahierungsmodus »tracks« verfügbar. Sie müssen vor der Spurenspezifikation, auf die sie angewandt werden sollen, erscheinen (siehe unten).
-c Zeichensatz
-
setzt den Zeichensatz in den die nächste Textuntertitelspur umgewandelt werden soll. Nur gültig, falls die nächste Spur-ID auf eine Untertitelspur verweist. Voreinstellung ist UTF-8.
--blockadd Stufe
-
behält nur die BlockAdditions bis hinauf zu dieser Stufe. Standardäßig werden alle Stufen behalten. Diese Option beeinflusst nur einge Codec-Arten wie WAVPACK4.
--cuesheet
-
veranlasst
mkvextract(1)
ein
CUEsheet aus den Kapitelinformationen zu extrahieren und Daten für die folgende Spur in einer Datei zu kennzeichnen, deren Name der Ausgabename der Spur mit angehängtem ».cue« ist.
--raw
-
extrahiert die rohen Daten in eine Datei ohne irgendwelche umgebenden Container-Daten. Im Gegensatz zum Schalter
--fullraw
veranlasst dieser Schalter nicht, dass der Inhalt des Elements
CodecPrivate
in die Datei geschrieben wird. Dieser Modus funktioniert mit allen
CodecIDs, sogar mit denen, die
mkvextract(1)
ansonsten nicht unterstützt, aber die resultierenden Dateien sind möglicherweise nicht benutzbar.
--fullraw
-
Extrahiert die rohen Daten in eine Datei ohne irgendwelche umgebenden Container-Daten. Der Inhalt des Elements
CodecPrivate
wird in die erste Datei geschrieben, falls die Spur solch ein Kopfelement enthält. Dieser Modus funktioniert mit allen
CodecIDs, sogar mit denen, die
mkvextract(1)
ansonsten nicht unterstützt, aber die resultierenden Dateien sind möglicherweise nicht benutzbar.
TID:Ausgabename
-
veranlasst das Extrahieren der Spur mit der ID
TID
in die Datei
Ausgabename, falls eine derartige Spur in der Quelldatei existiert. Diese Option kann mehrfach angegeben werden. Die Spur-IDs sind dieselben wie die, die durch
mkvmerge(1)s Option
--identify
ausgegeben werden.
Jeder Ausgabename sollte nur einmal benutzt werden. Eine Ausnahme bilden RealAudio- und RealVideo-Spuren. Falls Sie den gleichen Namen für unterschiedliche Spuren verwenden, dann werden diese Spuren in der selben Datei gespeichert. Beispiel:
-
$ mkvextract Eingabe.mkv tracks 0:Video.h264 2:Ausgabe-zwei-VobSub-Spuren.idx 3:Ausgabe-zwei-VobSub-Spuren.idx
Extrahierungsmodus für Anhänge
Syntax:
mkvextract Quelldateiname attachments [Optionen] AID1:Zieldateiname1 [AID2:Zieldateiname2 ...]
AID:Ausgabename
-
veranlasst das Extrahieren des Anhangs mit der ID
AID
in die Datei
Ausgabename, falls ein derartiger Anhang in der Quelldatei existiert. Wenn der
Ausgabename
leer gelassen wird, dann wird stattdessen der Name des Anhangs innerhalb der
Matroska(TM)-Datei benutzt. Diese Option kann mehrfach angegeben werden. Die IDs der Anhänge sind dieselben wie die, die durch
mkvmerge(1)s Option
--identify
ausgegeben werden.
Kapitelextrahierungsmodus
Syntax:
mkvextract Quelldateiname chapters [Optionen] Ausgabedateiname.xml
-s, --simple
-
exportiert die Kapitelinformationen in das einfache, von den
OGM-Werkzeugen benutzte Format (CHAPTER01=..., CHAPTER01NAME=...). In diesem Modus müssen einige Informationen verworfen werden. Standardmäßig werden die Kapitel im
XML-Format ausgegeben.
--simple-language Sprache
-
Falls das einfache Kapitelformat aktiviert ist, gibt
mkvextract(1)
pro gefundenem Kapitel genau einen Eintrag ausgeben, auch wenn das Kapitel mehrere Kapitelnamen besitzt. Standardmäßig gibt
mkvextract(1)
für jedes Kapitel den jeweils als erstes gefundenen Namen unabhängig von seiner Sprache aus.
Das Benutzen dieser Option erlaubt es der BenutzerIn festzulegen, welche Kapitelnamen ausgegeben werden, falls die Kapitel mehr als einen Namen besitzen. Der
Sprache-Parameter muss ein ISO-639-1- oder ISO-639-2-Code sein.
Die Kapitel werden in die angegebene Ausgabedatei geschrieben. Standardmäßig wird das von
mkvmerge(1)
verstandene
XML-Format benutzt. Falls in der Datei keine Kapitel gefunden werden, so wird auch keine Ausgabedatei erzeugt.
Extrahierungsmodus für Tags
Syntax:
mkvextract Quelldateiname tags [Optionen] Ausgabedateiname.xml
Die Tags werden im von
mkvmerge(1)
verstandenen
XML-Format in die angegebene Ausgabedatei geschrieben. Falls in der Datei keine Tags gefunden werden, so wird auch keine Ausgabedatei erzeugt.
Extrahierungsmodus für Cuesheets
Syntax:
mkvextract Quelldateiname cuesheet [Optionen] Ausgabedateiname.cue
Das Cuesheet wird in die angegebene Ausgabedatei geschrieben. Falls in der Datei keine Kapitel oder keine Tags gefunden werden, so wird auch keine Ausgabedatei erzeugt.
Zeitstempelextrahierungsmodus
Syntax:
mkvextract Ausgabedateiname timestamps_v2 [Optionen] TID1:Zieldateiname1 [TID2:Zieldateiname2 ...]
TID:Ausgabename
-
veranlasst das Extrahieren der Zeitstempel für die Spur mit der ID
TID
in die Datei
Ausgabename, falls eine derartige Spur in der Quelldatei existiert. Diese Option kann mehrfach angegeben werden. Die IDs der Spuren sind dieselben wie die, die durch
mkvmerge(1)s Option
--identify
ausgegeben werden.
Beispiel:
-
$ mkvextract Eingabe.mkv timestamps_v2 1:Zeitstempel-Spur1.txt 2:Zeitstempel-Spur2.txt
Extrahierungsmodus für Indexelemente
Syntax:
mkvextract Quelldateiname cues [Optionen] TID1:Zieldateiname1 [TID2:Zieldateiname2 ...]
TID:Zielname
-
veranlasst das Extrahieren der Indexelemente für die Spur mit der ID
TID
in die Datei
Ausgabename, falls eine derartige Spur in der Quelldatei existiert. Diese Option kann mehrfach angegeben werden. Die IDs der Spuren sind dieselben wie die, die durch
mkvmerge(1)s Option
--identify
ausgegeben werden und nicht die Nummern, die in den
CueTrack-Elementen enthalten sind.
Das Ausgabeformat ist ein einfaches Textformat: eine Zeile pro
CuePoint-Element, die
schluessel=wert-Paare enthält. Falls ein optionales Element in einem
CuePoint
nicht enthalten ist (z.B.
CueDuration), so wird ein Bindestrich als Wert ausgegeben.
Beispiel:
-
timestamp=00:00:13.305000000 duration=- cluster_position=757741 relative_position=11
Die möglichen Schlüsselwörter sind:
Zeitstempel
-
der Zeitstempel des Indexelementes mit Nanosekunden-Präzision. Das Format lautet
HH:MM:SS.nnnnnnnnn. Dieses Element ist immer gesetzt.
duration
-
Die Dauer des Indexelements mit Nanosekunden-Präzision. Das Format lautet
HH:MM::SS.nnnnnnnnn.
cluster_position
-
die absolute Position in Bytes innerhalb der
Matroska(TM)-Datei, an der der Cluster beginnt, der das referenzierte Element enthält.
-
Anmerkung
Innerhalb der
Matroska(TM)-Datei ist das
CueClusterPosition-Element relativ zum Anfang des Datenbereiches des Segments. Der von
mkvextract(1)s Indexelement-Modus ausgegebene Wert enthält diesen Offset allerdings bereits ind ist daher ein absoluter Offset, der sich auf den Anfang der ganzen Datei bezieht.
relative_position
-
Die relative Position in Bytes innerhalb des Clusters, an der das
BlockGroup- oder
SimpleBlock-Element beginnt, auf das sich der Indexeintrag bezieht.
-
Anmerkung
Innerhalb der
Matroska(TM)-Datei ist das
CueRelativePosition-Element relativ zum Anfang des Datenbereiches des Clusters. Der von
mkvextract(1)s Indexelement-Modus ausgegebene Wert ist allerdings relativ zum Start der Cluster-Element-ID. Die absolute Position innerhalb der Datei kann daher durch Addition von
cluster_position
und
relative_position
ermittelt werden.
Beispiel:
-
$ mkvextract Eingabe.mkv cues 1:Index-Spur1.txt 2:Index-Spur2.txt
BEISPIELE
Gleichzeitig sowohl Kapitel als auch Tags in ihren jeweiligen
XML-Formaten extrahieren:
-
$ mkvextract Film.mkv chapters Film-Kapitel.xml tags Film-Tags.xml
Gleichzeitig ein paar Spuren und ihre jeweiligen Zeitstempel extrahieren:
-
$ mkvextract "Ein weiterer Film.mkv" tracks 0:Video.h265 "1:Haupt-Audiospur.aac" "2:Kommentar der Regisseurin.aac" timestamps_v2 "0:Zeitstempel Video.txt" "1:Zeitstempel Haupt-Audiospur.txt" "2:Zeitstempel Kommentar der Regisseurin.txt"
Kapitel im Ogg/OGM-Format extrahieren und eine Text-Untertitel-Spur in einen anderen Zeichensatz wandeln:
-
$ mkvextract "Mein Film.mkv" chapters --simple "Meine Kapitel.txt" tracks -c MS-ANSI "2:Meine Untertitel.srt"
UMWANDLUNGEN VON TEXTDATEIEN UND ZEICHENSÄTZEN
Für eine tiefer gehende Diskussion darüber, wie die Programme in der MKVToolNix-Sammlung die Umwandlung von Zeichensätzen, Eingabe-/Ausgabecodierung, Kommandozeilenzeichensätze und Konsolenzeichensätze handhaben, sei auf den Abschnitt »Umwandlungen von Textdateien und Zeichensätzen« in der Handbuchseite von
mkvmerge(1)
verwiesen.
AUSGABEDATEIFORMATE
Die Entscheidung über das Ausgabeformat basiert auf dem Spurtyp, nicht auf der für den Ausgabedateinamen benutzen Dateiendung. Die folgenden Spurtypen werden derzeit unterstützt:
A_AAC/MPEG2/*, A_AAC/MPEG4/*, A_AAC
-
Alle
AAC-Dateien werden in eine
AAC-Datei mit
ADTS-Kopfdaten vor jedem Paket geschrieben. Die
ADTS-Kopfdaten werden nicht das missbilligte Feld »emphasis« enthalten.
A_AC3, A_EAC3
-
Diese werden in rohe
AC-3-Dateien extrahiert.
A_ALAC
-
ALAC-Spuren werden in
CAF-Dateien geschrieben.
A_DTS
-
Diese werden in rohe
DTS-Dateien extrahiert.
A_FLAC
-
FLAC-Spuren werden in
FLAC-Dateien geschrieben.
A_MPEG/L2
-
MPEG-1-Audio-Layer-II-Datenströme werden in rohe
MP2-Dateien extrahiert.
A_MPEG/L3
-
Diese werden in rohe
MP3-Dateien extrahiert.
A_OPUS
-
Opus(TM)-Spuren werden in
OggOpus(TM)-Dateien geschrieben.
A_PCM/INT/LIT, A_PCM/INT/BIG
-
Rohe
PCM-Daten werden in eine
WAV-Datei geschrieben. Dabei werden Big-Endian-Integer-Daten in Little-Endian-Daten umgewnadelt.
A_REAL/*
-
RealAudio(TM)-Spuren werden in
RealMedia(TM)-Dateien geschrieben.
A_TRUEHD, A_MLP
-
Diese werden in rohe
TrueHD-/MLP-Dateien extrahiert.
A_TTA1
-
TrueAudio(TM)-Spuren werden in
TTA-Dateien geschrieben. Bitte beachten Sie, dass die extrahierten Dateikopfdaten wegen der begrenzten Zeitstempelgenauigkeit von
Matroska(TM)
in Bezug auf zwei Felder unterschiedlich sind:
data_length
(die Gesamtzahl der Samples in der Datei) und der
CRC.
A_VORBIS
-
Vorbis-Audio wird in eine
OggVorbis(TM)-Datei geschrieben.
A_WAVPACK4
-
WavPack-Spuren werden in
WV-Dateien geschrieben.
S_HDMV/PGS
-
PGS-Untertitel werden als
SUP-Dateien geschrieben.
S_HDMV/TEXTST
-
TextST-Untertitel werden in einem speziellen Format geschrieben, das für
mkvmerge(1)
und
mkvextract(1)
erfunden wurde.
S_KATE
-
Kate(TM)-Datenströme werden innerhalb eines
Ogg(TM)-Containers geschrieben.
S_TEXT/SSA, S_TEXT/ASS, S_SSA, S_ASS
-
SSA- und
ASS-Textuntertitel werden als
SSA- beziehungsweise
ASS-Dateien geschrieben.
S_TEXT/UTF8, S_TEXT/ASCII
-
Einfache Textuntertitel werden in
SRT-Dateien geschrieben.
S_VOBSUB
-
VobSub(TM)-Untertitel werden als
SUB-Dateien geschrieben, zusammen mit den jeweiligen Indexdateien als
IDX-Dateien.
S_TEXT/USF
-
USF-Textuntertitel werden als
USF-Dateien geschrieben.
S_TEXT/WEBVTT
-
WebVTT-Textuntertitel werden als
WebVTT-Dateien geschrieben.
V_MPEG1, V_MPEG2
-
MPEG-1-/MPEG-2-Videospuren werden in
MPEG-Elementarstrom-Dateien geschrieben.
V_MPEG4/ISO/AVC
-
H.264-/AVC-Videospuren werden in einfache
H.264-Datenströme geschrieben, die später z.B. mit
MP4Box(TM)
aus dem Paket
GPAC(TM)
bearbeitet werden können.
V_MPEG4/ISO/HEVC
-
H.265-/HEVC-Videospuren werden in einfache
H.265-Datenströme geschrieben, die später z.B. mit
MP4Box(TM)
aus dem Paket
GPAC(TM)
bearbeitet werden können.
V_MS/VFW/FOURCC
-
Feste
BpS-Videospuren mit dieser
CodecID
werden in
AVI-Dateien geschrieben.
V_REAL/*
-
RealVideo(TM)-Spuren werden in
RealMedia(TM)-Dateien geschrieben.
V_THEORA
-
Theora(TM)-Datenströme werden innerhalb eines
Ogg(TM)-Containers geschrieben.
V_VP8, V_VP9
-
VP8-/VP9-Spuren werden in
IVF-Dateien geschrieben.
Tags
-
Tags werden in ein
XML-Format umgewandelt. Dieses Format ist dasselbe, das
mkvmerge(1)
zum Lesen der Tags unterstützt.
Anhänge
-
Anhänge werden, so wie sie sind, in ihre Ausgabedatei geschrieben. Es wird keine Umwandlung in irgendeiner Art durchgeführt.
Kapitel
-
Kapitel werden in ein
XML-Format umgewandelt. Dieses Format ist dasselbe, das
mkvmerge(1)
zum Lesen der Kapitel unterstützt. Alternativ kann eine heruntergekürzte Version im einfachen
OGM-Formatstil ausgegeben werden.
Zeitstempel
-
Zeitstempel werden zuerst sortiert und dann als eine Datei ausgegeben, die konform zum Zeitstempelformat v2 und fertig zur Eingabe in
mkvmerge(1)
ist. Das Extrahieren in andere Formate (v1, v3 und v4) wird nicht unterstützt.
RÜCKGABEWERTE
mkvextract(1)
wird mit einem von drei Rückgabewerten beendet:
-
•
0
- dieser Rückgabewert bedeutet, dass das Extrahieren erfolgreich abgeschlossen wurde.
-
•
1
- in diesem Fall hat
mkvextract(1)
mindestens eine Warnung ausgegeben, das Extrahieren wurde aber fortgesetzt. Einer Warnung wird der Text »Warning:« vorangestellt. Abhängig von den aufgetretenen Problemen können die resultierenden Dateien in Ordnung oder nicht sein. Dem Anwender wird nachdrücklich geraten, sowohl die Warnung als auch die resultierenden Dateien zu überprüfen.
-
•
2
- dieser Rückgabewert wird benutzt, nachdem ein Fehler aufgetreten ist.
mkvextract(1)
wird gleich nach der Ausgabe der Fehlermeldung abgebrochen. Fehlermeldungen reichen von falschen Befehlszeilenargumenten über Lese-/Schreibfehler bis hin zu beschädigten Dateien.
UMGEBUNGSVARIABLEN
mkvextract(1)
verwendet die Standardvariablen, um die Locale des Systems zu bestimmen (z.B.
LANG
und die
LC_*-Familie). Zusätzliche Variablen:
MKVEXTRACT_DEBUG, MKVTOOLNIX_DEBUG und ihre Kurzform MTX_DEBUG
-
Der Inhalt wird behandelt, als ob er mit der Option
--debug
übergeben worden wäre.
MKVEXTRACT_ENGAGE, MKVTOOLNIX_ENGAGE und ihre Kurzform MTX_ENGAGE
-
Der Inhalt wird behandelt, als ob er mit der Option
--engage
übergeben worden wäre.
SIEHE AUCH
mkvmerge(1),
mkvinfo(1),
mkvpropedit(1),
mkvtoolnix-gui(1)
WWW
Die neuste Version kann immer auf
m[blue]der MKVToolNix-Homepagem[][1]
gefunden werden.
AUTOR
Moritz Bunkus <moritz@bunkus.org>
-
Entwickler
FUßNOTEN
- 1.
-
der MKVToolNix-Homepage
-
https://mkvtoolnix.download/