mkvpropedit -- 완전한 remux 없이 기존 Matroska(tm) 파일의 속성 수정

# 1. 개요

mkvpropedit options {source-filename} {actions}

# 2. 설명

이 프로그램은 기존 Matroska(tm) 파일을 분석하고 일부 속성을 수정합니다. 그런 다음 수정 사항을 기존 파일에 기록합니다. 변경할 수 있는 속성에는 세그먼트 정보 요소(예: 제목)와 트랙 헤더(예: 언어 코드, '기본 트랙' 플래그 또는 이름)가 있습니다.

옵션:

Option | Description
--- | ---
-l, --list-property-names | 알려진 편집 가능한 모든 속성 이름, 유형(문자열, 정수, 부울 등) 및 간단한 설명을 나열합니다. 프로그램이 나중에 종료됩니다. 따라서 source-filename 매개 변수를 제공할 필요가 없습니다.
-p, --parse-mode mode | 구문 분석 모드를 설정합니다. 'mode' 매개 변수는 'fast'(기본값이기도 함) 또는 'full'일 수 있습니다. 'fast' 모드는 전체 파일을 구문 분석하지 않고 원본 파일의 필수 요소를 찾기 위해 메타 검색 요소를 사용합니다. 모든 경우에 99%는 이것으로 충분하다. 그러나 메타 탐색 요소를 포함하지 않거나 손상된 파일의 경우 사용자는 'full' 구문 분석 모드를 설정해야 할 수 있습니다. 파일 전체 검색에는 몇 분 정도 걸릴 수 있지만 빠른 검색에는 몇 초밖에 걸리지 않습니다.

트랙 및 세그먼트 정보 속성을 다루는 작업:

Option | Description
--- | ---
-e, --edit selector | 다음 모든 add, set및 delete 작업이 작동하는 Matroska(tm) 파일 섹션(세그먼트 정보 또는 특정 트랙의 헤더)을 설정합니다. 이 옵션은 둘 이상의 요소를 수정하기 위해 여러 번 사용할 수 있습니다. 기본적으로 mkvpropedit(1)는 세그먼트 정보 섹션을 편집합니다. 구문에 대한 전체 설명은 edit selectors섹션을 참조하십시오.
-a, --add name=value | 값 value를 사용하여 속성 name을 추가합니다. 해당 속성이 이미 있는 경우에도 속성이 추가됩니다. 대부분의 속성은 고유하며 두 번 이상 발생할 수 없습니다.
-s, --set name=value | 속성 name의 모든 항목을 값 value로 설정합니다. 해당 속성이 없으면 추가됩니다.
-d, --delete name | 속성 name의 모든 항목을 삭제합니다. 일부 속성은 필수이며 삭제할 수 없습니다.

태그 및 장을 처리하는 작업:

Option | Description
--- | ---
-t, --tags selector:filename | 파일의 태그를 filename의 태그로 추가하거나 바꾸거나, filename이 비어 있으면 제거합니다. mkvpropedit(1)는 mkvmerge(1)가 읽는 것과 동일한 XML 태그 형식도 읽습니다. selector는 all, global 또는 track 단어 중 하나여야 합니다. all의 경우 mkvpropedit(1)는 파일의 모든 태그를 바꾸거나 제거합니다. global을 사용할 경우 global 태그만 교체되거나 제거됩니다. track을 사용하면 mkvpropedit(1)가 특정 트랙의 태그를 대체합니다. 또한 filename에서 읽은 태그가 동일한 트랙에 할당됩니다. 트랙은 edit selectors가 지정된 것과 동일한 방식으로 지정됩니다(아래 참조). 예를 들어 --tags track:a1:new-audio-tags.xml입니다.
--add-track-statistics-tags | 파일의 모든 트랙에 대한 통계를 계산하고 해당 트랙에 대한 새 통계 태그를 추가합니다. 파일에 이미 이러한 태그가 포함되어 있으면 해당 태그가 업데이트됩니다.
--delete-track-statistics-tags | 파일에서 기존의 모든 추적 통계 태그를 삭제합니다. 파일에 추적 통계 태그가 없으면 수정되지 않습니다.
-c, --chapters filename | 파일의 장을 filename의 장으로 추가하거나 바꾸거나, filename이 비어 있으면 제거하십시오. mkvpropedit(1)는 mkvmerge(1)와 동일한 XML 및 간단한 챕터 형식을 읽습니다.

