mkvextract - extrahiert Spuren aus Matroska-Dateien in andere
Dateien.
ÜBERSICHT
mkvextract {Quelldateiname} {Modus1} [Optionen]
[Extraktionsangabe1] [Modus2] [Optionen] [Extraktionsangabe2] [...]
Dieses Programm extrahiert bestimmte Teile einer Matroska-Datei in
andere nützliche Formate. Das erste Argument ist der Name der
Quelldatei, die eine Matroska-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.
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-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).
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-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.
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.
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-Datei, an der der Cluster beginnt, der das referenzierte Element
enthält.
Anmerkung
Innerhalb der Matroska-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-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
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"
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.
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-Spuren werden in OggOpus-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-Spuren werden in RealMedia-Dateien
geschrieben.
A_TRUEHD, A_MLP
Diese werden in rohe TrueHD-/MLP-Dateien
extrahiert.
A_TTA1
TrueAudio-Spuren werden in TTA-Dateien geschrieben. Bitte
beachten Sie, dass die extrahierten Dateikopfdaten wegen der begrenzten
Zeitstempelgenauigkeit von Matroska 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-Datei
geschrieben.
A_WAVPACK4
WavPack-Spuren werden in WV-Dateien geschrieben.
S_HDMV/PGS
PGS-Untertitel werden als SUP-Dateien geschrieben.
S_HDMV/TEXTST
S_KATE
Kate-Datenströme werden innerhalb eines
Ogg-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-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 aus
dem Paket GPAC 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 aus
dem Paket GPAC bearbeitet werden können.
V_MS/VFW/FOURCC
Feste BpS-Videospuren mit dieser CodecID werden in
AVI-Dateien geschrieben.
V_REAL/*
RealVideo-Spuren werden in RealMedia-Dateien
geschrieben.
V_THEORA
Theora-Datenströme werden innerhalb eines
Ogg-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.
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.
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.
Die neuste Version kann immer auf der
MKVToolNix-Homepage[1] gefunden werden.
Moritz Bunkus <moritz@bunkus.org>
Entwickler
- 1.
- der MKVToolNix-Homepage
https://mkvtoolnix.download/