mkvextract -- wyodrębnia ścieżki z plików Matroska(tm) do innych plików

Table of contents

1. Szablon linii komend#

mkvextract {source-filename} {mode1} options extraction-spec1 mode2 options extraction-spec2 …

2. Opis#

Ten program wyodrębnia określone fragmenty z pliku Matroska(tm) do innych użytecznych formatów. Pierwszy argument to nazwa pliku źródłowego, który musi być plikiem Matroska(tm).

Wszystkie pozostałe argumenty albo przełączają na określony tryb ekstrakcji, zmieniają opcje dla aktualnie aktywnego trybu, albo określają, co ma zostać wyodrębnione do którego pliku. W jednym wywołaniu programu mkvextract można użyć wielu trybów, co pozwala na wyodrębnienie wielu elementów w jednym przebiegu. Większość opcji można użyć tylko w określonych trybach, a kilka opcji ma zastosowanie do wszystkich trybów.

Obecnie obsługiwane jest wyodrębnianie ścieżek, tagów, załączników, rozdziałów, arkuszy CUE, znaczników czasu i podpowiedzi.

2.1. Opcje podstawowe#

Następujące opcje są dostępne we wszystkich trybach i zostały opisane tylko raz w tej sekcji.

Option Description
-f, --parse-fully#

Ustawia tryb analizy na „pełny”. Domyślny tryb nie analizuje całego pliku, ale wykorzystuje elementy meta-seek do lokalizowania wymaganych elementów pliku źródłowego. W 99% przypadków to wystarcza. Jednak w przypadku plików, które nie zawierają elementów meta-seek lub są uszkodzone, użytkownik może być zmuszony do użycia tego trybu. Pełne skanowanie pliku może zająć kilka minut, podczas gdy szybkie skanowanie zajmuje tylko kilka sekund.

--command-line-charset zestaw-znaków#

Ustawia zestaw znaków, z którego konwertowane są ciągi znaków podane w wierszu poleceń. Domyślnie jest to zestaw znaków określony przez bieżącą lokalizację systemu.

--output-charset zestaw-znaków#

Ustawia zestaw znaków, do którego konwertowane są ciągi znaków przeznaczone do wyprowadzenia. Domyślnie jest to zestaw znaków określony przez bieżącą lokalizację systemu.

-r, --redirect-output nazwa-pliku#

Zapisuje wszystkie powiadomienia do pliku nazwa-pliku zamiast do konsoli. Podczas gdy może być to robione łatwo z przekierowaniem wyjścia, są przypadki, gdy ta opcja właśnie jest potrzebna: gdy terminal ponownie interpretuje plik wyjściowy przed zapisaniem do pliku. Uznawany będzie zestaw znaków ustawiony z opcją --output-charset.

--no-bom#

Zazwyczaj pliki tekstowe utworzone i zakodowane w jednym z wariantów UTF rozpoczynają się od znacznika kolejności bajtów (BOM). Użycie tej opcji wyłącza zapisywanie tego znacznika kolejności bajtów.

--flush-on-close#

Nakazuje programowi przelanie wszystkich danych z pamięci podręcznej do pamięci masowej podczas zamykania plików otwartych do zapisu. Można tego użyć, aby zapobiec utracie danych podczas przerw w dostawie prądu lub obejść pewne problemy z systemem operacyjnym lub sterownikami. Wadą jest to, że multipleksowanie będzie trwało dłużej, ponieważ program mkvmerge będzie czekał, aż wszystkie dane zostaną zapisane w pamięci masowej, zanim zakończy działanie. Szczegółowe omówienie zalet i wad można znaleźć w zgłoszeniach nr 2469 i 2480 w systemie śledzenia błędów MKVToolNix.

--ui-language kod#