첨부 파일 처리 동작:

Option | Description
--- | ---
--add-attachment filename | filename에서 새 첨부 파일을 추가합니다. --attachment-name 옵션이 이 선택사항 이전에 사용된 경우, 해당 값은 새 첨부 파일의 이름으로 사용됩니다. 그렇지 않으면 filename에서 파생됩니다. --attachment-mime-type 선택사항이 이 선택사항 이전에 사용된 경우, 해당 값은 새로운 첨부파일의 MIME 유형으로 사용됩니다. 그렇지 않으면 filename의 내용에서 자동으로 탐지됩니다. --attachment-description 옵션이 이 선택사항 이전에 사용된 경우, 해당 값은 새 첨부 파일의 설명으로 사용됩니다. 그렇지 않으면 설명이 설정되지 않습니다. --attachment-uid 옵션이 이 선택사항 이전에 사용된 경우, 해당 값은 새 첨부 파일의 UID로 사용됩니다. 그렇지 않으면 랜덤 UID가 자동으로 생성됩니다.
--replace-attachment selector:filename | selector와 일치하는 첨부 파일을 filename 파일로 바꿉니다. 둘 이상의 기존 첨부 파일이 selector와 일치하는 경우, 모든 첨부 파일의 내용이 filename의 내용으로 바뀝니다. selector는 네 가지 형태 중 하나를 가질 수 있습니다. 아래 attachment selectors 섹션에서 설명합니다. --attachment-name 옵션이 이 선택사항 이전에 사용된 경우, 이 값은 수정된 각 첨부파일의 새 이름으로 설정됩니다. 그렇지 않으면 이름이 바뀌지 않습니다. --attachment-mime-type 옵션이 이 선택사항 이전에 사용된 경우, 이 값은 수정된 각 첨부파일에 대한 새 MIME 유형으로 설정됩니다. 그렇지 않으면 MIME 유형은 변경되지 않습니다. --attachment-description 옵션이 이 선택사항 이전에 사용된 경우, 이 값은 수정된 각 첨부파일에 대한 새 설명으로 설정됩니다. 그렇지 않으면 설명이 변경되지 않습니다. --attachment-uid 옵션이 이 선택사항 이전에 사용된 경우, 이 값은 수정된 각 첨부파일의 새 UID로 설정됩니다. 그렇지 않으면 UIDs가 바뀌지 않습니다.
--update-attachment selector | selector와 일치하는 하나 이상의 첨부 파일의 속성을 설정합니다. 둘 이상의 기존 첨부 파일이 selector와 일치하는 경우 해당 모든 속성이 업데이트됩니다. selector는 네 가지 형태 중 하나를 가질 수 있습니다. 아래 attachment selectors 섹션에서 설명합니다. --attachment-name 옵션이 이 선택사항 이전에 사용된 경우, 이 값은 수정된 각 첨부파일의 새 이름으로 설정됩니다. 그렇지 않으면 이름이 바뀌지 않습니다. --attachment-mime-type 옵션이 이 선택사항 이전에 사용된 경우, 이 값은 수정된 각 첨부파일에 대한 새 MIME 유형으로 설정됩니다. 그렇지 않으면 MIME 유형은 변경되지 않습니다. --attachment-description 옵션이 이 선택사항 이전에 사용된 경우, 이 값은 수정된 각 첨부파일에 대한 새 설명으로 설정됩니다. 그렇지 않으면 설명이 변경되지 않습니다. --attachment-uid 옵션이 이 선택사항 이전에 사용된 경우, 이 값은 수정된 각 첨부파일의 새 UID로 설정됩니다. 그렇지 않으면 UIDs가 바뀌지 않습니다.
--delete-attachment selector | selector와 일치하는 첨부 파일을 하나 이상 삭제합니다. selector는 네 가지 형태 중 하나를 가질 수 있습니다. 아래 attachment selectors 섹션에서 설명합니다.

