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

# 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:

- 0 -- Ten kod zakończenia oznacza, że wyodrębnianie zostało zakończone powodzeniem.

- 1 -- In this case mkvextract(1) has output at least one warning, but extraction did continue. A warning is prefixed with the text 'Warning:'. Depending on the issues involved the resulting files might be ok or not. The user is urged to check both the warning and the resulting files.

- 2 -- This exit code is used after an error occurred. mkvextract(1) aborts right after outputting the error message. Error messages range from wrong command line arguments over read/write errors to broken files.

# 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.