Wymusza użycie tłumaczeń dla kodu parameter języka (np. "de_DE” dla tłumaczeń na język niemiecki). Wprowadzenie "list” jako kodu parameter spowoduje, że program wyświetli listę dostępnych tłumaczeń.

--abort-on-warnings#

Nakazuje programowi przerwanie po wyemitowaniu pierwszego ostrzeżenia. Kodem wyjścia programu będzie 1.

--debug temat#

Włącz debugowanie dla konkretnej funkcji. Ta opcja jest użyteczna tylko dla deweloperów.

--engage funkcja#

Włącz funkcje eksperymentalne. Listę dostępnych funkcji można uzyskać za pomocą komendy mkvextract --engage list. Te funkcje nie są przeznaczone do użytku w normalnych sytuacjach.

--gui-mode#

Włącza tryb GUI. W tym trybie mogą być generowane specjalnie sformatowane linie, które informują interfejs GUI o aktualnym stanie rzeczy. Komunikaty te mają formatt '#GUI#message'. Po komunikacie mogą następować pary klucz/wartość, np '#GUI#message#key1=value1#key2=value2…'. Ani komunikaty, ani klucze nie są tłumaczone i zawsze są wyświetlane w języku angielskim.

-v, --verbose#

Bądź szczegółowy i pokazuj wszystkie ważne elementy Matroska(tm) w miarę ich czytania.

-h, --pomoc#

Pokaż informację o sposobie użycia opcji i wyjdź.

-V, --wersja#

Pokaż informację o wersji i wyjdź.

@options-file.json#

Odczytuje dodatkowe argumenty wiersza poleceń z pliku options-file. Pełny opis obsługiwanych formatów takich plików znajduje się w sekcji „Pliki opcji” na stronie man programu &mkvmerge;.

2.2. Tryb wyodrębniania ścieżek#

Składnia: mkvextract nazwa_pliku_źródłowego utwory [opcje] TID1:nazwa_pliku_docelowego1 [TID2:nazwa_pliku_docelowego2...]

W trybie wyodrębniania„tracks” dla każdego utworu dostępne są następujące opcje wiersza poleceń. Muszą one znajdować się przed specyfikacją utworu (patrz poniżej), do którego mają zostać zastosowane.

Option Description
-c zestaw-znaków#

Ustawia zestaw znaków, na który ma zostać przekonwertowana następna ścieżka napisów tekstowych. Opcja ta ma znaczenie tylko wtedy, gdy identyfikator następnej ścieżki odnosi się do ścieżki napisów tekstowych. Domyślnym ustawieniem jest UTF-8.

--blockadd poziom#

Zachowaj tylko dodatki blokowe do tego poziomu. Domyślnie zachowywane są wszystkie poziomy. Ta opcja ma wpływ tylko na niektóre rodzaje kodeków, takie jak WAVPACK4.

--cuesheet#

Powoduje, że funkcja `mkvextract` wyodrębnia arkusz CUE na podstawie informacji o rozdziale oraz danych tagów dla danego utworu do pliku, którego nazwa składa się z nazwy wyjściowej utworu z dodanym rozszerzeniem „.cue”.

--raw#

Wyodrębnia surowe dane do pliku bez żadnych danych otaczających. W przeciwieństwie do flag --fullraw, ta flaga nie powoduje zapisania zawartości elementu CodecPrivate do pliku. Tryb ten działa ze wszystkimi identyfikatorami CodecID, nawet tymi, których &mkvextract; w innym przypadku nie obsługuje, ale powstałe pliki mogą okazać się bezużyteczne.

--fullraw#

Wyodrębnia surowe dane do pliku bez żadnych danych kontenerowych. Jeśli ścieżka zawiera element nagłówkowy CodecPrivate, jego zawartość zostanie zapisana w pliku jako pierwsza. Tryb ten działa ze wszystkimi identyfikatorami CodecID, nawet tymi, których funkcja &mkvextract; w innym przypadku nie obsługuje, jednak powstałe pliki mogą okazać się bezużyteczne.

TID:nazwa#

Powoduje wyodrębnienie ścieżki o identyfikatorze TID do pliku o nazwie outname, jeśli taka ścieżka występuje w pliku źródłowym. Opcję tę można podać wielokrotnie. Identyfikatory ścieżek są takie same jak te wyświetlane przez opcję --identify programu &mkvmerge;.

Każda nazwa pliku wyjściowego powinna być użyta tylko raz. Wyjątkiem są ścieżki RealAudio i RealVideo. Jeśli użyjesz tej samej nazwy dla różnych ścieżek, zostaną one zapisane w tym samym pliku. Przykład:

$ mkvextract input.mkv tracks 0:video.h264 2:output-two-vobsub-tracks.idx 3:output-two-vobsub-tracks.idx

2.3. Tryb wyodrębniania załączników#

Składnia: mkvextract nazwa_pliku_źródłowego attachments [opcje] AID1:nazwa_pliku_wynikowego1 [AID2:nazwa_pliku_wynikowego2...]

Option Description
AID:nazwa#

Powoduje wyodrębnienie załącznika o identyfikatorze AID do pliku o nazwie outname, o ile taki załącznik występuje w pliku źródłowym. Jeśli nazwa outname zostanie pominięta, używana jest zamiast tego nazwa załącznika zawarta w źródłowym pliku Matroska. Opcję tę można podać wielokrotnie. Identyfikatory załączników są takie same jak te wyświetlane przez opcję --identify programu &mkvmerge;.

2.4. Tryb wyodrębniania rozdziałów#

Składnia: mkvextract nazwa_pliku_źródłowego rozdziały opcje nazwa_pliku_wynikowego.xml

Option Description
-s, --simple#

Eksportuje informacje o rozdziałach w prostym formacie używanym w narzędziach OGM (CHAPTER01=..., CHAPTER01NAME=...). W tym trybie niektóre informacje muszą zostać pominięte. Domyślnie rozdziały są wyświetlane w formacie &xml;.

--simple-language język#

Jeśli włączono tryb uproszczony, polecenie mkvextract(1) wyświetli tylko jeden wpis dla każdego napotkanego atomu rozdziału, nawet jeśli atom ten zawiera więcej niż jedną nazwę rozdziału. Domyślnie polecenie mkvextract(1) wykorzystuje pierwszą znalezioną nazwę rozdziału dla każdego atomu, niezależnie od języka.

Użycie tej opcji pozwala użytkownikowi określić, które nazwy rozdziałów mają zostać wyświetlone, jeśli elementy zawierają więcej niż jedną nazwę rozdziału. Parametr języka musi być kodem zgodnym z normą ISO 639-1 lub ISO 639-2.

Rozdziały są zapisywane do wskazanego pliku wyjściowego. Domyślnie stosowany jest format XML, rozpoznawany przez program mkvmerge(1). Jeśli w pliku nie znaleziono żadnych rozdziałów, plik wyjściowy nie zostanie utworzony.

2.5. Tryb wyodrębniania tagów#

Składnia: mkvextract nazwa_pliku_źródłowego tags [opcje] nazwa_pliku_wynikowego.xml

Option Description
-T, --no-track-tags#

Eksportuje tylko tagi, które nie są powiązane z konkretnym utworem.

Tagi są zapisywane w określonym pliku wyjściowym w formacie XML, rozpoznawanym przez program mkvmerge(1). Jeśli w pliku nie znaleziono żadnych tagów, plik wyjściowy nie zostanie utworzony.

2.6. Tryb wyodrębniania arkuszy cue#

Składnia: mkvextract nazwa_pliku_źródłowego [opcje_arkusza_cue] nazwa_pliku_wyjściowego.cue

Lista utworów zostanie zapisana w określonym pliku wyjściowym. Jeśli w pliku nie znaleziono żadnych rozdziałów ani tagów, plik wyjściowy nie zostanie utworzony.

2.7. Tryb wyodrębniania kodów czasowych#

Składnia: mkvextract nazwa_pliku_źródłowego timestamps_v2 [opcje] TID1:nazwa_pliku_docelowego1 [TID2:nazwa_pliku_docelowego2...]

Option Description
TID:nazwa#

Powoduje wyodrębnienie znaczników czasu dla ścieżki o identyfikatorze TID do pliku o nazwie outname, o ile taka ścieżka występuje w pliku źródłowym. Opcję tę można podać wielokrotnie. Identyfikatory ścieżek są takie same jak te wyświetlane przez opcję --identify programu &mkvmerge;.

Przykład:

$ mkvextract timestamps_v2 wejściowy.mkv 1:kczas-ścieżki1.txt 2:kczas-ścieżki2.txt

2.8. Tryb wyodrębniania indeksów cue#

Składnia: mkvextract nazwa_pliku_źródłowego cues [opcje] TID1:nazwa_pliku_docelowego1 [TID2:nazwa_pliku_docelowego2...]

Option Description
TID:docelowa-nazwapliku#

Powoduje wyodrębnienie metadanych utworu o identyfikatorze TID do pliku o nazwie outname, o ile taki utwór występuje w pliku źródłowym. Opcję tę można podać wielokrotnie. Identyfikatory utworów są takie same jak te wyświetlane przez opcję --identify programu &mkvmerge;, a nie numery zawarte w elemencie CueTrack.

Wynik ma postać prostego pliku tekstowego: jeden wiersz na każdy element CuePoint, zawierający pary klucz=wartość. Jeśli w elemencie CuePoint brakuje opcjonalnego elementu (np. CueDuration), jako wartość zostanie wyświetlony myślnik.

Przykład:

timestamp=00:00:13.305000000 duration=- cluster_position=757741 relative_position=11

Możliwe klucze to:

Option Description
timestamp

Sygnatura czasowa punktu kontrolnego z dokładnością do nanosekund. Format to HH:MM:SS.nnnnnnnnn. Ten element jest zawsze ustawiony.

duration

Czas trwania punktu kontrolnego z dokładnością do nanosekund. Format to HH:MM:SS.nnnnnnnnn.

pozycja_klastra

The absolute position in bytes inside the Matroska(tm) file where the cluster containing the referenced element starts.

Note:

Inside the Matroska(tm) file the CueClusterPosition is relative to the segment's data start offset. The value output by mkvextract(1)'s cue extraction mode, however, contains that offset already and is an absolute offset from the beginning of the file.

pozycja_względna

The relative position in bytes inside the cluster where the BlockGroup or SimpleBlock element the cue point refers to starts.

Note:

Inside the Matroska(tm) file the CueRelativePosition is relative to the cluster's data start offset. The value output by mkvextract(1)'s cue extraction mode, however, is relative to the cluster's ID. The absolute position inside the file can be calculated by adding cluster_position and relative_position.

Przykład:

$ mkvextract cues wejściowy.mkv 1:cues-track1.txt 2:cues-track2.txt

3. Przykłady#

Jednoczesne wyodrębnianie rozdziałów i tagów w odpowiednich formatach XML

$ mkvextract movie.mkv rozdziały movie-chapters.xml tagi movie-tags.xml

Jednoczesne wyodrębnianie kilku utworów i ich znaczników czasu:

$ mkvextract "Another Movie.mkv" tracks 0:video.h265 "1:main audio.aac" "2:director's comments.aac" timestamps_v2 "0:timestamps video.txt" "1:timestamps main audio.txt" "2:timestamps director's comments.txt"

Extracting chapters in the Ogg/OGM format and re-encoding a text subtitle track to another character set:

$ mkvextract "My Movie.mkv" chapters --simple "My Chapters.txt" tracks -c MS-ANSI "2:My Subtitles.srt"

4. Pliki tekstowe i konwersje zestawów znaków#

Szczegółowe omówienie sposobu, w jaki wszystkie narzędzia w pakiecie MKVToolNix obsługują konwersję zestawu znaków, kodowanie wejściowe/wyjściowe, kodowanie linii komend i kodowanie konsoli, można znaleźć w sekcji o identycznej nazwie na mkvmerge(1) stronie podręcznika.

5. Wyjściowe formaty plików#

The decision about the output format is based on the track type, not on the extension used for the output file name. The following track types are supported at the moment:

Option Description
A_AAC/MPEG2/*, A_AAC/MPEG4/*, A_AAC

Wszystkie pliki AAC będą zapisywane do plików AAC z nagłówkami ADTS przed każdym pakietem. Nagłówki ADTS nie będą zawierać niewspieranego pola emfazy.

A_AC3, A_EAC3

Zostaną one wyodrębnione do plików w formacie surowym AC-3.

A_ALAC

Ścieżki ALAC są zapisywane do plików CAF.

A_DTS

Zostaną one wyodrębnione do plików w formacie surowym DTS.

A_FLAC

Ścieżki FLAC są zapisywane do surowych plików FLAC.

A_MPEG/L2

Ścieżki MPEG-1 Audio Layer II będą wyodrębniane do surowych plików MP2.

A_MPEG/L3

Zostaną one wyodrębnione do plików MP3 w formacie surowym.

A_OPUS

Ścieżki Opus(tm) są zapisywane do plików OggOpus(tm).

A_PCM/INT/LIT, A_PCM/INT/BIG

Surowe dane PCM zostaną zapisane w pliku WAV. Dane liczbowe w formacie big-endian zostaną w trakcie tego procesu przekonwertowane na format little-endian.

A_REAL/*

Ścieżki RealAudio(tm) są zapisywane do plików RealMedia(tm).

A_TRUEHD, A_MLP

Zostaną one wyodrębnione do plików w formacie surowym TrueHD/MLP.

A_TTA1

Ścieżki TrueAudio(tm) są zapisywane do plików TTA. Zauważ, że w wyniku ograniczonej precyzji formatu Matroska(tm), wyodrębniane nagłówki plików będą mieć inne dwa pola: data_length (łączna liczba sampli w pliku) i CRC.

A_VORBIS

Dźwięk Vorbis będzie zapisywany do pliku OggVorbis(tm).

A_WAVPACK4

Ścieżki WavPack(tm) są zapisywane do plików WV.

S_HDMV/PGS

Napisy PGS będą zapisywane do plików SUP.

S_HDMV/TEXTST

TextST subtitles will be written as a special file format invented for mkvmerge(1) and mkvextract(1).

S_KATE

Ścieżki Kate(tm) będą zapisywane do kontenera Ogg(tm).

S_TEXT/SSA, S_TEXT/ASS, S_SSA, S_ASS

Napisy tekstowe SSA i ASS będą zapisywane do plików odpowiednio SSA/ASS.

S_TEXT/UTF8, S_TEXT/ASCII

Proste napisy tekstowe będą zapisywane do plików SRT.

S_VOBSUB

Napisy VobSub(tm) będą zapisywane do plików SUB razem z odpowiednimi plikami indeksu IDX.

S_TEXT/USF

Napisy tekstowe USF będą zapisywane do plików USF.

S_TEXT/WEBVTT

Napisy tekstowe w formacie WebVTT zostaną zapisane w plikach WebVTT.

V_MPEG1, V_MPEG2

Ścieżki wideo w formatach MPEG-1 i MPEG-2 zostaną zapisane jako strumienie elementarne MPEG.

V_MPEG4/ISO/AVC

Ścieżki obrazu H.264 / AVC są zapisywane do ścieżek surowych (dane podstawowe) H.264, które mogą być później przetwarzane np. przez MP4Box(tm) z pakietu GPAC(tm).

V_MPEG4/ISO/HEVC

Ścieżki obrazu H.265 / HEVC są zapisywane do ścieżek surowych (dane podstawowe) H.265, które mogą być później przetwarzane np. przez MP4Box(tm) z pakietu GPAC(tm).

V_MS/VFW/FOURCC

Ścieżki obrazu ze stałym FPS mające taki CodecID są zapisywane do plików AVI.

V_REAL/*

Ścieżki RealVideo(tm) są zapisywane do plików RealMedia(tm).

V_THEORA

Ścieżki Theora(tm) będą zapisywane do kontenera Ogg(tm)

V_VP8, V_VP9

Ścieżki VP8 / VP9 są zapisywane do plików IVF.

Tagi

Tagi są konwertowane do formatu XML. Jest to taki sam format, jaki mkvmerge(1) obsługuje w plikach wejściowych.

Załączniki

Załączniki są zapisywane do pliku wyjściowego takie jakie są. Żadna konwersja nie jest wykonywana.

Rozdziały

Chapters are converted to a XML format. This format is the same that mkvmerge(1) supports for reading chapters. Alternatively a stripped-down version can be output in the simple OGM style format.

Kody czasowe

Timestamps are first sorted and then output as a timestamp v2 format compliant file ready to be fed to mkvmerge(1). The extraction to other formats (v1, v3 and v4) is not supported.

6. Kody zakończenia#

mkvextract(1) kończy działanie z jednym z trzech kodów wyjścia:

7. Zmienne środowiskowe#

mkvextract(1) uses the default variables that determine the system's locale (e.g. LANG and the LC_* family). Additional variables:

Option Description
MKVEXTRACT_DEBUG, MKVTOOLNIX_DEBUG i jego skrócona forma MTX_DEBUG#

The content is treated as if it had been passed via the --debug option.

MKVEXTRACT_ENGAGE, MKVTOOLNIX_ENGAGE i jego skrócona forma MTX_ENGAGE#

The content is treated as if it had been passed via the --engage option.

8. Zobacz także#

mkvmerge(1), mkvinfo(1), mkvpropedit(1), mkvtoolnix-gui(1)

9. Strona www#

Najnowsza wersja jest zawsze dostępna pod adresem domowym MKVToolNix.