첨부 작업 옵션:

Option | Description
--- | ---
--attachment-name name | 다음 --add-attachment 또는 --replace-attachment 작업에 사용할 이름을 설정합니다.
--attachment-mime-type mime-type | 다음 --add-attachment 또는 --replace-attachment 작업에 사용할 MIME을 설정합니다.
--attachment-description 설명 | 다음 --add-attachment 또는 --replace-attachment 작업에 사용할 설명을 설정합니다.
--enable-legacy-font-mime-types | 특정 유형의 글꼴 첨부 파일에 대해 기존 MIME 유형을 사용할 수 있습니다. 예를 들어 TrueType 글꼴에는 'fonts/ttf' 대신 'application/x-truetype-font'가 사용됩니다. 이것은 새 첨부 파일 추가 및 기존 첨부 파일 교체 모두에 영향을 미치지만, 새 MIME 유형이 지정되지 않은 경우에만 적용됩니다. 다른 기존 첨부 파일은 변경되지 않습니다. 영향을 받는 MIME 유형은 'application/x-truetype-fonts'에 매핑된 'font/sfnt'와 'font/ttf', 'font/collection'이고 'application/vnd.ms-opentype'에 매핑된 'font/otf' 입니다.

다른 옵션:

Option | Description
--- | ---
--disable-language-ietf | 일반적으로 사용자가 'language' 트랙 헤더 속성 변경을 요청할 때 mkvpropedit(1)는 기존 Language 요소 외에 새 LanguageIETF 트랙 헤더 요소에도 동일한 변경 사항을 적용합니다. 이 옵션을 사용할 경우 변경 사항은 레거시 Language 요소에만 적용됩니다. 이 옵션은 language-ietf 트랙 헤더 속성을 통해 요청된 변경에는 영향을 주지 않습니다.
--normalize-language-ietf mode | 모든 IETF BCP 47 언어 태그를 모드 'canonical'의 표준 형식, 모드 'extlang'의 확장 언어 하위 태그 형식으로 정규화하거나 모드 'off'로 해제할 수 있습니다. 기본적으로 표준 형식에 대한 정규화가 적용됩니다. 표준 형식에서 기본값이 존재하는 모든 하위 태그는 해당 기본 값으로 대체됩니다. 이를 통해 'zh-yue-jyutping'을 'yue-jyutping'으로 변환하거나 'fr-FX'를 'fr-FR'로 변환합니다. 확장 언어 하위 태그 형식의 경우 표준 형식이 먼저 구축됩니다. 나중에 확장 언어 하위 태그가 존재하는 모든 기본 언어는 확장 언어 하위 태그와 접두사로 대체됩니다. 예를 들면 'yue-jyutping'을 'zh-yue-jyutping'으로 다시 변환하지만 'fr'은 확장 언어 하위 태그가 아니기 때문에 'fr-FR'에는 영향을 미치지 않습니다. 이 정규화는 실제로 변경된 요소에만 적용됩니다: 트랙 헤더를 편집할 때 편집 규격을 통해 설정된 트랙 언어 요소만 영향을 받습니다. 편집되지 않은 트랙의 언어는 변경되지 않습니다. 트랙을 편집하고 언어가 아닌 속성만 설정해도 언어에 영향을 주지 않습니다. 챕터를 편집할 때 기존 챕터가 항상 완전히 교체되므로 모든 챕터 요소의 모든 언어 요소가 영향을 받습니다. 태그를 편집할 때 실제로 대체되는 태그의 언어 요소만 영향을 받습니다. 예를 들어 글로벌 태그를 교체해도 기존 트랙 태그는 영향을 받지 않습니다. 파일의 모든 기존 언어 태그를 정규화하는 가장 좋은 방법은 mkvmerge(1)로 remux하고 '--normalize-language-ietf' 옵션을 원하는 모드로 설정하는 것입니다.
--command-line-charset 문자셋 | 명령행에 주어진 문자열을 변환할 문자셋을 정합니다. 기본값은 현재 시스템 로케일에 따른 문자셋입니다.
--output-charset 문자셋 | 출력할 문자열을 변환할 문자셋을 정합니다. 기본값은 현재 시스템 로케일에 따른 문자셋입니다.
-r, --redirect-output 파일명 | 모든 메시지를 콘솔 대신 file-name 파일에 씁니다. 출력 리디렉션을 통해 쉽게 수행할 수 있지만 터미널이 출력을 파일에 쓰기 전에 재해석하는 경우 이 옵션이 필요한 경우가 있습니다. --output-charset으로 설정된 문자 집합이 적용됩니다.
--ui-language 코드 | 언어 코드의 번역을 강제로 사용합니다 (예: 강제 사용할 독일어 번역 코드는 'de_DE'). 'list'를 코드로 입력하면 mkvextract(1) 에서 이용 가능한 번역 목록을 출력할 것입니다.
--abort-on-warnings | 첫 번째 경고가 발생한 후 프로그램을 중단하도록 지시합니다. 프로그램의 종료 코드는 1입니다.
--debug 토픽 | 특정 기능에 대해 디버깅을 켭니다. 이 기능은 개발자에게만 유용합니다.
--engage 기능 | 실험 기능을 켭니다. 사용 가능한 기능 목록은 mkvpropedit --engague list와 함께 요청할 수 있습니다. 이러한 기능은 정상적인 상황에서 사용할 수 없습니다.
--gui-mode | GUI 모드를 켭니다. 이 모드에서는 GUI 동작시 무슨 일이 일어나는지 알려줄 수 있는 특별하게 형식화된 줄을 출력할 것입니다. 이 메시지들은 '#GUI#message' 형식을 따릅니다. 이 메시지 뒤에 '#GUI#message#key1=value1#key2=value2…' 형태의 키/값 쌍이 붙을 수 있습니다. 메시지나 키값들은 결코 번역되지 않고 항상 영어로 출력됩니다.
-v, --verbose | 읽어들인 모든 중요한 Matroska(tm) 요소를 자세하게 보여 줍니다.
-h, --help | 사용법에 관한 정보를 표시하고 종료합니다.
-V, --version | 버전 정보를 표시하고 종료합니다.
@옵션 파일.json | 추가 명령행 인수는 옵션-파일 파일에서 읽어보세요. 이러한 파일용 지원 형식에 대한 자세한 설명은 mkvmerge(1) man page에서 "옵션 파일"이라는 섹션을 참고하세요.

