1. Szablon linii komend#
2. Opis#
Ten program analizuje istniejący plik Matroska(tm) i modyfikuje niektóre jego właściwości. Następnie zapisuje te modyfikacje w istniejącym pliku. Wśród właściwości, które można zmienić, znajdują się elementy informacji o segmencie (np. tytuł) oraz nagłówki ścieżek (np. kod języka, flaga „ścieżka domyślna” lub nazwa).
Opcje:
| Option | Description |
|---|---|
| -l, --list-property-names# |
Wyświetla wszystkie znane i możliwe do edycji nazwy właściwości, ich typ (ciąg, liczba całkowita, wartość logiczna itd.) oraz krótki opis. Następnie program kończy działanie. Dlatego parametr source-filename nie musi być podawany. |
| -p, --parse-mode tryb# |
Ustawia tryb analizy. Parametr „mode” może mieć wartość „fast” (domyślną) lub „full”. Tryb „fast” nie analizuje całego pliku, lecz wykorzystuje elementy meta seek do lokalizowania wymaganych elementów pliku źródłowego. W 99% przypadków jest to wystarczające. Jednak w przypadku plików, które nie zawierają elementów meta seek lub są uszkodzone, użytkownik może być zmuszony do ustawienia trybu analizy „full”. Pełne skanowanie pliku może potrwać kilka minut, podczas gdy szybkie skanowanie zajmuje tylko kilka sekund. |
Działania na ścieżkach i właściwościach segmentu:
| Option | Description |
|---|---|
| -e, --edit selektor# |
Ustawia sekcję pliku Matroska(tm) (informacje o segmencie lub nagłówki określonej ścieżki), na której działają wszystkie kolejne akcje add, set i delete. Tej opcji można użyć wielokrotnie w celu modyfikowania więcej niż jednego elementu. Domyślnie mkvpropedit(1) edytuje sekcję informacji o segmencie. Pełny opis składni znajduje się w sekcji dotyczącej selektorów edycji. |
| -a, --add nazwa=wartość# |
Dodaje właściwość nazwa z wartością wartość. Właściwość będzie dodana, nawet jeśli taka już istnieje. Zauważ, że większość właściwości jest unikalnych i nie mogą występować więcej niż raz. |
| -s, --set nazwa=wartość# |
Ustawia wszystkie wystąpienia właściwości name na wartość value. Jeśli taka właściwość nie istnieje, zostanie dodana. |
| -d, --delete nazwa# |
Usuwa wszystkie wystąpienia właściwości nazwa. Zauważ, że niektóre właściwości są obowiązkowe i nie mogą być usunięte. |
Działania na tagach i rozdziałach:
| Option | Description |
|---|---|
| -t, --tags selektor:nazwa-pliku# |
Dodaje lub zastępuje tagi w pliku tagami z filename albo usuwa je, jeśli filename jest pusty. mkvpropedit(1) odczytuje ten sam format tagów XML, który odczytuje również mkvmerge(1). Parametr selector musi być jednym ze słów all, global lub track. Dla all mkvpropedit(1) zastąpi lub usunie wszystkie tagi w pliku. W przypadku global zastępowane lub usuwane będą tylko tagi globalne. W przypadku track mkvpropedit(1) zastąpi tagi dla określonej ścieżki. Dodatkowo tagi odczytane z filename zostaną przypisane do tej samej ścieżki. Ścieżka jest określana w taki sam sposób, jak opisano w selektorach edycji (zobacz poniżej), np. --tags track:a1:new-audio-tags.xml. |
| --add-track-statistics-tags# |
Oblicza statystyki dla wszystkich ścieżek w pliku i dodaje dla nich nowe tagi statystyczne. Jeśli plik już zawiera takie tagi, zostaną one zaktualizowane. |
| --delete-track-statistics-tags# |
Usuwa wszystkie istniejące tagi statystyk ścieżek z pliku. Jeśli plik nie zawiera tagów statystyk ścieżek, nie zostanie zmodyfikowany. |
| -c, --chapters nazwa-pliku# |
Dodaje lub zastępuje rozdziały w pliku rozdziałami z filename albo usuwa je, jeśli filename jest pusty. mkvpropedit(1) odczytuje te same formaty XML i prostego formatu rozdziałów, które odczytuje również mkvmerge(1). |
Działania na załącznikach:
| Option | Description |
|---|---|
| --add-attachment nazwa-pliku# |
Dodaje nowy załącznik z innego-pliku. Jeśli przed tą opcją użyto opcji --attachment-name, jej wartość zostanie użyta jako nazwa nowego załącznika. W przeciwnym razie zostanie ona wyprowadzona z filename. Jeśli przed tą opcją użyto opcji --attachment-mime-type, jej wartość zostanie użyta jako typ MIME nowego załącznika. W przeciwnym razie zostanie on automatycznie wykryty na podstawie zawartości filename. Jeśli przed tą opcją użyto opcji --attachment-description, jej wartość zostanie użyta jako opis nowego załącznika. W przeciwnym razie opis nie zostanie ustawiony. Jeśli przed tą opcją użyto opcji --attachment-uid, jej wartość zostanie użyta jako UID nowego załącznika. W przeciwnym razie automatycznie zostanie wygenerowany losowy UID. |
| --replace-attachment selektor:nazwa-pliku# |
Zastępuje jeden lub więcej załączników pasujących do selector plikiem filename. Jeśli więcej niż jeden istniejący załącznik pasuje do selector, zawartość wszystkich tych załączników zostanie zastąpiona zawartością filename. Parametr selector może mieć jedną z czterech postaci. Są one wyjaśnione poniżej w sekcji dotyczącej selektorów załączników. Jeśli przed tą opcją użyto opcji --attachment-name, jej wartość zostanie ustawiona jako nowa nazwa każdego zmodyfikowanego załącznika. W przeciwnym razie nazwy nie zostaną zmienione. Jeśli przed tą opcją użyto opcji --attachment-mime-type, jej wartość zostanie ustawiona jako nowy typ MIME każdego zmodyfikowanego załącznika. W przeciwnym razie typy MIME nie zostaną zmienione. Jeśli przed tą opcją użyto opcji --attachment-description, jej wartość zostanie ustawiona jako nowy opis każdego zmodyfikowanego załącznika. W przeciwnym razie opisy nie zostaną zmienione. Jeśli przed tą opcją użyto opcji --attachment-uid, jej wartość zostanie ustawiona jako nowy UID każdego zmodyfikowanego załącznika. W przeciwnym razie identyfikatory UID nie zostaną zmienione. |
| --update-attachment selector# |
Ustawia właściwości jednego lub większej liczby załączników pasujących do selector. Jeśli więcej niż jeden istniejący załącznik pasuje do selector, właściwości wszystkich tych załączników zostaną zaktualizowane. Parametr selector może mieć jedną z czterech postaci. Są one wyjaśnione poniżej w sekcji dotyczącej selektorów załączników. Jeśli przed tą opcją użyto opcji --attachment-name, jej wartość zostanie ustawiona jako nowa nazwa każdego zmodyfikowanego załącznika. W przeciwnym razie nazwy nie zostaną zmienione. Jeśli przed tą opcją użyto opcji --attachment-mime-type, jej wartość zostanie ustawiona jako nowy typ MIME każdego zmodyfikowanego załącznika. W przeciwnym razie typy MIME nie zostaną zmienione. Jeśli przed tą opcją użyto opcji --attachment-description, jej wartość zostanie ustawiona jako nowy opis każdego zmodyfikowanego załącznika. W przeciwnym razie opisy nie zostaną zmienione. Jeśli przed tą opcją użyto opcji --attachment-uid, jej wartość zostanie ustawiona jako nowy UID każdego zmodyfikowanego załącznika. W przeciwnym razie identyfikatory UID nie zostaną zmienione. |
| --delete-attachment selektor# |
Usuwa jeden lub więcej załączników, które pasują do selektor. Parametr selector może mieć jedną z czterech postaci. Są one wyjaśnione poniżej w sekcji dotyczącej selektorów załączników. |
Opcje dla działań na załącznikach:
| Option | Description |
|---|---|
| --attachment-name nazwa# |
Ustawia nazwę używaną przez następną operację --add-attachment lub --replace-attachment. |
| --attachment-mime-type typ-mime# |
Ustawia typ MIME używany przez następną operację --add-attachment lub --replace-attachment. |
| --attachment-description opis# |
Ustawia opis używany przez następną operację --add-attachment lub --replace-attachment. |
| --enable-legacy-font-mime-types# |
Włącza używanie starszych typów MIME dla określonych typów załączników czcionek. Na przykład dla czcionek TrueType zostanie użyty „application/x-truetype-font” zamiast „fonts/ttf”. Dotyczy to zarówno dodawania nowych załączników, jak i zastępowania istniejących, ale tylko wtedy, gdy nowy typ MIME nie został określony. Pozostałe istniejące załączniki nie są zmieniane. Dotyczy to typów MIME „font/sfnt”, „font/ttf” i „font/collection”, które są mapowane na „application/x-truetype-fonts”, oraz „font/otf”, który jest mapowany na „application/vnd.ms-opentype”. |
Pozostałe opcje:
| Option | Description |
|---|---|
| --disable-language-ietf# |
Zwykle, gdy użytkownik żąda zmian właściwości nagłówka ścieżki „language”, mkvpropedit(1) zastosuje tę samą zmianę do nowego elementu nagłówka ścieżki LanguageIETF oraz do starszego elementu Language. Jeśli użyta zostanie ta opcja, zmiana zostanie zastosowana tylko do starszego elementu Language. Ta opcja nie wpływa na zmiany żądane za pomocą właściwości ścieżki „language-ietf”. |
| --normalize-language-ietf mode# |
Włącza normalizowanie wszystkich tagów językowych IETF BCP 47 do ich postaci kanonicznej w trybie „canonical”, do postaci z rozszerzonymi podtagami językowymi w trybie „extlang” albo wyłącza je za pomocą trybu „off”. Domyślnie stosowana jest normalizacja do postaci kanonicznej. W postaci kanonicznej wszystkie podtagi, dla których istnieją preferowane wartości, są zastępowane tymi preferowanymi wartościami. Na przykład „zh-yue-jyutping” jest konwertowane na „yue-jyutping”, a „fr-FX” na „fr-FR”. W przypadku postaci z rozszerzonymi podtagami językowymi najpierw tworzona jest postać kanoniczna. Następnie wszystkie języki główne, dla których istnieje rozszerzony podtag językowy, są zastępowane tym podtagiem i jego prefiksem. Na przykład „yue-jyutping” jest z powrotem konwertowane na „zh-yue-jyutping”, ale nie ma to wpływu na „fr-FR”, ponieważ „fr” nie jest rozszerzonym podtagiem językowym. Normalizacja ta ma zastosowanie wyłącznie do elementów, które są faktycznie zmieniane:
Najlepszym sposobem znormalizowania wszystkich istniejących tagów językowych w pliku jest ponowne zmultipleksowanie go za pomocą mkvmerge(1) i ustawienie opcji „--normalize-language-ietf” na żądany tryb. |
| --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. |
| --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 mkvpropedit --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;. |
3. Edytuj selektory#
Opcja --edit ustawia sekcję pliku Matroska(tm) (informacje o segmencie lub nagłówki określonej ścieżki), na której działają wszystkie kolejne akcje add, set i delete. Pozostaje ona aktywna do momentu napotkania następnej opcji --edit. Argument tej opcji nazywany jest selektorem edycji.
Domyślnie mkvpropedit(1) edytuje sekcję informacji o segmencie.
3.1. Informacje o segmencie#
Informacje o segmencie można wybrać za pomocą jednego z trzech słów: „info”, „segment_info” lub „segmentinfo”. Zawierają one właściwości takie jak tytuł segmentu lub identyfikator UID segmentu.
3.2. Nagłówki ścieżki#
Nagłówki ścieżek można wybrać za pomocą nieco bardziej złożonego selektora. Wszystkie warianty zaczynają się od „track:”. Właściwości nagłówka ścieżki obejmują elementy takie jak kod języka, flaga „ścieżka domyślna” lub nazwa ścieżki.
| Option | Description |
|---|---|
| track:n# |
Jeśli parametr n jest liczbą, zostanie wybrana n-ta ścieżka. Kolejność ścieżek jest taka sama, jak kolejność wyświetlana przez opcję --identify programu mkvmerge(1). Numerowanie rozpoczyna się od 1. |
| track:tn# |
Jeśli parametr rozpoczyna się pojedynczym znakiem t, po którym następuje n, zostanie wybrana n-ta ścieżka określonego typu. Parametr typu ścieżki t musi być jednym z czterech znaków: „a” dla ścieżki audio, „b” dla ścieżki przycisków, „s” dla ścieżki napisów i „v” dla ścieżki wideo. Kolejność ścieżek jest taka sama, jak kolejność wyświetlana przez opcję --identify programu mkvmerge(1). Numerowanie rozpoczyna się od 1. |
| track:=uid# |
Jeśli parametr rozpoczyna się od „=”, po którym następuje liczba uid, zostanie wybrana ścieżka, której element UID ścieżki jest równy podanemu uid. Identyfikatory UID ścieżek można uzyskać za pomocą mkvinfo(1). |
| track:@numer# |
Jeśli parametr rozpoczyna się od „@”, po którym następuje liczba number, zostanie wybrana ścieżka, której element numeru ścieżki jest równy tej wartości number. Numery ścieżek można uzyskać za pomocą mkvinfo(1). |
3.3. Uwagi#
Ze względu na charakter selektorów edycji ścieżek możliwe jest, że kilka selektorów faktycznie pasuje do tych samych nagłówków ścieżek. W takich przypadkach wszystkie akcje dla tych selektorów edycji zostaną połączone i wykonane w kolejności, w jakiej podano je w wierszu poleceń.
4. Selektory załączników#
Selektor załącznika jest używany z dwiema akcjami: --replace-attachment i --delete-attachment. Może mieć jedną z następujących czterech postaci:
-
Wybór według identyfikatora załącznika. W tej postaci selektor jest po prostu liczbą — identyfikatorem załącznika wyświetlanym przez polecenie identyfikacji programu mkvmerge(1).
-
Wybór według identyfikatora UID załącznika (unikalnego identyfikatora). W tej postaci selektor jest znakiem równości =, po którym następuje liczba — unikalny identyfikator załącznika wyświetlany przez szczegółowe polecenie identyfikacji programu mkvmerge(1).
-
Wybór według nazwy załącznika. W tej postaci selektor jest dosłownym słowem name:, po którym następuje nazwa istniejącego załącznika. Jeśli selektor jest używany z opcją --replace-attachment, dwukropki występujące w dopasowywanej nazwie muszą być poprzedzone znakiem ucieczki jako \c.
-
Wybór według typu MIME. W tej postaci selektor jest dosłownym słowem mime-type:, po którym następuje typ MIME istniejącego załącznika. Jeśli selektor jest używany z opcją --replace-attachment, dwukropki występujące w dopasowywanym typie MIME muszą być poprzedzone znakiem ucieczki jako \c.
5. Obsługa języków#
mkvpropedit(1) w większości przypadków domyślnie stara się robić właściwą rzecz. Dlatego zmiany właściwości language spowodują, że mkvpropedit(1) zastosuje tę samą zmianę zarówno do nowego elementu „LanguageIETF”, jak i starego elementu „Language”, podobnie jak mkvmerge(1) stosuje język do obu elementów. Na przykład przy użyciu mkvpropedit movie.mkv --edit track:2 --set language=zh-TW element „LanguageIETF” zostanie ustawiony na zh-TW, a stary element „Language” na chi.
Dodatkowo istnieje nowa właściwość nagłówka ścieżki o nazwie language-ietf, którą można ustawić lub usunąć. Zmiany tej właściwości dotyczą tylko nowego elementu nagłówka ścieżki „LanguageIETF”. Należy jednak pamiętać, że stary element nagłówka ścieżki „Language” jest elementem obowiązkowym w formacie Matroska — oznacza to, że nawet jeśli nie występuje w pliku, nadal ma wartość niejawną. Dlatego jeśli użytkownik ustawi tylko właściwość language-ietf, ale nie właściwość language, mkvpropedit(1) w niektórych przypadkach doda stary element „Language” i ustawi go na und (czyli „nieokreślony”), ponieważ użytkownik nie podał dla niego wartości.
Podczas odczytywania plików XML rozdziałów lub tagów mkvpropedit(1) działa tak samo jak mkvmerge(1).
Tworzenie nowych elementów można całkowicie wyłączyć za pomocą opcji wiersza poleceń --disable-language-ietf, która działa na wszystkie trzy nowe elementy.
Metodę normalizacji stosowaną dla rozszerzonych podtagów językowych można wybrać za pomocą parametru --normalize-language-ietf.
6. Przykłady#
Poniższy przykład edytuje plik „movie.mkv”. Ustawia tytuł segmentu i modyfikuje kod języka ścieżki audio oraz ścieżki napisów. Należy pamiętać, że przykład można skrócić, pomijając pierwszą opcję --edit, ponieważ edycja elementu informacji o segmencie jest domyślna dla wszystkich opcji występujących przed pierwszą opcją --edit.
$ mkvpropedit film.mkv --edit info --set "title=Film" --edit track:a1 --set language=fre --edit track:a2 --set language=pol
Drugi przykład usuwa „flagę ścieżki domyślnej” z pierwszej ścieżki napisów i ustawia ją dla drugiej. Należy pamiętać, że mkvpropedit(1), w przeciwieństwie do mkvmerge(1), nie ustawia automatycznie flagi „ścieżka domyślna” innych ścieżek na „0”, jeśli dla innej ścieżki została ustawiona na „1”.
$ mkvpropedit film.mkv --edit track:s1 --set flag-default=0 --edit track:s2 --set flag-default=1
Podmiana tagów dla drugiej ścieżki napisów wygląda następująco:
$ mkvpropedit film.mkv --tags track:s2:nowe-tagi-napisów.xml
Usuwanie wszystkich tagów zakłada pominięcie nazwy pliku:
$ mkvpropedit film.mkv --tags all:
Podmiana rozdziałów w pliku wygląda następująco:
$ mkvpropedit film.mkv --chapters nowe-rozdziały.xml
Usuwanie wszystkich rozdziałów zakłada pominięcie nazwy pliku:
$ mkvpropedit film.mkv --chapters ''
Dodawanie pliku czcionki (Arial.ttf) jako załącznika:
$ mkvpropedit film.mkv --add-attachment Arial.ttf
Dodawanie pliku czcionki (89719823.ttf) jako załącznika i dostarczanie informacji, że jest to czcionka Arial:
$ mkvpropedit film.mkv --attachment-name Arial.ttf --attachment-description "Czcionka Arial jako TrueType" --attachment-mime-type application/x-truetype-font --add-attachment 89719823.ttf
Zamiana załączonego pliku czcionki (Comit.ttf) na drugi z inną czcionką (Arial.ttf):
$ mkvpropedit film.mkv --attachment-name Arial.ttf --attachment-description "Czcionka Arial jako TrueType" --replace-attachment name:Comic.ttf:Arial.ttf
Usuwanie drugiego załącznika, cokolwiek by to nie było:
$ mkvpropedit film.mkv --delete-attachment 2
Usuwanie wszystkich załączonych czcionek według typu MIME:
$ mkvpropedit film.mkv --delete-attachment mime-type:application/x-truetype-font
7. Kody zakończenia#
mkvpropedit(1) kończy działanie z jednym z trzech kodów wyjścia:
-
0 -- Ten kod zakończenia oznacza, że modyfikacja została zakończona powodzeniem.
-
1 – W tym przypadku mkvpropedit(1) zwrócił co najmniej jedno ostrzeżenie, ale modyfikacja nie została przerwana. Ostrzeżenie jest poprzedzone tekstem "Ostrzeżenie:”. W zależności od problemu, pliki wynikowe mogą być poprawne lub nie. Użytkownik powinien sprawdzić zarówno ostrzeżenie, jak i pliki wynikowe.
-
2 – Ten kod wyjścia jest używany po wystąpieniu błędu. mkvpropedit(1) przerywa działanie zaraz po wyświetleniu komunikatu o błędzie. Komunikaty o błędach obejmują błędne argumenty wiersza poleceń, błędy odczytu/zapisu, a nawet uszkodzone pliki.
8. 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.
9. Zmienne środowiskowe#
mkvpropedit(1) używa domyślnych zmiennych, które określają ustawienia regionalne systemu (np. LANG i rodzina LC_*). Dodatkowe zmienne:
| Option | Description |
|---|---|
| MKVPROPEDIT_DEBUG, MKVTOOLNIX_DEBUG i jego skrócona forma MTX_DEBUG# |
Treść jest traktowana tak, jakby została przekazana za pomocą opcji --debug. |
| MKVPROPEDIT_ENGAGE, MKVTOOLNIX_ENGAGE i jego skrócona forma MTX_ENGAGE# |
Treść jest traktowana tak, jakby została przekazana za pomocą opcji --engage. |
10. Zobacz także#
mkvmerge(1), mkvinfo(1), mkvextract(1), mkvtoolnix-gui(1)
11. Strona www#
Najnowsza wersja jest zawsze dostępna pod adresem domowym MKVToolNix.