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

Pozycja bezwzględna w bajtach wewnątrz pliku Matroska(tm) w której rozpoczyna się klaster zawierający element, do którego się odwołuje.

Note:

Wewnątrz pliku Matroska(tm) wartość CueClusterPosition jest względna względem przesunięcia początku danych segmentu. Wartość zwracana jednak przez tryb wyodrębniania punktów cue programu mkvextract(1) zawiera już to przesunięcie i jest pozycją bezwzględną liczoną od początku pliku.

pozycja_względna

Względna pozycja w bajtach wewnątrz klastra, w której rozpoczyna się element BlockGroup lub SimpleBlock, do którego odnosi się punkt cue.

Note:

Wewnątrz pliku Matroska(tm) wartość CueRelativePosition jest względna względem przesunięcia początku danych klastra. Wartość zwracana jednak przez tryb wyodrębniania punktów cue programu mkvextract(1) jest względna względem identyfikatora klastra. Pozycję bezwzględną w pliku można obliczyć, dodając cluster_position i 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"

Wyodrębnianie rozdziałów w formacie Ogg/OGM i ponowne kodowanie ścieżki napisów tekstowych do innego zestawu znaków:

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

Decyzja dotycząca formatu wyjściowego jest podejmowana na podstawie typu ścieżki, a nie rozszerzenia użytego w nazwie pliku wyjściowego. Obecnie obsługiwane są następujące typy ścieżek:

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

Napisy TextST zostaną zapisane w specjalnym formacie pliku opracowanym na potrzeby programów mkvmerge(1) i 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

Rozdziały są konwertowane do formatu XML. Jest to ten sam format, który mkvmerge(1) obsługuje podczas odczytywania rozdziałów. Alternatywnie można wyprowadzić uproszczoną wersję w prostym formacie w stylu OGM.

Kody czasowe

Znaczniki czasu są najpierw sortowane, a następnie zapisywane w pliku zgodnym z formatem znaczników czasu v2, gotowym do przekazania do mkvmerge(1). Wyodrębnianie do innych formatów (v1, v3 i v4) nie jest obsługiwane.

6. Kody zakończenia#

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

7. Zmienne środowiskowe#

mkvextract(1) używa domyślnych zmiennych określających ustawienia regionalne systemu (np. LANG oraz rodziny LC_*). Dodatkowe zmienne:

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

Zawartość jest traktowana tak, jakby została przekazana za pomocą opcji --debug.

MKVEXTRACT_ENGAGE, MKVTOOLNIX_ENGAGE i jego skrócona forma MTX_ENGAGE#

Zawartość jest traktowana tak, jakby została przekazana za pomocą opcji --engage.

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.