# 3. 선택기 편집

--edit 옵션은 다음과 같은 모든 add, set 및 delete 작업이 작동하는 Matroska(tm) 파일 섹션(세그먼트 정보 또는 특정 트랙의 헤더)을 설정합니다. 이것은 다음 --edit 선택사항을 찾을 때까지 유효합니다. 이 옵션의 인수를 편집 선택기라고 합니다.

기본적으로 mkvpropedit(1)는 세그먼트 정보 섹션을 편집합니다.

## 3.1. 세그먼트 정보

세그먼트 정보는 'info', 'segment_info' 또는 'segmentinfo'의 세 단어 중 하나로 선택할 수 있습니다. 세그먼트 제목 또는 세그먼트 UID와 같은 속성을 포함합니다.

## 3.2. 트랙 헤더

트랙 헤더는 조금 더 복잡한 선택기로 선택할 수 있습니다. 모든 변형은 'track:'로 시작합니다. 트랙 헤더 속성에는 언어 코드, '기본 트랙' 플래그 또는 트랙 이름과 같은 요소가 포함됩니다.

Option | Description
--- | ---
track:n | 매개 변수 n이 숫자이면 n번째 트랙이 선택됩니다. 트랙 순서는 mkvmerge(1)의 --identify 옵션 출력과 동일합니다. 번호는 1부터 시작입니다.
track:t n | 파라미터가 단일 문자 t로 시작하고 이어서 특정 트랙 유형의 n번째 트랙이 선택됩니다. 트랙 유형 매개 변수 t는 오디오 트랙의 경우 'a', 버튼 트랙의 경우 'b', 자막 트랙의 경우 's', 비디오 트랙의 경우 'v' 중 하나여야 합니다. 트랙 순서는 mkvmerge(1)의 --identify 옵션 출력과 동일합니다. 번호는 1부터 시작입니다.
track:=uid | 파라미터가 '='에 이어 숫자 uid로 시작하는 경우 트랙 UID 요소가 지정된 uid와 동일한 트랙이 선택됩니다. 트랙 UIDs는 mkvinfo(1)에서 얻을 수 있습니다.
track:@number | 파라미터가 '@'로 시작하고 숫자number 뒤에 오는 경우, 트랙 번호 요소가 이 number와 같은 트랙이 선택됩니다. 트랙 번호는 mkvinfo(1)를 통해 얻을 수 있습니다.

## 3.3. 주의

트랙 편집 선택기의 특성상 여러 선택기가 실제로 동일한 트랙 헤더와 일치할 수 있습니다. 이러한 경우 편집 선택기에 대한 모든 작업은 명령줄에 지정된 순서대로 결합되고 실행됩니다.

# 4. 첨부 파일 선택기

첨부 파일 선택기는 --replace-attachment 및 --delete-attachment 두 가지 동작과 함께 사용됩니다. 다음 네 가지 형식 중 하나를 사용할 수 있습니다:

1. 첨부 파일 ID로 선택합니다. 이 양식에서 선택기는 mkvmerge(1)의 식별 명령에 의해 출력되는 첨부 파일의 ID인 숫자입니다.

2. 첨부파일 UID(고유 ID)에 의한 선택입니다. 이 양식에서 선택기는 등호 = 뒤에 숫자, 첨부 파일의 고유 ID를 출력하는 mkvmerge(1)의 상세 식별 명령입니다.

3. 첨부 파일 이름으로 선택합니다. 이 양식에서 선택기는 문자 그대로의 단어 name: 뒤에 기존 첨부 파일의 이름이 붙습니다. 이 선택기를 --replace-attachment와 함께 사용할 경우 일치시킬 이름 내의 콜론은 \c로 이스케이프해야 합니다.

4. MIME 유형별로 선택합니다. 이 양식에서 선택기는 mime-type:이고 그 뒤에 기존 첨부파일의 MIME 유형이 있습니다. 이 선택기가 --replace-attachment와 함께 사용되는 경우 일치시킬 MIME 유형 내의 콜론은 \c로 이스케이프해야 합니다.

# 5. Language handling

mkvpropedit(1) mostly tries to do the right thing by default. Therefore changes to the language property will cause mkvpropedit(1) to apply the same change to both the new "LanguageIETF" element as well as the old "Language" element similar to how mkvmerge(1) applies the language to both elements. For example, when using mkvpropedit movie.mkv --edit track:2 --set language=zh-TW the "LanguageIETF" element will be set to zh-TW and the old "Language" element to chi.

Additionally there's a new track header property named language-ietf that can be set or removed. Changes to this property only apply to the new "LanguageIETF" track header element. A caveat is that the old "Language" track header element is a mandatory element in Matroska — meaning even if it isn't present in the file it still has an implied value. When the user only sets the language-ietf property but not the language property, mkvpropedit(1) will therefore add the old "Language" element in certain cases & set it to und (meaning "undetermined") as the user didn't specify a value for it.

When reading XML chapter or tag files mkvpropedit(1) works like mkvmerge(1) does.

The creation of the new elements can be disabled completely with the command-line option `--disable-language-ietf` which operates on all three new elements.

You can chose the normalization method applied to extended language sub-tags with the parameter --normalize-language-ietf.

# 6. 보기

다음 예제에서는 'movie.mkv'라는 파일을 편집합니다. 세그먼트 제목을 설정하고 오디오와 자막 트랙의 언어 코드를 수정합니다. 세그먼트 정보 요소를 편집하는 것은 어쨌든 첫 번째 --edit 옵션 이전에 발견된 모든 옵션의 기본값이기 때문에 첫 번째 --edit 옵션을 생략하면 이 예를 단축할 수 있습니다.

    $ mkvpropedit movie.mkv --edit info --set "title=The movie" --edit track:a1 --set language=fre --edit track:a2 --set language=ita

두 번째 예는 첫 번째 자막 트랙에서 '기본 트랙 플래그'를 제거하고 두 번째 트랙으로 설정합니다. mkvpropedit(1)는 mkvmerge(1)와 달리 다른 트랙의 '기본 트랙 플래그'가 자동으로 '1'로 설정된 경우 '0'으로 설정되지 않습니다.

    $ mkvpropedit movie.mkv --edit track:s1 --set flag-default=0 --edit track:s2 --set flag-default=1

파일에서 두 번째 자막 트랙의 태그를 바꾸는 것은 다음과 같습니다.

    $ mkvpropedit movie.mkv --tags track:s2:new-subtitle-tags.xml

모든 태그를 제거하려면 파일 이름을 생략해야 합니다.

    $ mkvpropedit movie.mkv --tags all:

파일의 장을 바꾸는 것은 다음과 같습니다.

    $ mkvpropedit movie.mkv --chapters new-chapters.xml

모든 챕터를 제거하려면 파일 이름을 생략해야 합니다.

    $ mkvpropedit movie.mkv --chapters ''

첨부 파일로 글꼴 파일(Arial.ttf) 추가:

    $ mkvpropedit movie.mkv --add-attachment Arial.ttf

첨부 파일로 글꼴 파일(89719823.ttf)을 추가하고 실제로 Arial에 해당하는 정보를 제공합니다.

    $ mkvpropedit movie.mkv --attachment-name Arial.ttf --attachment-description 'The Arial font as a TrueType font' --attachment-mime-type application/x-truetype-font --add-attachment 89719823.ttf

첨부된 글꼴(Comic.ttf) 파일을 다른 글꼴(Arial.ttf)로 대체하는 경우:

    $ mkvpropedit movie.mkv --attachment-name Arial.ttf --attachment-description 'The Arial font as a TrueType font' --replace-attachment name:Comic.ttf:Arial.ttf

두 번째 첨부 파일 삭제:

    $ mkvpropedit movie.mkv --delete-attachment 2

MIME 유형별로 연결된 모든 글꼴 삭제:

    $ mkvpropedit movie.mkv --delete-attachment mime-type:application/x-truetype-font

# 7. 종료 코드

mkvpropedit(1) 종료 시 다음 세 가지 종료 코드 중 하나가 표시됩니다.

- 0 - 이 종료 코드는 수정이 성공적으로 완료되었음을 의미합니다.

- 1 -- 이 경우 mkvpropedit(1)는 경고를 하나 이상 출력했지만 수정은 계속되었습니다. 경고 앞에 'Warning:'이라는 텍스트가 붙습니다. 관련된 문제에 따라 결과 파일이 정상 또는 그렇지 않을 수 있습니다. 사용자는 경고와 결과 파일을 모두 확인해야 합니다.

- 2 - 오류가 발생한 후 이 종료 코드가 사용됩니다. 오류 메시지를 출력한 후 바로 중단합니다. 오류 메시지는 읽기/쓰기 오류에 대한 잘못된 명령줄 인수에서 손상된 파일에 이르기까지 다양합니다.

# 8. 텍스트 파일과 문자셋 변환

MKVToolNix 제품군의 모든 도구가 문자 집합 변환, 입력/출력 인코딩, 명령줄 인코딩 및 콘솔 인코딩을 처리하는 방법에 대한 자세한 내용은 mkvmerge(1) 매뉴얼 페이지에서 동일한 이름의 섹션을 참조하십시오.

# 9. 환경 변수

mkvpropedit(1)는 시스템의 로케일을 결정하는 기본 변수(예: LANG 및 LC_* 제품군)를 사용합니다. 추가 변수:

Option | Description
--- | ---
MKVPROPEDIT_DEBUG, MKVTOOLNIX_DEBUG 와 그 간략한 형태인MTX_DEBUG | 내용은 --debug 옵션을 통해 전달된 것으로 간주됩니다.
MKVPROPEDIT_ENGAGE, MKVTOOLNIX_ENGAGE 와 그 간략한 형태인 MTX_ENGAGE | 내용은 --engage 옵션을 통해 전달된 것으로 간주됩니다.

# 10. 더 보기

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

# 11. WWW

이전 버전은 언제나 MKVToolNix 홈페이지에서 찾을 수 있습니다.