mkvmerge -- 멀티미디어 스트림을 Matroska(tm) 파일로 합치기

# 1. 개요

mkvmerge 전역 옵션 {-o out} 옵션1 {파일1} 옵션2 {파일2} @옵션-파일.json

# 2. 설명

이 프로그램은 여러 미디어 파일의 입력을 받아 그 스트림(전부나 선택 항목)을 Matroska(tm) file;로 결합합니다. Matroska 웹사이트를 참고하세요.

Important:

명령행 옵션의 순서는 중요합니다. 프로그램을 처음 사용하면 "옵션 순서" 섹션을 읽어 주세요.

## 2.1. 전역 옵션

Option | Description
--- | ---
-v, --verbose | 보다 자세한 정보를 표시합니다.
-q, --quiet | 상태 정보를 출력하지 않습니다.
-o, --output 파일명 | 파일을 파일명으로 씁니다. 분할을 사용하면 이 매개 변수는 약간 다르게 처리됩니다. --split 옵션의 세부 사항은 해당 링크의 설명을 참고하세요.
-w, --webm | WebM 호환 파일을 만듭니다. 이것은 출력 파일명의 확장자가 "webm"인 경우에도 켜집니다. 이 모드는 몇 가지 제한 사항을 시행합니다. 유일하게 허용되는 코덱은 VP8, VP9 비디오 및 Opus, Vorbis 오디오 트랙입니다. DocType 헤더 항목이 "webm"으로 변경되었습니다. 챕터와 태그의 경우 요소의 하위 집합만 허용됩니다. mkvmerge(1)는 사양에서 허용되지 않는 모든 요소를 자동으로 제거합니다.
--title 제목 | 출력 파일의 일반적인 제목을 설정합니다. 예: 영화 이름
--default-language 언어-코드 | --language 옵션으로 언어가 설정되어 있지 않고 소스 컨테이너가 언어를 제공하지 않는 트랙에 사용될 기본 언어 코드를 설정합니다. 기본 언어 코드는 '확인되지 않음'에 대해 'und'입니다.

## 2.2. 세그먼트 정보 처리 (전역 옵션)

Option | Description
--- | ---
--segmentinfo filename.xml | XML 파일에서 세그먼트 정보를 읽습니다. 이 파일에는 세그먼트 패밀리 UID, 세그먼트 UID, 이전 및 다음 세그먼트 UID 요소가 포함될 수 있습니다. 예제 파일과 DTD가 MKVToolNix 배포에 포함되어 있습니다. 자세한 내용은 아래의 segment info XML files 파일에 대한 섹션을 참조하십시오.
--segment-uid SID1,SID2,... | 사용할 세그먼트 UID를 설정합니다. 이 목록은 128비트 세그먼트 UID를 쉼표로 구분한 목록으로, "0x" 접두사가 있거나 없거나, 공백이 있거나 없는 16진수, 정확히 32자리입니다. SID가 =로 시작하는 경우, 나머지 부분은 UID 세그먼트를 읽고 사용하는 Matroska 파일의 이름으로 해석됩니다. 생성된 각 파일에는 하나의 세그먼트가 포함되며 각 세그먼트에는 하나의 세그먼트 UID가 있습니다. 세그먼트가 생성된 것보다 더 많은 세그먼트 UID가 지정되면 잉여 UID는 무시됩니다. 세그먼트가 생성된 것보다 적은 수의 UID가 지정된 경우 해당 세그먼트에 대해 랜덤 UID가 생성됩니다.

## 2.3. 챕터 및 태그 처리 (전역 옵션)

Option | Description
--- | ---
--chapter-language language-code | 각 장 항목에 대해 작성된 ISO 639-2 언어 코드를 설정합니다. 기본값은 'eng'입니다. 자세한 내용은 아래의 chapters 섹션을 참조하십시오. 이 옵션은 단순 챕터 파일과 챕터는 포함되지만 챕터의 언어에 대한 정보는 없는 소스 파일(예: MP4 및 OGM 파일) 모두에 사용할 수 있습니다. 이 옵션을 사용하는 언어 집합은 --generate-chapters 옵션을 사용하여 장을 생성할 때도 사용됩니다.
--chapter-charset character-set | 단순 챕터 파일을 UTF-8로 변환하는 데 사용되는 문자 집합을 설정합니다. mkvmerge(1)가 문자 집합을 변환하는 방법에 대한 설명은 text files and character sets 절을 참조하십시오. 이 스위치는 Ogg/OGM 및 MP4 파일과 같은 특정 컨테이너 유형에서 복사된 챕터에도 적용됩니다. 자세한 내용은 아래 장에 대한 섹션을 참조하십시오.
--chapter-sync d[,o[/p]] | 다음 원본 파일에 있는 장의 타임스탬프를 dms 단위로 조정합니다. 또는 특수 트랙 ID -2와 함께 --sync 옵션을 사용할 수 있습니다(섹션 특수 트랙 ID 참조). o / p: o / p로 타임스탬프를 조정하여 선형 드리프트를 고정합니다. p는 생략하면 1로 기본 설정됩니다. o와 p는 모두 부동 소수점 숫자일 수 있습니다. 기본값: 수동 동기화 보정 없음(d = 0 및 o / p = 1.0과 동일) 이 옵션은 매번 다른 트랙 ID를 선택하여 여러 트랙에 적용되는 입력 파일에 대해 여러 번 사용할 수 있습니다.
--generate-chapters mode | mkvmerge(1)는 자동으로 챕터를 만들 수 있습니다. 현재 지원되는 두 가지 모드는 다음과 같습니다.

- 'when-appending' – 이 모드는 파일이 추가될 때마다 시작 부분에 1개의 챕터를 만듭니다.

  이 모드는 분할 모드 'parts:' 및 'parts-frames:'에서도 작동합니다. 이러한 모드에서는 추가된 각 타임스탬프 범위(시작 타임스탬프에 '+'로 접두사가 붙은 챕터)에 대해 1개의 챕터가 생성됩니다.

  Note:

  mkvmerge(1)는 새 파일이 추가되는 시기를 확인할 수 있도록 비디오 또는 오디오 트랙이 있어야 합니다. 하나 이상의 비디오 트랙이 혼합된 경우 첫 번째 비디오 트랙이 사용됩니다. 그렇지 않으면 첫 번째 오디오 트랙이 사용됩니다.

- 'interval:time-spec' – 이 모드는 time-spec으로 지정된 일정한 간격으로 하나의 장을 만듭니다. 형식은 HH:MM:SS.nnnnnnnnn 또는 숫자 뒤에 's', 'ms' 또는 'us' 가 붙은 형식으로 표시됩니다.

  예: --generate-chapters interval:45s

새 챕터의 이름은 --generate-chapters-name-template 옵션으로 제어됩니다. 언어는 --generate-chapters 이전에 발생해야 하는 --chapter-language로 설정됩니다.

--generate-chapters-name-template template | 이것은 --generate-chapters 옵션으로 생성된 챕터 이름의 이름 템플릿을 설정합니다. 이 옵션을 사용하지 않으면 기본 'Chapter <NUM:2>'이 사용됩니다. 템플릿에서 사용할 수 있는 몇 가지 변수는 챕터가 생성될 때 실제 값으로 대체됩니다. 문자열 '<NUM>'은 챕터 번호로 대체됩니다. 문자열 '<START>'는 챕터의 시작 타임스탬프로 대체됩니다. The strings '<FILE_NAME>' and '<FILE_NAME_WITH_EXT>' are only filled when generating chapters for appended files. They will be replaced by the appended file's name without respectively with its extension. Note that only the file's base name and extension are inserted, not its directory or drive components.

'<NUM:places>'로 챕터 번호의 최소 자리 수를 지정할 수 있습니다. 예: '<NUM:3>' 위치의 수가 지정된 수보다 작으면 결과의 숫자는 0으로 채워집니다.

시작 타임스탬프가 사용하는 형식을 <START:format>로 제어할 수 있습니다. 형식은 따로 지정되지 않은 경우 '%H:%M:%S'로 기본 설정됩니다. 유효한 형식 코드는 다음과 같습니다.

- %h – 시간

- %H – zero-padded로 두 자리수를 만드는데 걸린 시간

- %m – 분

- %M – zero-padded로 두 자리수를 만드는데 걸린 분

- %s – 초

- %S – zero-padded로 두 자리수를 만드는데 걸린 초

- %n – nanoseconds with nine places

- %<1-9>n – nanoseconds with up to nine places (e.g. three places with %3n)

--cue-chapter-name-format format | mkvmerge(1)는 오디오 파일의 CUE 시트를 챕터의 입력으로 읽을 수 있도록 지원합니다. CUE 시트에는 일반적으로 각 인덱스 항목에 대한 PERFORMER 및 TITLE 항목이 포함됩니다. mkvmerge(1)는 이 두 문자열을 사용하여 장 이름을 구성합니다. 이 옵션을 사용하여 이 이름에 사용되는 형식을 설정할 수 있습니다. 이 옵션이 제공되지 않은 경우 mkvmerge(1) 형식은 '%p - %t'(performer, 공백, 대시, 다른 공백 및 제목 뒤에 있음)으로 기본 설정됩니다.

형식이 지정되면 다음 메타 문자를 제외한 모든 문자가 그대로 복사되고 메타 문자는 다음과 같이 바뀝니다.

- %p는 현재 항목의 PERFORMER 문자열로 대체됩니다.

- %t는 현재 항목의 TITLE 문자열로 대체됩니다.

- %n는 현재 트랙 번호로 대체됩니다.

- %N은 <10일 경우 leading 0으로 패딩된 현재 트랙 번호로 대체됩니다.

--chapters file-name | 파일 file-name에서 챕터 정보를 읽습니다. 자세한 내용은 아래의 chapters 섹션을 참조하십시오.
--global-tags file-name | 파일 file-name에서 전역 태그를 읽습니다. 자세한 내용은 아래의 tags 섹션을 참조하십시오.

## 2.4. 일반 출력 제어 (고급 전역 옵션)

Option | Description
--- | ---
--track-order FID1:TID1,FID2:TID2,... | 이 옵션은 입력 파일의 트랙이 생성되는 순서를 변경합니다. 인수는 쌍 ID의 쉼표로 구분된 목록입니다. 각 쌍에는 먼저 파일 ID(FID1)가 포함되어 있으며, 이는 단순히 0부터 시작하는 명령줄의 파일 번호입니다. 두 번째는 해당 파일의 트랙 ID(TID1)입니다. 일부 트랙 ID가 생략된 경우 이 옵션과 함께 제공된 트랙이 생성된 후 해당 트랙이 생성됩니다. If this option isn't given, tracks will be sorted by their type first & the order of their source file second. Video tracks come first followed by audio & subtitle tracks. Other rarely used track types come last.
--cluster-length spec | 각 클러스터의 데이터 블록 수 또는 데이터 기간을 제한합니다. spec 매개 변수는 단위가 없는 숫자 n이거나 ms로 고정된 숫자 d이 될 수 있습니다. 단위가 사용되지 않으면 mkvmerge(1)는 최대 n개의 데이터 블록을 각 클러스터에 넣습니다. 최대 블록 수는 65535입니다. 숫자 d가 'ms'로 고정된 경우 mkvmerge(1)는 최대 d 밀리초의 데이터를 각 클러스터에 넣습니다. d의 최소값은 100ms이고, 최대값은 32000ms입니다. mkvmerge(1)는 기본적으로 최대 65535개의 데이터 블록과 5000ms의 데이터를 클러스터에 저장합니다.

특정 프레임을 찾으려는 프로그램은 클러스터에만 직접 검색할 수 있으며 이후 전체 클러스터를 읽어야 합니다. 따라서 더 큰 클러스터를 만드는 것은 부정확하거나 느린 탐색으로 이어질 수 있습니다.

--clusters-in-meta-seek | 모든 클러스터를 포함하는 파일 끝에 메타 검색 요소를 생성하도록 mkvmerge(1)를 지정합니다. Matroska file layout에 대한 섹션도 참조하십시오.
--timestamp-scale factor | 타임스탬프 축척 비율을 강제로 factor으로 설정합니다. 유효한 값은 1000..10000000 또는 특수 값 -1입니다. 일반적으로 mkvmerge(1)는 1000000 값을 사용합니다. 즉, 타임스탬프와 지속 시간은 1ms의 정밀도를 갖습니다. 비디오 트랙을 포함하지 않지만 하나 이상의 오디오 트랙 mkvmerge(1)가 포함된 파일의 경우 모든 타임스탬프와 지속 시간이 하나의 오디오 샘플의 정밀도를 갖도록 타임스탬프 스케일 팩터를 자동으로 선택합니다. 이는 더 큰 오버헤드를 발생시키지만 정확한 탐색과 추출을 가능하게 합니다.

특수 값인 -1을 사용하면 mkvmerge(1)는 비디오 트랙이 있더라도 샘플 정밀도를 사용합니다.

--enable-durations | 모든 블록에 대한 기간을 기록합니다. 이렇게 하면 파일 크기가 증가하며 현재 사용자에게 추가 값을 제공하지 않습니다.
--no-cues | mkvmerge(1)에 AVI의 인덱스와 비교할 수 있는 큐 데이터를 만들고 쓰지 않도록 지시합니다. Matroska(tm) 파일은 큐 데이터 없이 재생할 수 있지만 찾는 것은 아마도 부정확하고 느릴 것입니다. 공간이나 테스트 목적으로 매우 간절한 경우에만 사용하십시오. 각 입력 파일에 대해 지정할 수 있는 옵션 --cues도 참조하십시오.
--no-date | 기본적으로 mkvmerge(1)는 "날짜" 세그먼트 정보 필드를 다중화가 시작된 시간 & 날짜로 설정합니다. 이 옵션을 사용하면 해당 필드가 전혀 기록되지 않습니다.
--disable-lacing | 모든 트랙에 대해 레이싱을 비활성화합니다. 이렇게 하면 특히 오디오 트랙이 많은 경우 파일 크기가 커집니다. 이 옵션은 일상적인 사용을 위한 것은 아닙니다.
--disable-track-statistics-tags | 일반적으로 mkvmerge(1)는 각 트랙에 대한 통계를 사용하여 특정 태그를 작성합니다. 이러한 태그가 이미 있으면 덮어씁니다. 태그는 BPS, DURATION, NUMBER_OF_BYTES 및 NUMBER_OF_FRAMES입니다 . 이 옵션을 활성화하면 mkvmerge(1)가 이러한 태그를 작성하고 동일한 이름의 기존 태그를 생성하지 못하게 됩니다.
--disable-language-ietf | 일반적으로 mkvmerge(1)는 트랙 헤더, 챕터 및 태그에 레거시 언어 요소와 더불어 새로운 IETF BCP 47 언어 요소를 작성합니다. 이 옵션을 사용하면 레거시 요소만 기록됩니다.
--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'에는 영향을 미치지 않습니다.

--stop-after-video-ends | Stops processing after the primary video track ends, discarding any remaining packets of other tracks.

## 2.5. 파일 분할, 링크, 결합 및 연결 (추가 전역 옵션)

Option | Description
--- | ---
--split specification | 지정된 크기 또는 지정된 시간 후에 출력 파일을 분할합니다. 트랙은 키 프레임 바로 앞에서만 분할할 수 있습니다. 따라서 분할 지점은 사용자가 지정한 것과 약간 다를 수 있습니다. 현재 mkvmerge(1)는 다음 모드를 지원합니다.

1. 크기별로 나눠짐.

   구문: --split [size:]d[k|m|g]

   예: --split size:700m or --split 150000000

   매개 변수 d는 크기가 각각 KB, MB 또는 GB임을 나타내기 위해 'k', 'm' 또는 'g'로 끝날 수 있습니다. 그렇지 않으면 바이트 단위의 크기로 가정됩니다. 현재 출력 파일이 이 크기 제한에 도달하면 새 파일이 시작됩니다.

   'size:' 접두사는 호환성을 위해 생략될 수 있습니다.

2. 일정 기간 후 분할함.

   구문: --split [duration:]HH:MM:SS.nnnnnnnnn|ds

   예: --split duration:00:60:00.000 or --split 3600s

   매개 변수는 최대 나노초 정밀도로 지속 시간을 지정하기 위한 형식HH:MM:SS.nnnnnnnn이거나 지속 시간(초)에 대해 문자 's' 뒤에 오는 숫자d여야 합니다. HH는 시간 단위, MM은 분 단위, SS는 초 단위, nnnnnnnn은 나노 단위입니다. 시간 수와 나노초 수는 모두 생략할 수 있습니다. 소수점 뒤에는 최대 9자리까지 있을 수 있습니다. 현재 출력의 내용 지속 시간이 이 제한에 도달하면 새 출력 파일이 시작됩니다.

   'duration:' 접두사는 호환성을 위해 생략될 수 있습니다.

3. 특정 타임스탬프 뒤에 분할함.

   구문: --split timestamps:A[,B[,C...]]

   예: --split timestamps:00:45:00.000,01:20:00.250,6300s

   매개 변수 A, B, C 등은 모두 기간 동안 사용된 형식과 동일해야 합니다(위 참조). 타임스탬프 목록은 쉼표로 구분됩니다. 입력 스트림이 현재 분할점의 타임스탬프에 도달하면 새 파일이 생성됩니다. 그런 다음 이 목록에 지정된 다음 분할점이 사용됩니다.

   'timestamps:' 접두사는 생략할 수 없습니다.

4. 타임스탬프 범위를 지정하여 특정 부분을 유지하고 다른 부분은 무시합니다.

   구문: --split parts:start1-end1[,[+]start2-end2[,[+]start3-end3...]]

   예:

   1. --split parts:00:01:20-00:02:45,00:05:50-00:10:30

   2. --split parts:00:01:20-00:02:45,+00:05:50-00:10:30

   3. --split parts:-00:02:45,00:05:50-

   parts 모드는 mkvmerge(1)에 특정 범위의 타임스탬프를 유지하면서 다른 타임스탬프는 무시하도록 지시합니다. 유지할 범위는 parts: 키워드 뒤에 나열되고 쉼표로 구분되어야 합니다. 범위 자체는 --split의 다른 변형 허용 형식과 동일한 형식의 시작 및 종료 타임스탬프로 구성됩니다(예: 00:01:20과 80s는 모두 동일한 타임스탬프를 참조).

   시작 타임스탬프가 생략된 경우 기본값은 이전 범위의 끝 타임스탬프로 설정됩니다. 이전 범위가 없으면 기본적으로 파일 시작 부분으로 설정됩니다(예시 3번 참조).

   종료 타임스탬프가 생략된 경우 기본적으로 mkvmerge(1)가 나머지를 보관하도록 지시하는 소스 파일의 끝으로 기본 설정됩니다(예시 3번 참조).

   일반적으로 각 범위는 새 파일에 기록됩니다. 연속된 범위가 동일한 파일에 쓰이도록 변경할 수 있습니다. 이를 위해 사용자는 시작 타임스탬프 앞에 +를 붙여야 합니다. 이 경우 mkvmerge(1)는 새 파일을 만들지 말고 이전 범위가 기록된 동일한 파일에 범위를 추가하도록 지시합니다. 입력 파일의 두 범위에 공백이 있더라도 출력 파일에 공백이 없도록 타임스탬프가 조정됩니다.

   예시 1번에서 mkvmerge(1)는 두 개의 파일을 만듭니다. 첫 번째 항목은 00:01:20부터 00:02:45까지의 내용을 포함합니다. 두 번째 파일에는 00:05:50부터 00:10:30까지 내용이 포함됩니다.

   예시 2번에서 mkvmerge(1)는 한 개의 파일을 만듭니다. 해당 항목은 00:01:20부터 00:02:45까지의 내용과 00:05:50부터 00:10:30까지 내용을 모두 포함합니다.

   예시 3번에서 mkvmerge(1)는 두 개의 파일을 만듭니다. 첫 번째 파일은 원본 파일의 시작부터 00:02:45까지 내용을 포함합니다. 두 번째 파일에는 00:05:50부터 원본 파일 끝까지 내용이 포함됩니다.

   Note:

   mkvmerge(1)는 주요 프레임 위치에서만 분할에 대한 결정을 내립니다. 이것은 각 범위의 시작과 끝 모두에 적용됩니다. 따라서 종료 타임스탬프가 두 키 프레임 사이에 있더라도 다음 키 프레임은 제외하지만 프레임은 계속 출력합니다.

5. 프레임/필드 번호 범위를 지정하여 특정 부분을 보관하고 다른 부분은 삭제합니다.

   구문: --split parts-frames:start1-end1[,[+]start2-end2[,[+]start3-end3...]]

   예:

   1. --split parts-frames:137-258,548-1211

   2. --split parts-frames:733-912,+1592-2730

   3. --split parts-frames:-430,2512-

   parts-frames 모드는 mkvmerge(1)에게 프레임/필드 번호의 특정 범위를 유지하는 동시에 다른 범위도 무시하도록 지시합니다. 유지할 범위는 parts-frames: 키워드 뒤에 나열되고 쉼표로 구분되어야 합니다. 범위 자체는 시작 및 끝 프레임/필드 번호로 구성됩니다. 번호는 1부터 시작합니다.

   시작 번호가 생략된 경우 기본값은 이전 범위의 끝 번호입니다. 이전 범위가 없으면 기본적으로 파일 시작 부분으로 설정됩니다(예시 3번 참조).

   끝 번호가 생략된 경우 기본적으로 mkvmerge(1)가 나머지를 보관하도록 지시하는 소스 파일의 끝으로 기본 설정됩니다(예시 3번 참조).

   일반적으로 각 범위는 새 파일에 기록됩니다. 연속된 범위가 동일한 파일에 쓰이도록 변경할 수 있습니다. 이를 위해 사용자는 시작 번호 앞에 +를 붙여야 합니다. 이 경우 mkvmerge(1)는 새 파일을 만들지 말고 이전 범위가 기록된 동일한 파일에 범위를 추가하도록 지시합니다. 입력 파일의 두 범위에 공백이 있더라도 출력 파일에 공백이 없도록 타임스탬프가 조정됩니다.

   Note:

   mkvmerge(1)는 주요 프레임 위치에서만 분할에 대한 결정을 내립니다. 이것은 각 범위의 시작과 끝 모두에 적용됩니다. 따라서 종료 프레임/필드 번호가 두 키 프레임 사이에 있더라도 다음 키 프레임은 제외하지만 프레임은 계속 출력합니다.

   예시 1번에서 mkvmerge(1)는 두 개의 파일을 만듭니다. 첫 번째 항목은 137 이후 첫 번째 키 프레임에서 시작하여 258 이후 첫 번째 키 프레임을 제외한 내용을 포함합니다. 두 번째 파일에는 548에서 1211까지의 내용이 포함됩니다.

   예시 2번에서 mkvmerge(1)는 한 개의 파일을 만듭니다. 해당 항목은 733부터 912까지의 내용과 1592부터 2730까지 내용을 모두 포함합니다.

   예시 3번에서 mkvmerge(1)는 두 개의 파일을 만듭니다. 첫 번째 파일은 원본 파일의 시작부터 430까지 내용을 포함합니다. 두 번째 파일에는 2512부터 원본 파일 끝까지 내용이 포함됩니다.

   이 모드는 출력되는 첫 번째 비디오 트랙만 고려합니다. 비디오 트랙이 출력되지 않으면 분할되지 않습니다.

   Note:

   이 인수와 함께 제공된 숫자는 출력되는 Matroska(tm) 블록의 수를 기준으로 해석됩니다. 단일 Matroska(tm) 블록에는 전체 프레임(프로그레시브 콘텐츠용) 또는 단일 필드(인터레이스 콘텐츠용)가 포함됩니다. mkvmerge는 이 둘을 구분하지 않고 단순히 블록의 수를 세는 것입니다. 예: 인터레이스된 콘텐츠가 있는 25번째 전체 프레임 이후에 분할하려면 분할점으로 50(전체 프레임당 두 필드)을 사용해야 합니다.

6. 특정 프레임/필드 뒤에 분할함.

   구문: --split frames:A[,B[,C...]]

   예: --split frames:120,237,891

   매개변수 A, B, C 등은 모두 양의 정수여야 합니다. 번호는 1부터입니다. 프레임/필드 번호 목록은 쉼표로 구분됩니다. 입력 스트림이 현재 분할점의 프레임/필드 번호에 도달하면 새 파일이 생성됩니다. 그런 다음 이 목록에 지정된 다음 분할점이 사용됩니다.

   'frames:' 접두사는 생략할 수 없습니다.

   이 모드는 출력되는 첫 번째 비디오 트랙만 고려합니다. 비디오 트랙이 출력되지 않으면 분할되지 않습니다.

   Note:

   이 인수와 함께 제공된 숫자는 출력되는 Matroska(tm) 블록의 수를 기준으로 해석됩니다. 단일 Matroska(tm) 블록에는 전체 프레임(프로그레시브 콘텐츠용) 또는 단일 필드(인터레이스 콘텐츠용)가 포함됩니다. mkvmerge는 이 둘을 구분하지 않고 단순히 블록의 수를 세는 것입니다. 예: 인터레이스된 콘텐츠가 있는 25번째 전체 프레임 이후에 분할하려면 분할점으로 50(전체 프레임당 두 필드)을 사용해야 합니다.

7. 특정 챕터 전에 분할함.

   구문: --split chapters:all or --split chapters:A[,B[,C...]]

   예: --split chapters:5,8

   매개변수 A, B, C 등은 모두 양의 정수여야 합니다. 번호는 1부터입니다. 챕터 번호 목록은 쉼표로 구분됩니다. 번호가 나열된 장의 시작 타임스탬프와 같거나 큰 첫 번째 키 프레임 바로 앞에서 분할이 발생합니다. 0s로 시작하는 챕터는 분할로 간주되지 않으며 자동으로 삭제됩니다.

   모든 챕터 번호를 수동으로 나열하는 대신 키워드 all을 사용할 수 있습니다.

   'chapters:' 접두사는 생략할 수 없습니다.

   Note:

   Matroska(tm) 파일 형식은 'edition entries' 및 'chapter atoms'라고 하는 임의의 깊이 중첩된 챕터 구조를 지원합니다. 그러나 이 모드는 모든 버전 항목에서 가장 높은 수준의 챕터만 고려합니다.

이 분할 모드에서는 출력 파일 이름이 일반 작동과 다르게 처리됩니다. 옵션 필드 너비(예: '%02d')를 포함하여 식 '%d'와 같은 printf를 포함할 수 있습니다. 이 경우 현재 파일 번호가 적절하게 포맷되고 파일 이름의 해당 지점에 삽입됩니다. 이러한 패턴이 없으면 파일 확장자 바로 전에 '-%03d' 패턴을 가정합니다: '-o output.mkv'는 'output-001.mkv' 등의 결과를 도출합니다. 확장자가 없으면 이름에 '-%03d'가 추가됩니다.

또 다른 가능한 패턴은 '%c'로, 파일의 첫 번째 장의 이름으로 대체됩니다. '%c'가 있으면 패턴 '-%03d'는 자동으로 추가되지 않습니다.

--link | 출력 파일을 분할할 때 파일을 서로 연결합니다. 자세한 내용은 아래의 file linking 섹션을 참조하십시오.
--link-to-previous segment-UID | 첫 번째 출력 파일을 segment-UID 파라미터로 지정된 세그먼트 UID로 세그먼트에 연결합니다. 자세한 내용은 아래 file linking 섹션을 참조하십시오. SID가 =로 시작하는 경우, 나머지 부분은 UID 세그먼트를 읽고 사용하는 Matroska 파일의 이름으로 해석됩니다.
--link-to-next segment-UID | 마지막 출력 파일을 segment-UID 파라미터로 지정된 세그먼트 UID로 세그먼트에 연결합니다. 자세한 내용은 아래 file linking 섹션을 참조하십시오. SID가 =로 시작하는 경우, 나머지 부분은 UID 세그먼트를 읽고 사용하는 Matroska 파일의 이름으로 해석됩니다.
--append-mode mode | 파일을 추가할 때 타임스탬프가 계산되는 방법을 결정합니다. 매개 변수 mode에는 기본값인 'file'과 'track'의 두 가지 값이 있을 수 있습니다. mkvmerge가 두 번째 파일('file2'라고 함)의 트랙('track2_1'이라고 함)을 첫 번째 파일('file1'이라고 함)의 트랙('track1_1'이라고 함)에 추가할 때, 'track2_1'에 대한 모든 타임스탬프를 특정 양만큼 오프셋해야 합니다. 'file' 모드의 경우 타임스탬프가 'track1_1'과 다른 트랙의 타임스탬프일지라도 이 양은 'file1'에서 발생하는 가장 높은 타임스탬프입니다. 트랙 모드에서 오프셋은 'track1_1'의 가장 높은 타임스탬프입니다.

안타깝게도 mkvmerge가 안정적으로 사용할 모드를 감지할 수 없습니다. 따라서 기본값은 file 모드입니다. 'file' 모드는 일반적으로 AVI 또는 MP4 파일을 추가하는 경우와 같이 서로 독립적으로 생성된 파일에 더 잘 작동합니다. 'track' 모드는 기본적으로 하나의 큰 파일의 일부인 소스(예: VOB 및 EVO 파일)에서 더 잘 작동할 수 있습니다.

자막 트랙은 'track' 모드가 실제로 활성화되어 있더라도 항상 'file' 모드가 활성화된 것처럼 처리됩니다.

--append-to SFID1:STID1:DFID1:DTID1[,...] | 이 옵션은 다른 트랙이 추가되는 트랙을 제어합니다. 각 규격에는 파일 ID, 트랙 ID, 두 번째 파일 ID, 두 번째 트랙 ID의 네 가지 ID가 포함되어 있습니다. 첫 번째 쌍인 "소스 파일 ID"와 "소스 트랙 ID"는 추가될 트랙을 식별합니다. 두 번째 쌍인 "목적지 파일 ID"와 "목적지 트랙 ID"는 첫 번째 쌍이 추가된 트랙을 식별합니다. 이 옵션을 생략한 경우 표준 매핑이 사용됩니다. 이 표준 매핑은 현재 파일의 각 트랙을 동일한 트랙 ID를 가진 이전 파일의 트랙에 추가합니다. 이렇게 하면 동영상을 두 부분으로 분할하고 두 파일의 트랙 수와 트랙 ID 수가 mkvmerge -o output.mkv part1.mkv +part2.mkv인 경우 쉽게 추가할 수 있습니다.
+ | '+'가 하나만 있으면 다음 파일이 더해지는 대신 추가됩니다. 다음 파일 이름 앞에 '+'를 넣을 수도 있습니다. 따라서 다음 두 명령은 동일합니다.
    $ mkvmerge -o full.mkv file1.mkv + file2.mkv
    $ mkvmerge -o full.mkv file1.mkv +file2.mkv
[ file1 file2 ] | 여러 파일 이름이 대괄호 쌍에 포함된 경우 두 번째 파일과 다음 모든 파일이 대괄호 안의 첫 번째 파일에 추가됩니다. 이것은 파일 이름 사이에 '+'를 사용하는 대체 구문입니다. 따라서 다음 두 명령은 동일합니다.
    $ mkvmerge -o full.mkv file1.mkv + file2.mkv
    $ mkvmerge -o full.mkv '[' file1.mkv file2.mkv ']'
= | 특정 파일 형식(MPEG 프로그램 스트림 = VOBs)의 경우 일반적으로 기본 이름이 같고 실행 번호만 다른 파일(예: 'VTS_01_1)'과 동일한 디렉터리에서 파일을 찾습니다.VOB', 'VTS_01_2.VOB', 'VTS_01_3.VOB' 등) 및 모든 파일을 하나의 큰 파일로 연결된 것처럼 처리합니다. 단일 '=' 옵션을 선택하면 mkvmerge가 이러한 추가 파일을 찾지 않습니다. 다음 파일 이름 앞에 '='를 넣을 수도 있습니다. 따라서 다음 두 명령은 동일합니다.
    $ mkvmerge -o full.mkv = file1.vob
    $ mkvmerge -o full.mkv =file1.vob
( file1 file2 ) | 여러 개의 파일 이름이 괄호 쌍에 포함된 경우 해당 파일은 각 파일의 내용으로 구성된 하나의 큰 파일로 연결된 것처럼 처리됩니다. 예를 들어 DVD 또는 MPEG 전송 스트림에서 오는 VOB 파일에 사용할 수 있습니다. AVI나 MP4와 같은 독립 실행형 파일의 경우처럼 각 파일에 자체 헤더 집합이 포함되어 있으면 사용할 수 없습니다. 또한 파일 이름을 괄호 안에 넣으면 mkvmerge(1)가 option =에 설명된 것과 동일한 기본 이름을 가진 추가 파일을 찾을 수 없습니다. 따라서 이 두 명령은 동일합니다.
    $ mkvmerge -o out.mkv = file.mkv
    $ mkvmerge -o out.mkv '(' file.mkv ')'
몇 가지 사항에 유의해야 합니다:

1. 열림과 닫힘 괄호 앞에 모두 공백이 있어야 합니다.

2. 괄호 사이의 모든 매개 변수는 파일 이름으로 해석됩니다. 따라서 이 논리 파일에 적용되는 모든 옵션은 여는 괄호 앞에 나열되어야 합니다.

3. 일부 셸에서는 괄호를 특수 문자로 취급합니다. 따라서 위의 예와 같이 escape하거나 인용해야 합니다.

## 2.6. 첨부 파일 지원 (추가 전역 옵션)

Option | Description
--- | ---
--attachment-description 설명 | 다음 첨부 파일에 대한 일반 텍스트 설명입니다. 다음 --attach-file 또는 --attach-file-once 옵션에 적용됩니다.
--attachment-mime-type MIME type | 다음 첨부 파일의 MIME 형식입니다. 다음 --attach-file 또는 --attach-file-once 옵션에 적용됩니다. 공식적으로 인정된 MIME 유형의 목록은 the IANA hompage에서 확인할 수 있습니다. 첨부 파일의 경우 MIME 유형은 필수 사항입니다. 첨부 파일에 대해 MIME 유형이 지정되지 않은 경우 해당 유형은 자동으로 탐지됩니다.
--attachment-name name | 이 첨부 파일의 출력 파일에 저장할 이름을 설정합니다. 이 옵션을 지정하지 않으면 --attach-file 또는 --attach-file-once 옵션과 함께 지정된 첨부 파일의 파일 이름에서 이름이 파생됩니다.
--attach-file file-name, --attach-file-once file-name | Creates a file attachment inside the Matroska(tm) file. The difference between the two forms is that during splitting the files attached with --attach-file are attached to all output files while the ones attached with --attach-file-once are only attached to the first file created. If splitting is not used then both do the same.

mkvextract(1)는 Matroska(tm) 파일에서 첨부 파일을 추출하는 데 사용할 수 있습니다.

--enable-legacy-font-mime-types | 특정 유형의 글꼴 첨부 파일에 대해 기존 MIME 유형을 사용할 수 있습니다. 예를 들어 TrueType 글꼴에는 'fonts/ttf' 대신 'application/x-truetype-font'가 사용됩니다. 이는 MIME 유형이 자동으로 감지되는 경우 새 첨부 파일과 저장된 MIME 유형이 기존 첨부 파일에 다시 매핑되는 경우 모두 영향을 미칩니다. 영향을 받는 MIME 유형은 'application/x-truetype-fonts'에 매핑된 'font/sfnt'와 'font/ttf', 'font/collection'이고 'application/vnd.ms-opentype'에 매핑된 'font/otf' 입니다.

## 2.7. 각 입력 파일에 대해 사용 가능한 옵션

Option | Description
--- | ---
-a, --audio-tracks [!]n,m,... | 오디오 트랙 n, m 등을 복사합니다. 번호는 --identify 스위치로 얻을 수 있는 트랙 ID입니다. 단순한 트랙 번호는 아닙니다(섹션 track IDs 참조). 기본값: 모든 오디오 트랙을 복사합니다. 트랙 ID 대신 ISO 639-2 언어 코드를 제공할 수도 있습니다. 트랙에 대한 언어 태그를 제공하는 소스 파일에만 사용할 수 있습니다. 기본값: 이 종류의 모든 트랙을 복사합니다. ID가 !로 접두사가 붙으면 의미는 반대로 됩니다: ! 뒤에 나열된 트랙을 제외한 이러한 종류의 모든 트랙을 복사합니다.
-d, --video-tracks [!]n,m,... | 비디오 트랙 n, m 등을 복사합니다. 번호는 --identify 스위치로 얻을 수 있는 트랙 ID입니다. 단순한 트랙 번호는 아닙니다(섹션 track IDs 참조). 기본값: 모든 비디오 트랙을 복사합니다. 트랙 ID 대신 ISO 639-2 언어 코드를 제공할 수도 있습니다. 트랙에 대한 언어 태그를 제공하는 소스 파일에만 사용할 수 있습니다. ID가 !로 접두사가 붙으면 의미는 반대로 됩니다: ! 뒤에 나열된 트랙을 제외한 이러한 종류의 모든 트랙을 복사합니다.
-s, --subtitle-tracks [!]n,m,... | 자막 트랙 n, m 등을 복사합니다. 번호는 --identify 스위치로 얻을 수 있는 트랙 ID입니다. 단순한 트랙 번호는 아닙니다(섹션 track IDs 참조). 기본값: 모든 자막 트랙을 복사합니다. 트랙 ID 대신 ISO 639-2 언어 코드를 제공할 수도 있습니다. 트랙에 대한 언어 태그를 제공하는 소스 파일에만 사용할 수 있습니다. ID가 !로 접두사가 붙으면 의미는 반대로 됩니다: ! 뒤에 나열된 트랙을 제외한 이러한 종류의 모든 트랙을 복사합니다.
-b, --button-tracks [!]n,m,... | 버튼 트랙 n, m 등을 복사합니다. 번호는 --identify 스위치로 얻을 수 있는 트랙 ID입니다. 단순한 트랙 번호는 아닙니다(섹션 track IDs 참조). 기본값: 모든 버튼 트랙을 복사합니다. 트랙 ID 대신 ISO 639-2 언어 코드를 제공할 수도 있습니다. 트랙에 대한 언어 태그를 제공하는 소스 파일에만 사용할 수 있습니다. ID가 !로 접두사가 붙으면 의미는 반대로 됩니다: ! 뒤에 나열된 트랙을 제외한 이러한 종류의 모든 트랙을 복사합니다.
--track-tags [!]n,m,... | 태그 트랙 n, m 등을 복사합니다. 번호는 --identify 스위치로 얻을 수 있는 트랙 ID입니다(섹션 track IDs 참조). 단순한 트랙 번호는 아닙니다. 기본값: 모든 트랙의 태그를 복사합니다. ID 앞에 !이 붙으면 의미가 반대로 됩니다. ! 뒤에 나열된 ID를 제외한 모든 것을 복사합니다.
-m, --attachments [!]n[:all|first],m[:all|first],... | ID가 n, m인 첨부 파일을 모두 또는 첫 번째 출력 파일로 복사합니다. 각 ID 뒤에는 ':all'(둘 다 입력되지 않은 경우 기본값) 또는 ':first'가 따를 수 있습니다. 분할이 활성 상태인 경우 ID가 ':all'로 지정된 첨부 파일은 결과 출력 파일 모두에 복사되고 다른 첨부 파일은 첫 번째 출력 파일에만 복사됩니다. 분할이 활성화되지 않으면 두 변형 모두 동일한 효과를 가집니다. 기본값은 모든 첨부 파일을 모든 출력 파일에 복사하는 것입니다.

ID 앞에 !이 붙으면 의미가 반대로 됩니다. ! 뒤에 나열된 ID를 제외한 모든 것을 복사합니다.

-A, --no-audio | 이 파일에서 어떤 오디오 트랙도 복사하지 않습니다.
-D, --no-video | 이 파일에서 어떤 비디오 트랙도 복사하지 않습니다.
-S, --no-subtitles | 이 파일에서 어떤 자막 트랙도 복사하지 않습니다.
-B, --no-buttons | 이 파일에서 어떤 버튼 트랙도 복사하지 않습니다.
-T, --no-track-tags | 이 파일에서 트랙의 어떤 특정한 태그도 복사하지 않습니다.
--no-chapters | 이 파일에서 챕터를 복사하지 않습니다.
-M, --no-attachments | 이 파일에서 첨부 파일을 복사하지 않습니다.
--no-global-tags | 이 파일에서 전역 태그를 복사하지 않습니다.
--regenerate-track-uids | When this option is used for a Matroska source file, mkvmerge(1) will create new random unique track IDs instead of keeping the existing ones in the file. Existing track UIDs in chapters & tags read from the same file will be remapped to the newly generated values.

This behavior is enabled automatically for Matroska files created by the MakeMKV software. The reason is that MakeMKV uses consecutive numbers (1, 2, 3…) as UIDs instead of generating random ones.

-y, --sync TID:d[,o[/p]] | ID가 TID인 트랙의 타임스탬프를 dms 단위로 조정합니다. 트랙 ID는 --identify와 함께 제공된 ID와 동일합니다(섹션 track IDs 참조). o / p: o / p로 타임스탬프를 조정하여 선형 드리프트를 고정합니다. p는 생략하면 1로 기본 설정됩니다. o와 p는 모두 부동 소수점 숫자일 수 있습니다. 기본값: 수동 동기화 보정 없음(d = 0 및 o / p = 1.0과 동일) 이 옵션은 매번 다른 트랙 ID를 선택하여 여러 트랙에 적용되는 입력 파일에 대해 여러 번 사용할 수 있습니다.
--cues TID:none|iframes|all | 지정된 트랙에 대해 트랙 큐(인덱스) 항목이 생성되는 컨트롤입니다(섹션 track IDs 참조). 'none'은 큐 항목 생성을 금지합니다. 'iframes'의 경우 후진 또는 전진 참조가 없는 블록(비디오 트랙의 = I 프레임)만 큐 시트에 들어갑니다. 'all'은 모든 블록에 대해 큐 항목을 생성하므로 파일이 매우 커집니다. 기본값은 비디오 및 자막 트랙의 경우 'iframes'이고 오디오 트랙의 경우 'none'입니다. 사용된 --cues 옵션에 관계없이 큐 항목 작성을 금지하는 --no-cues 옵션도 참조하십시오.

이 옵션은 매번 다른 트랙 ID를 선택하여 여러 트랙에 적용되는 입력 파일에 대해 여러 번 사용할 수 있습니다.

--default-track-flag TID[:bool] | 선택적 인수 bool이 1로 설정되었거나 없는 경우 지정된 트랙에 대한 "기본 track" 플래그를 설정합니다(섹션 track IDs 참조). 소스 컨테이너가 해당 정보를 제공하지 않고 사용자가 이 옵션을 통해 정보를 지정하지 않으면 플래그가 설정됩니다. 사용자가 재생 중에 트랙을 명시적으로 선택하지 않는 경우 플레이어는 기본 트랙" 플래그가 설정된 트랙 중 하나를 선택해야 하며, 사용자의 선호 언어와 같은 기본 설정을 고려해야 합니다.

이 옵션은 매번 다른 트랙 ID를 선택하여 여러 트랙에 적용되는 입력 파일에 대해 여러 번 사용할 수 있습니다.

--track-enabled-flag TID[:bool] | 지정된 트랙(섹션 track IDs 참조)에 대한 "track enabled" 플래그를 지정된 값 bool(0 또는 1;지정하지 않은 경우 기본값 1)으로 설정합니다. 트랙에 대한 옵션이 지정되지 않았고 원본 컨테이너가 이 정보를 제공하지 않는 경우 트랙은 기본적으로 활성화됩니다. "track enabled" 플래그가 설정된 트랙만 재생 대상으로 간주해야 합니다. 이 옵션은 매번 다른 트랙 ID를 선택하여 여러 트랙에 적용되는 입력 파일에 대해 여러 번 사용할 수 있습니다.
--forced-display-flag TID[:bool] | 선택적 인수 bool이 1로 설정되었거나 없는 경우 지정된 트랙(섹션 track IDs 참조)에 대한 "forced display" 플래그를 설정합니다. 화면 텍스트 또는 외국어 대화를 포함하는 트랙에 사용합니다. 이 옵션은 매번 다른 트랙 ID를 선택하여 여러 트랙에 적용되는 입력 파일에 대해 여러 번 사용할 수 있습니다.
--hearing-impaired-flag TID[:bool] | 선택적 인수 bool이 1로 설정되었거나 없는 경우 지정된 트랙(섹션 track IDs 참조)에 대한 "청각 장애" 플래그를 설정합니다. 트랙이 청각 장애가 있는 사용자에게 적합한 경우 이 플래그를 설정할 수 있습니다. 이 옵션은 매번 다른 트랙 ID를 선택하여 여러 트랙에 적용되는 입력 파일에 대해 여러 번 사용할 수 있습니다.
--visual-impaired-flag TID[:bool] | 선택적 인수 bool이 1로 설정되었거나 없는 경우 지정된 트랙(섹션 track IDs 참조)에 대한 "시각 장애" 플래그를 설정합니다. 트랙이 시각 장애가 있는 사용자에게 적합한 경우 이 플래그를 설정할 수 있습니다. 이 옵션은 매번 다른 트랙 ID를 선택하여 여러 트랙에 적용되는 입력 파일에 대해 여러 번 사용할 수 있습니다.
--text-descriptions-flag TID[:bool] | 선택적 인수 bool이 1로 설정되었거나 없는 경우 지정된 트랙(섹션 track IDs 참조)에 대한 "텍스트 설명" 플래그를 설정합니다. 이 플래그는 트랙에 시각 장애인 사용자를 위한 텍스트 음성 변환 시스템을 통해 재생하기에 적합한 비디오 콘텐츠에 대한 텍스트 설명이 포함된 경우 설정할 수 있습니다. 이 옵션은 매번 다른 트랙 ID를 선택하여 여러 트랙에 적용되는 입력 파일에 대해 여러 번 사용할 수 있습니다.
--original-flag TID[:bool] | 선택적 인수 bool이 1로 설정되었거나 없는 경우 지정된 트랙(섹션 track IDs 참조)에 대한 "original language" 플래그를 설정합니다. 트랙이 내용의 원본 언어(번역이 아님)인 경우 이 플래그를 설정할 수 있습니다. 이 옵션은 매번 다른 트랙 ID를 선택하여 여러 트랙에 적용되는 입력 파일에 대해 여러 번 사용할 수 있습니다.
--commentary-flag TID[:bool] | 선택적 인수 bool이 1로 설정되었거나 없는 경우 지정된 트랙(섹션 track IDs 참조)에 대한 "commonmentary" 플래그를 설정합니다. 트랙에 해설이 포함된 경우 이 플래그를 설정할 수 있습니다. 이 옵션은 매번 다른 트랙 ID를 선택하여 여러 트랙에 적용되는 입력 파일에 대해 여러 번 사용할 수 있습니다.
--track-name TID:name | 지정된 트랙의 트랙 이름을 name으로 설정합니다(섹션 track IDs 참조).
--language TID:language | 지정된 트랙의 언어를 설정합니다(섹션 track IDs 참조). ISO 639-2 언어 코드와 ISO 639-1 국가 코드가 모두 허용됩니다. 국가 코드는 자동으로 언어 코드로 변환됩니다. ISO 639-2 코드를 포함한 모든 언어는 --list-languages 옵션으로 나열할 수 있습니다. 이 옵션은 매번 다른 트랙 ID를 선택하여 여러 트랙에 적용되는 입력 파일에 대해 여러 번 사용할 수 있습니다.
-t, --tags TID:file-name | 파일 file-name에서 번호가 TID인 트랙의 태그를 읽습니다. 자세한 내용은 아래의 tags 섹션을 참조하십시오.
--aac-is-sbr TID[:0|1] | mkvmerge(1) ID가 TID인 트랙이 SBR AAC(HE-AAC 또는 AAC+라고도 함)임을 알립니다. 이 옵션은 a) 원본 파일이 AAC 파일(Matroska(tm) 파일의 경우 not)이고 b) AAC 파일에 SBR AAC 데이터가 포함되어 있는 경우에 필요합니다. 이 스위치를 사용하는 이유는 완전한 AAC 프레임을 디코딩하지 않고는 일반 AAC 데이터를 SBR AAC 데이터와 자동으로 구분하는 것이 기술적으로 불가능하기 때문입니다. AAC 디코더 mkvmerge(1)는 여러 특허 문제가 있기 때문에 이 디코딩 단계를 포함하지는 않을 것이다. 따라서 SBR AAC 파일의 경우 이 스위치는 필수 사항입니다. 스위치가 생략된 경우 결과 파일이 올바르게 재생되지 않거나 전혀 재생되지 않을 수 있습니다.

원본 파일이 Matroska(tm) 파일인 경우 CodecID만 있으면 SBR AAC를 탐지할 수 있습니다. 하지만, 만약 CodecID가 잘못되었으면 이 스위치를 사용하여 수정할 수 있습니다.

mkvmerge가 AAC 파일이 SBR임을 잘못 감지한 경우 트랙 ID에 ':0'을 추가할 수 있습니다.

--audio-emphasis TID:n|symbolic-name | Sets the emphasis for the audio track with the track ID TID. The mode can either be a number n (certain values between 0 and 16) or a symbolic name. All valid numbers & symbolic names can be listed with the --list-audio-emphasis option.
--reduce-to-core TID | 일부 오디오 코덱은 손실 없는 코어와 무손실 디코딩을 구현하는 옵션 확장자를 가지고 있습니다. 이 옵션은 mkvmerge(1)에 확장자를 복사하지 않고 코어만 복사하도록 지시합니다. 기본적으로 mkvmerge(1)는 코어와 확장자를 모두 복사합니다. 현재 DTS 트랙만 이 옵션의 영향을 받습니다. 내장형 AC-3 코어를 포함하는 TrueHD 트랙은 대신 사용자가 복사할 트랙을 선택할 수 있는 두 개의 개별 트랙으로 표시됩니다. DTS의 경우 True와 달리 HD 확장 기능을 자체적으로 디코딩할 수 없기 때문에 이러한 방식은 TrueHD 데이터 처럼 작동하지 않습니다.
--remove-dialog-normalization-gain TID | 일부 오디오 코덱은 디코더나 플레이어에게 대화 상자 정규화를 위해 (일반적으로 네거티브의) 추가를 적용하도록 지시하는 헤더 필드를 포함합니다. 이 옵션은 mkvmerge(1)에 해당 헤더 필드를 수정하여 해당 추가를 제거하거나 최소화하도록 지시합니다. 현재 AC-3' DTS 및 TrueHD 트랙만 이 옵션의 영향을 받습니다.
--timestamps TID:file-name | file-name에서 특정 트랙 ID에 사용할 타임스탬프를 읽습니다. 이러한 타임스탬프는 mkvmerge(1)가 일반적으로 계산하는 타임스탬프를 강제로 재정의합니다. external timestamp files에 대한 섹션을 읽어 보십시오.
--default-duration TID:x | 지정된 트랙의 기본 지속 시간을 지정된 값으로 강제 적용합니다. 또한 기본 기간과 일치하도록 트랙의 타임스탬프를 수정합니다. x 인수는 's', 'ms', 'us', 'ns', 'fps', 'p' 또는 'i'로 게시하여 기본 지속 시간을 초, 밀리초, 마이크로초, 나노초, 'frames per second', 'progress frames per second', 'interlaced frames per second'로 지정해야 합니다. 숫자 x 자체는 부동 소수점 숫자 또는 분수일 수 있습니다.

기본 기간이 설정되지 않으면 mkvmerge는 컨테이너 및/또는 특정 트랙 유형(예: AVC/H.264 또는 MPEG-2)에 대한 인코딩된 비트스트림으로부터 트랙의 기본 기간을 도출하려고 시도합니다.

이 옵션을 사용하면 외부 타임스탬프 파일을 사용하지 않고도 비디오 트랙의 FPS를 변경할 수 있습니다.

--fix-bitstream-timing-information TID[:0|1] | 일반적으로 mkvmerge(1)는 비디오 비트스트림에 저장된 타이밍 정보(프레임/필드 속도)를 변경하지 않습니다. 이 옵션을 사용하면 정보가 컨테이너 타이밍 정보와 일치하도록 조정됩니다. 컨테이너 타이밍 정보는 명령줄(옵션 --default-duration 참조), 소스 컨테이너 또는 비트스트림에서 파생된 다양한 소스에서 얻을 수 있습니다. Note: 이 기능은 AVC/H.264 비디오 트랙에만 구현되었습니다.
--compression TID:n | 트랙에 사용할 압축 방법을 선택합니다. 사용자는 이 방법을 지원해야 합니다. 유효한 값은 'none', 'zlib' 및 'mpeg4_p2'/'mpeg4p2'입니다. 'mpeg4_p2'/'mpeg4p2' 압축 방식은 MPEG4 파트 2 비디오 트랙에서만 사용할 수 있는 'header removal'라는 특수 압축 방식입니다. 일부 자막 유형의 기본값은 'zlib' 압축입니다. 이 압축 방법은 모든 재생 애플리케이션이 아닌 경우 가장 많이 지원하는 압축 방법입니다. 'none' 이외의 다른 압축 방법에 대한 지원은 보장되지 않습니다.

## 2.8. 비디오 트랙에만 적용되는 옵션

Option | Description
--- | ---
-f, --fourcc TID:FourCC | FourCC를 지정된 값으로 강제 적용합니다. 'MS 호환성 모드'의 비디오 트랙에서만 작동합니다.
--display-dimensions TID:widthxheight | Matroska(tm) 파일에는 재생 시 플레이어가 이미지를 스케일링해야 하는 디스플레이 속성을 설정하는 두 가지 값(디스플레이 너비 및 디스플레이 높이)이 포함되어 있습니다. 이러한 값은 '1:640x480'과 같은 이 옵션으로 설정할 수 있습니다. 값을 지정하는 또 다른 방법은 --aspect-ratio 또는 --aspect-ratio-factor 옵션을 사용하는 것입니다(아래 참조). 이러한 옵션은 상호 배타적입니다.
--aspect-ratio TID:ratio|width/height | Matroska(tm) 파일에는 재생 시 플레이어가 이미지를 스케일링해야 하는 디스플레이 속성을 설정하는 두 가지 값(디스플레이 너비 및 디스플레이 높이)이 포함되어 있습니다. 이 옵션을 사용하면 mkvmerge(1)가 이미지의 원래 너비와 높이 및 이 옵션과 함께 제공된 가로 세로 비율을 기준으로 디스플레이 너비와 디스플레이 높이를 자동으로 계산합니다. 비율은 부동소수점 번호 ratio 또는 분수 'width/height'로 지정할 수 있습니다(예: '16/9').

값을 지정하는 또 다른 방법은 --aspect-ratio-factor 또는 --display-dimensions 옵션을 사용하는 것입니다(위 및 아래 참조). 이러한 옵션은 상호 배타적입니다.

--aspect-ratio-factor TID:factor|n/d | 가로 세로 비율을 설정하는 또 다른 방법은 factor을 지정하는 것입니다. 원래 가로 세로 비율은 먼저 이 factor와 곱한 다음 나중에 목표 가로 세로 비율로 사용됩니다. 값을 지정하는 또 다른 방법은 --aspect-ratio 또는 --display-dimensions 옵션을 사용하는 것입니다(위 참조). 이러한 옵션은 상호 배타적입니다.
--cropping TID:left,top,right,bottom | 비디오 트랙의 픽셀 자르기 파라미터를 지정된 값으로 설정합니다.
--color-matrix-coefficients TID:n | 빨간색, 녹색 및 파란색 기본 색상에서 루마 및 크로마 값을 도출하는 데 사용되는 비디오의 매트릭스 계수를 설정합니다. 매개 변수 n은 0과 10 사이의 정수입니다. 유효한 값과 그 의미는 다음과 같습니다: 0: GBR, 1: BT709, 2: unspecified, 3: reserved, 4: FCC, 5: BT470BG, 6: SMPTE 170M, 7: SMPTE 240M, 8: YCOCG, 9: BT2020 non-constant luminance, 10: BT2020 constant luminance
--color-bits-per-channel TID:n | 색상 채널의 코드화된 비트 수를 설정합니다. 값이 0이면 비트 수가 지정되지 않았음을 나타냅니다.
--chroma-subsample TID:hori,vert | 수평/수직으로 제거되지 않은 모든 픽셀에 대해 Cr 및 Cb 채널에서 제거할 픽셀의 양입니다. 예: 4:2:0 크로마 하위 샘플링이 있는 비디오의 경우 파라미터를 TID:1,1로 설정해야 합니다.
--cb-subsample TID:hori,vert | 수평/수직으로 제거되지 않은 모든 픽셀에 대해 Cb 채널에서 제거할 픽셀의 양입니다. --chroma-subsample과 함께 가변적입니다. 예: 4:2:1 크로마 하위 샘플링이 있는 비디오의 경우 파라미터 --chroma-subsample을 TID:1,0으로 설정하고 Cb-subsample을 TID:1,0으로 설정해야 합니다.
--chroma-siting TID:hori,vert | 채도가 수평/수직으로 배치되는 방식을 설정합니다(0: 지정되지 않음, 1: 상단 배치, 2: 절반).
--color-range TID:n | 색상 범위의 클리핑을 설정합니다(0: 지정되지 않음, 1: 브로드캐스트 범위, 2: 전체 범위(클리핑 없음), 3: MatrixCoefficients/TransferCharacteristics에 의해 정의됨).
--color-transfer-characteristics TID:n | 비디오의 전송 특성입니다. 유효한 값과 그 의미는 다음과 같습니다: 0: reserved, 1: ITU-R BT.709, 2: unspecified, 3: reserved, 4: gamma 2.2 curve, 5: gamma 2.8 curve, 6: SMPTE 170M, 7: SMPTE 240M, 8: linear, 9: log, 10: log sqrt, 11: IEC 61966-2-4, 12: ITU-R BT.1361 extended color gamut, 13: IEC 61966-2-1, 14: ITU-R BT.2020 10 bit, 15: ITU-R BT.2020 12 bit, 16: SMPTE ST 2084, 17: SMPTE ST 428-1; 18: ARIB STD-B67 (HLG)
--color-primaries TID:n | 비디오의 색상 원본을 설정합니다. 유효한 값과 그 의미는 다음과 같습니다: 0: reserved, 1: ITU-R BT.709, 2: unspecified, 3: reserved, 4: ITU-R BT.470M, 5: ITU-R BT.470BG, 6: SMPTE 170M, 7: SMPTE 240M, 8: FILM, 9: ITU-R BT.2020, 10: SMPTE ST 428-1, 22: JEDEC P22 phosphors
--max-content-light TID:n | 단일 픽셀의 최대 밝기(Maximum Content Light Level)를 평방미터당 캔들라(cd/m²) 단위로 설정합니다. n 값은 음수가 아닌 정수여야 합니다.
--max-frame-light TID:n | 단일 전체 프레임의 최대 밝기(Maximum Frame-Average Light Level)를 평방미터당 캔들라(cd/m²) 단위로 설정합니다. n 값은 음수가 아닌 정수여야 합니다.
--chromaticity-coordinates TID:red-x,red-y,green-x,green-y,blue-x,blue-y | R/G/B 색도 좌표를 CIE 1931에서 정의한 대로 설정합니다.
--white-color-coordinates TID:x,y | CIE 1931에서 정의한 흰색 색도 좌표를 설정합니다.
--max-luminance TID:float | 최대 휘도를 평방 미터당 캔들라(cd/m²) 단위로 설정합니다. 값은 9999.99보다 작아야 합니다.
--min-luminance TID:float | 최소 휘도를 제곱미터당 캔들라(cd/m²) 단위로 설정합니다. 값은 999.9999보다 커야 합니다.
--projection-type TID:method | 사용되는 비디오 투영 방법을 설정합니다. 유효한 값은 0(직사각형 투영), 1(등사각형 투영), 2(입방체 지도 투영) 및 3(망사 투영)입니다.
--projection-private TID:data | 특정 투영에만 적용되는 개인 데이터를 설정합니다. 데이터는 "0x" 접두사가 있거나 없거나 공백이 있거나 없는 16진수로 제공되어야 합니다.
--projection-pose-yaw TID:float | 투사에 대한 요(yaw) 회전을 지정합니다.
--projection-pose-pitch TID:float | 투사에 대한 피치(pitch) 회전을 지정합니다.
--projection-pose-roll TID:float | 투사에 대한 롤(roll) 회전을 지정합니다.
--field-order TID:n | 트랙 ID TID를 사용하여 비디오 트랙의 필드 순서를 설정합니다. 순서는 다음 숫자 중 하나여야 합니다. 0: 진행도, 1: 맨 위 필드가 먼저 표시되고 맨 위 필드가 먼저 저장됨, 2: 미정 필드 순서, 6: 맨 아래 필드가 먼저 표시되고 맨 아래 필드가 먼저 저장됨, 9: 맨 아래 필드가 먼저 표시되고 맨 위 필드가 먼저 저장됨, 14: 맨 위 필드가 먼저 표시되고 맨 아래 필드가 먼저 저장됨
--stereo-mode TID:n|symbolic-name | Sets the stereo mode for the video track with the track ID TID. The mode can either be a number n between 0 and 14 or a symbolic name. All valid numbers & names can be listed with the --list-stereo-modes option.

## 2.9. 텍스트 자막 트랙에만 적용되는 옵션

Option | Description
--- | ---
--sub-charset TID:character-set | 지정된 트랙 ID의 UTF-8 자막에 대해 변환을 위한 문자 집합을 UTF-8로 설정합니다. 지정하지 않으면 문자 집합이 현재 로케일 설정에서 파생됩니다. 문자 집합은 항상 UTF-8에 저장되므로 Matroska(tm) 파일 또는 Kate 스트림에서 읽은 자막에 필요하지 않습니다. 문자 집합은 mkvmerge(1) 문자 집합 간에 변환되는 방법에 대한 설명은 text files and character sets 섹션을 참조하십시오. 이 옵션은 매번 다른 트랙 ID를 선택하여 여러 트랙에 적용되는 입력 파일에 대해 여러 번 사용할 수 있습니다.

## 2.10. 기타 옵션

Option | Description
--- | ---
-i, --identify file-name | mkvmerge(1)가 단일 파일을 탐색하고 파일 형식, 파일에 포함된 트랙 및 트랙 ID를 보고합니다. 이 옵션을 사용할 경우 허용되는 다른 옵션은 파일 이름뿐입니다. 결과에 사용되는 출력 형식은 --identification-format 옵션으로 변경할 수 있습니다.
-J file-name | 이것은 "--identification-format json --identify file-name"의 편리한 별칭입니다.
-F, --identification-format format | --identify option에서 사용하는 출력 형식을 결정합니다. text(이 옵션을 사용하지 않는 경우 기본값) 및 json 형식이 지원됩니다.

1. text 형식은 짧고 사람이 읽을 수 있습니다. 발견된 항목당 한 줄로 구성됩니다(용기, 트랙, 첨부 파일 등).

   이 형식은 구문 분석되지 않습니다. 출력은 mkvmerge(1)uses 언어로 번역됩니다(참조: --ui-language).

2. json 형식은 기계 판독 가능한 JSON 표현을 출력합니다. 이 형식은 다음 파일에 설명된 JSON 스키마를 따릅니다.

   mkvmerge-identification-output-schema-v20.json

   모든 버전의 JSON 스키마는 온라인과 공개된 소스 코드 아카이브에서 모두 사용할 수 있습니다.

--probe-range-percentage percentage | MPEG 프로그램 및 전송 스트림(.vob, .m2ts)과 같은 파일 형식은 파일에 포함된 모든 트랙을 탐지하기 위해 특정 양의 데이터를 구문 분석해야 합니다. 이 양은 원본 파일 크기의 0.3% 또는 10MB 중 더 큰 크기로 결정됩니다. 트랙이 있는 것으로 알려졌지만 찾을 수 없는 경우 이 옵션을 사용하여 probe 비율을 변경할 수 있습니다. 최소 10MB는 기본 제공되며 변경할 수 없습니다.
--list-audio-emphasis | Lists all valid numbers & their corresponding symbolic names for the --audio-emphasis option.
--list-languages | --language 옵션과 함께 사용할 수 있는 모든 언어와 해당 ISO 639-2 코드를 나열합니다.
--list-stereo-modes | Lists all valid numbers & their corresponding symbolic names for the --stereo-mode option.
-l, --list-types | 지원되는 입력 파일 형식을 나열합니다.
--priority priority | mkvmerge(1)가 실행되는 프로세스 우선 순위를 설정합니다. 유효한 값은 'lowest', 'lower', 'normal', 'higher' 및 'highest'입니다. 아무것도 주어지지 않으면 'normal'이 사용됩니다. 유닉스 계열 시스템에서 mkvmerge(1)는 nice(2) 함수를 사용합니다. 따라서 슈퍼 유저만 'higher'과 'highest'을 사용할 수 있습니다. Windows에서는 모든 사용자가 모든 값을 사용할 수 있습니다.

또한 'lowest'를 선택하면 mkvmerge(1)는 가능한 가장 낮은 프로세스 우선 순위 외에 유휴 I/O 우선 순위를 선택합니다.

--command-line-charset 문자셋 | 명령줄에 지정된 문자열을 변환할 문자 집합을 설정합니다. 기본적으로 시스템의 현재 로케일에서 지정된 문자 집합으로 설정됩니다. 이 설정은 --title, --track-name 및 --attachment-description 옵션의 인수에 적용됩니다.
--output-charset 문자셋 | 출력할 문자열을 변환할 문자셋을 정합니다. 기본값은 현재 시스템 로케일에 따른 문자셋입니다.
-r, --redirect-output 파일명 | 모든 메시지를 콘솔 대신 file-name 파일에 씁니다. 출력 리디렉션을 통해 쉽게 수행할 수 있지만 터미널이 출력을 파일에 쓰기 전에 재해석하는 경우 이 옵션이 필요한 경우가 있습니다. --output-charset으로 설정된 문자 집합이 적용됩니다.
--flush-on-close | 쓰기 위해 열린 파일을 닫을 경우 메모리에 캐시된 모든 데이터를 플러시 하도록 프로그램에게 지시합니다. 이를 통해 정전 시 데이터 손실을 방지하거나 운영 체제 또는 드라이버의 특정 문제를 방지할 수 있습니다. mkvmerge는 모든 데이터가 저장소에 기록될 때까지 기다리기 때문에 멀티플렉싱 시간이 더 오래 걸린다는 단점이 있습니다. 장단점에 대한 자세한 내용은 MKVToolNix 버그 트래커의 #2469 및 #2480호를 참조하십시오.
--ui-language 코드 | 언어 코드의 번역을 강제로 사용합니다 (예: 강제 사용할 독일어 번역 코드는 'de_DE'). 'list'를 코드로 입력하면 mkvextract(1) 에서 이용 가능한 번역 목록을 출력할 것입니다.
--abort-on-warnings | 첫 번째 경고가 발생한 후 프로그램을 중단하도록 지시합니다. 프로그램의 종료 코드는 1입니다.
--deterministic seed | 동일한 버전의 mkvmerge(1)가 동일한 원본 파일, 동일한 옵션 집합 및 동일한 시드와 함께 사용되는 경우 바이트와 동일한 파일을 만들 수 있습니다. 이 모드에서는 "날짜" 세그먼트 정보 필드가 기록되지 않습니다. 시드는 임의 문자열일 수 있으며 숫자일 필요는 없습니다. 동일 바이트 파일의 결과는 다음 조건에서만 보장됩니다.

1. libEBML과 libMatroska의 동일한 버전으로 빌드된 동일한 버전의 mkvmerge(1)가 사용됩니다.

2. 사용된 소스 파일은 동일 바이트입니다.

3. 동일한 명령줄 옵션이 동일한 순서로 사용됩니다(--output …은 예외임).

다른 버전의 mkvmerge(1) 또는 다른 명령줄 옵션을 사용하면 동일한 바이트로 동일한 파일이 생성될 수 있지만 반드시 사용되지는 않습니다.

--debug 토픽 | 특정 기능에 대해 디버깅을 켭니다. 이 기능은 개발자에게만 유용합니다.
--engage 기능 | 실험 기능을 켭니다. 사용 가능한 기능 목록은 mkvmerge --engague list와 함께 요청할 수 있습니다. 이러한 기능은 정상적인 상황에서 사용할 수 없습니다.
--gui-mode | GUI 모드를 켭니다. 이 모드에서는 GUI 동작시 무슨 일이 일어나는지 알려줄 수 있는 특별하게 형식화된 줄을 출력할 것입니다. 이 메시지들은 '#GUI#message' 형식을 따릅니다. 이 메시지 뒤에 '#GUI#message#key1=value1#key2=value2…' 형태의 키/값 쌍이 붙을 수 있습니다. 메시지나 키값들은 결코 번역되지 않고 항상 영어로 출력됩니다.
@옵션 파일.json | options-file 파일에서 추가 명령줄 인수를 읽습니다. 자세한 내용은 option files에 대한 섹션을 참조하십시오.
--capabilities | 컴파일된 옵션 기능 및 종료 기능에 대한 정보를 나열합니다. 첫 번째 줄 출력은 버전 정보입니다. 다음 행에는 기능이 컴파일되었음을 나타내는 단어가 한 개 포함되어 있습니다. 다음 기능이 있습니다.

- 'FLAC' - 원본 FLAC 파일을 읽고 다른 컨테이너(예: Ogg(tm) 또는 Matroska(tm))에서 FLAC 트랙을 처리합니다.

-h, --help | 사용법에 관한 정보를 표시하고 종료합니다.
-V, --version | 버전 정보를 표시하고 종료합니다.

# 3. 사용법

각 파일에 대해 사용자는 mkvmerge(1)를 사용해야 하는 트랙을 선택할 수 있습니다. 이 파일들은 모두 -o로 지정된 파일에 저장됩니다. 알려진(및 지원되는) 소스 형식 목록은 -l 옵션을 사용하여 얻을 수 있습니다.

Important:

명령행 옵션의 순서는 중요합니다. 프로그램을 처음 사용하면 "옵션 순서" 섹션을 읽어 주세요.

# 4. 옵션 순서

일부 옵션에서는 옵션을 입력하는 순서가 중요합니다. 옵션은 두 가지 범주로 나뉩니다.

1. 전체 프로그램에 영향을 미치며 입력 파일에 연결되지 않는 옵션입니다. 여기에는 --command-line-charset, --output 또는 --title이 포함됩니다. 이러한 항목은 명령줄의 모든 위치에 나타날 수 있습니다.

2. 단일 입력 파일 또는 입력 파일의 단일 트랙에 영향을 미치는 옵션. 이러한 옵션은 모두 명령줄의 다음 입력 파일에 적용됩니다. 동일한 입력 파일(또는 동일한 입력 파일의 트랙)에 적용되는 모든 옵션은 입력 파일 이름 앞에 모두 나타나는 한 임의의 순서로 작성될 수 있습니다. 입력 파일에 적용되는 옵션의 예로는 --no-chapterset 또는 --chapter-charset이 있습니다. 단일 트랙에 적용되는 옵션의 예로는 --default-duration 또는 --language가 있습니다.

옵션은 왼쪽에서 오른쪽으로 처리됩니다. 같은 범위 내에서 옵션이 여러 번 나타나면 마지막 항목이 사용됩니다. 따라서 제목은 "로 설정됩니다.다음 예제의 다른 항목"입니다.

    $ mkvmerge -o output.mkv --title 'This and that' input.avi --title 'Something else'

다음 예제에서는 --language 옵션을 두 번 사용하는 것이 서로 다른 범위에서 사용되므로 문제가 없음을 보여 줍니다. 같은 트랙 ID에 적용되더라도 다른 입력 파일에 적용되므로 범위가 다릅니다.

    $ mkvmerge -o output.mkv --language 0:fre français.ogg --language 0:deu deutsch.ogg

# 5. 보기

MyMovie라는 파일과MyMovie.wav'와 같은 별도의 파일의 오디오 트랙이 있다고 가정합니다. 먼저 오디오를 OggVorbis(tm)로 인코딩합니다.

    $ oggenc -q4 -oMyMovie.ogg MyMovie.wav

몇 분 후에 비디오 및 오디오에 접근할 수 있습니다.

    $ mkvmerge -o MyMovie-with-sound.mkv MyMovie.avi MyMovie.ogg

AVI에 오디오 트랙이 이미 포함되어 있으면 해당 트랙도 복사됩니다(mkvmerge(1)가 오디오 형식을 지원하는 경우). 그렇지 않으려면 간단히 하십시오.

    $ mkvmerge -o MyMovie-with-sound.mkv -A MyMovie.avi MyMovie.ogg

몇 분간의 고려 후에 다른 오디오 트랙(예: 감독의 코멘트나 다른 언어)을 'MyMovie-add-audio.wav'로 리핑합니다. 다시 인코딩하고 다른 파일과 결합합니다.

    $ oggenc -q4 -oMyMovie-add-audio.ogg MyMovie-add-audio.wav
    $ mkvmerge -o MM-complete.mkv MyMovie-with-sound.mkv MyMovie-add-audio.ogg

같은 결과를 얻을 수 있습니다.

    $ mkvmerge -o MM-complete.mkv -A MyMovie.avi MyMovie.ogg MyMovie-add-audio.ogg

이제 mplayer(tm)를 켜고 즐기세요. 오디오 트랙이 여러 개 있는 경우(또는 비디오 트랙도) '-vid' 및 '-aid' 옵션으로 재생할 트랙을 mplayer(tm)에 알려줄 수 있습니다. 이들은 0 기반이며 비디오와 오디오를 구분하지 않습니다.

오디오 트랙을 동기화해야 하는 경우 쉽게 동기화할 수 있습니다. 먼저 Vorbis 트랙의 트랙 ID를 확인합니다.

    $ mkvmerge --identify outofsync.ogg

이제 다음 명령줄에서 해당 ID를 사용할 수 있습니다.

    $ mkvmerge -o goodsync.mkv -A source.avi -y 12345:200 outofsync.ogg

이렇게 하면 오디오 트랙의 시작 부분에서 'outofsync.ogg'에서 가져온 ID 12345로 200ms의 무음이 추가됩니다.

일부 동영상은 올바르게 동기화되기 시작하지만 서서히 동기화되지 않습니다. 이러한 종류의 동영상의 경우 모든 타임스탬프에 적용되는 지연 계수를 지정할 수 있습니다. 데이터는 추가 또는 제거되지 않습니다. 그래서 그 요인을 너무 크거나 작게 만들면 좋지 않은 결과를 얻을 수 있습니다. 예를 들어, 트랜스코딩한 에피소드는 77340프레임의 영화의 마지막 부분에서 0.2초 동안 동기화되지 않았습니다. 이는 29.97fps 0.2초에서 약 6프레임에 해당합니다. 그래서

    $ mkvmerge -o goodsync.mkv -y 23456:0,77346/77340 outofsync.mkv

좋은 결과였습니다.

동기화 옵션은 동일한 방식으로 자막에 사용할 수도 있습니다.

텍스트 자막의 경우 일부 Windows 소프트웨어(SubRipper(tm) 등) 또는 'contrib/subrip' 디렉터리의 transcode(1) 소스에 있는 subrip(tm) 패키지를 사용할 수 있습니다. 일반적인 프로세스는 다음과 같습니다.

1. 소스에서 원시 자막 스트림을 추출합니다:

       $ tccat -i /path/to/copied/dvd/ -T 1 -L | tcextract -x ps1 -t vob -a 0x20 | subtitle2pgm -o mymovie

2. 결과물 PGM 영상을 gocr 텍스트로 변환합니다.

       $ pgm2txt mymovie

3. 결과 텍스트 파일의 철자를 검사합니다.

       $ ispell -d american *txt

4. 텍스트 파일을 SRT 파일로 변환합니다.

       $ srttool -s -w -i mymovie.srtx -o mymovie.srt

결과 파일은 mkvmerge(1)의 다른 입력 파일로 사용될 수 있습니다.

    $ mkvmerge -o mymovie.mkv mymovie.avi mymovie.srt

특정 트랙에 대한 언어를 지정하려면 이 작업을 쉽게 수행할 수 있습니다. 먼저 해당 언어의 ISO 639-2 코드를 확인합니다. mkvmerge(1)는 다음과 같은 모든 코드를 나열할 수 있습니다.

    $ mkvmerge --list-languages

목록에서 필요한 언어를 검색합니다. 두 개의 오디오 트랙을 Matroska(tm) 파일에 넣고 해당 언어 코드를 설정하려고 하며 트랙 ID가 2와 3이라고 가정합니다. 이 작업은 다음과 같이 수행할 수 있습니다.

    $ mkvmerge -o with-lang-codes.mkv --language 2:ger --language 3:dut without-lang-codes.mkv

보시다시피 --language 스위치를 여러 번 사용할 수 있습니다.

사용자가 네덜란드어를 기본 언어로 사용하도록 할 수도 있습니다. 또한 영어 및 프랑스어 자막과 같은 추가 자막이 있으며 사용자가 기본적으로 프랑스어 자막을 표시하도록 할 수 있습니다. 이 작업은 다음과 같이 수행할 수 있습니다.

    $ mkvmerge -o with-lang-codes.mkv --language 2:ger --language 3:dut --default-track-flag 3 without-lang-codes.mkv --language 0:eng english.srt --default-track-flag 0 --language 0:fre french.srt

mkvinfo(1)의 출력에 지정한 언어 또는 기본 트랙 플래그가 표시되지 않으면 default values에 대한 섹션을 참조하십시오.

입력 파일에 대한 압축을 해제합니다.

    $ mkvmerge -o no-compression.mkv --compression -1:none MyMovie.avi --compression -1:none mymovie.srt

# 6. 트랙 ID

## 6.1. 일반 트랙 ID

mkvmerge(1)에 대한 일부 옵션은 트랙 ID가 있어야 적용할 트랙을 지정할 수 있습니다. 이러한 트랙 ID는 현재 입력 파일의 압축을 풀 때 또는 mkvmerge(1)가 --identify 옵션으로 호출되는 경우 판독기에 의해 인쇄됩니다. 이러한 출력의 예는 다음과 같습니다.

    $ mkvmerge -i v.mkv
    File 'v.mkv': container: Matroska
    Track ID 0: video (V_MS/VFW/FOURCC, DIV3)
    Track ID 1: audio (A_MPEG/L3)

출력 MKV 파일에 배치된 트랙에 할당된 트랙 ID를 입력 파일의 트랙 ID와 혼동하지 마십시오. 입력 파일 트랙 ID만 이러한 값이 필요한 옵션에 사용됩니다.

또한 각 입력 파일에는 고유한 트랙 ID 세트가 있습니다. 따라서 'mkvmerge --identify'에서 보고한 'file1.ext' 파일의 트랙 ID는 다른 입력 파일이 얼마나 많든 'file1.ext'가 어느 위치에 사용되든 변경되지 않습니다.

트랙 ID는 다음과 같이 할당됩니다.

- AVI 파일: 비디오 트랙의 ID는 0입니다. 오디오 트랙은 1부터 오름차순으로 ID를 가져옵니다.

- AAC, AC-3, MP3, SRT 및 WAV 파일: 해당 파일의 '트랙'은 ID 0을 받습니다.

- 다른 대부분의 파일: 트랙 ID는 0부터 시작하는 파일에서 트랙을 찾는 순서대로 할당됩니다.

트랙 ID를 사용하는 옵션은 설명에 'TID'가 포함된 옵션입니다. --audio tracks, --video-tracks, --subtitle-tracks, --button-tracks 및 --track-tags도 사용합니다.

## 6.2. 특수 트랙 ID

식별 출력에는 특별한 의미를 가지며 발생하지 않는 여러 ID가 있습니다.

특수 트랙 ID '-1'은 와일드 카드이며 입력 파일에서 읽은 모든 트랙에 지정된 스위치를 적용합니다.

특수 트랙 ID '-2'는 소스 파일의 장을 나타냅니다. 현재 --sync 옵션만 이 특수 ID를 사용합니다. --sync-2:…의 대안으로 --chapter-sync… 옵션을 사용할 수 있습니다.

# 7. Language handling

Matroska(tm) has support for two different types of language elements: the old, deprecated "Language" element containing ISO 639-2 alpha 3 codes and the new "LanguageIETF" tags containing IETF BCP 47 language tags. All of mkvmerge(1)'s options that accept a language accept a BCP 47 language tag. mkvmerge(1) will derive the value for the deprecated "Language" element from the BCP 47 language tags wherever possible.

When identifying a file in JSON mode, existing "LanguageIETF" track header elements will be output as the language_ietf track property.

When writing a file mkvmerge(1) will always write the "LanguageIETF", "ChapLanguageIETF" and "TagLanguageIETF" elements (the latter two only if chapters or tags are written respectively). In addition to those elements the corresponding old elements will be written; they'll be set to the ISO 639-2 code portion of the BCP 47 language tag. For example, when the track language is set to sr-Cyrl-RS "LanguageIETF" will be set to sr-Cyrl-RS and the old "Language" element will be set to srp.

When reading existing files (Matroska files, XML chapter or tag files etc.) that already contain "…LanguageIETF" elements the existing elements will be kept. Otherwise "…LanguageIETF" elements will be added based on command-line options and other existing deprecated "…Language" elements.

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.

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

Note:

이 섹션은 mkvmerge(1)만 언급되더라도 MKVToolNix의 모든 프로그램에 적용됩니다.

## 8.1. 소개

Matroska(tm) 파일의 모든 텍스트는 UTF-8로 인코딩됩니다. 이것은 mkvmerge(1)가 읽는 모든 텍스트 파일뿐만 아니라 명령행에 주어진 모든 텍스트를 UTF-8로 변환해야 한다는 것을 의미합니다. 또한 mkvmerge(1)의 출력을 UTF-8에서 해당 문자 집합으로 다시 변환해야 합니다. 예를 들어, 영어가 아닌 번역이 --ui-language와 함께 사용되는 경우 또는 Matroska(tm) 파일을 원본 텍스트로 변환해야 합니다.

mkvmerge(1)는 바이트 순서 마커(짧은 길이: BOM) 또는 시스템의 현재 로케일의 존재에 따라 이 변환을 자동으로 수행합니다. 문자 집합이 로케일에서 추론되는 방법은 mkvmerge(1)가 실행되는 운영 체제에 따라 다릅니다.

## 8.2. 바이트 순서 표시 (BOM)

BOM으로 시작하는 텍스트 파일은 UTF-8, UTF-16 little, big endian, UTF-32 little, big endian의 다섯 가지 모드를 지원합니다. BOM이 있는 텍스트 파일은 자동으로 UTF-8로 변환됩니다. 그렇지 않으면 해당 파일의 문자 집합을 설정하는 모든 매개 변수(예: --sub-charset)는 자동으로 무시됩니다.

## 8.3. MacOS를 포함한 Linux 및 Unix 계열 시스템

유닉스 계열 시스템에서 mkvmerge(1)는 환경 변수 LANG, LC_ALL, LC_CYPE을 사용하는 setlocale(3) 시스템 호출을 사용합니다. 결과 문자 집합은 종종 UTF-8이나 ISO-8859-* 계열 중 하나이며 모든 텍스트 파일 작업과 명령줄의 문자열 인코딩 및 콘솔 출력에 사용됩니다.

## 8.4. 윈도우

Windows에서 텍스트 파일을 변환하는 데 사용되는 기본 문자 집합은 GetACP() 시스템 호출에 의해 결정됩니다.

명령줄 읽기는 이미 유니코드 문자열을 반환하는 GetCommandLineW() 함수를 사용하여 수행됩니다. 따라서 --command-line-charset 옵션은 Windows에서 무시됩니다.

콘솔 출력은 세 가지 시나리오로 구성됩니다:

1. 출력이 --redirect-output 옵션으로 리디렉션되는 경우 기본 문자 집합은 UTF-8입니다. --output-charset을 사용하여 변경할 수 있습니다.

2. 출력이 cmd.exe 자체(예: mkvinfo file.mkv > info.txt)로 리디렉션되는 경우 문자 집합은 항상 UTF-8이며 변경할 수 없습니다.

3. 그렇지 않으면(콘솔에 직접 쓸 때) Windows 기능 WriteConsoleW()가 사용되며 --output-charset 옵션은 무시됩니다. 콘솔은 해당 언어 지원이 설치된 모든 유니코드 문자를 출력할 수 있어야 합니다(예: 영어 Windows 버전에서는 중국어 문자가 표시되지 않을 수 있음).

## 8.5. 명령행 옵션

문자 집합을 지정할 수 있는 옵션은 다음과 같습니다:

- --sub-charset 파일 및 문자 집합을 명확하게 결정할 수 없는 컨테이너 형식으로 저장된 텍스트 자막 트랙의 하위 문자 집합(예: Ogg 파일)

- --chapter-charset 챕터 텍스트 파일 및 문자 집합을 명확하게 결정할 수 없는 컨테이너 형식으로 저장된 챕터 및 파일 제목(예: 챕터 정보, 트랙 및 파일 제목용 Ogg 파일, 챕터 정보용 MP4 파일),

- --command-line-charset 명령행의 모든 문자열에 대해

- --output-charset은 콘솔 또는 파일에 기록된 모든 문자열에 대해 --redirect-output 옵션을 사용하여 출력이 리디렉션된 경우 사용합니다. Windows가 아닌 시스템에서 출력 문자 집합의 기본값은 시스템의 현재 문자 집합입니다. Windows의 경우 --redirect-output과 cmd.exe 자체(예: mkvinfo file.mkv > info.txt)로 리디렉션하기 위해 UTF-8로 기본 설정됩니다.

# 9. 옵션 파일

옵션 파일은 파일 mkvmerge(1)이며 추가 명령줄 인수를 읽을 수 있습니다. 이것은 제한된 명령행 길이와 같은 외부 프로그램을 실행할 때 셸이나 운영 체제의 특정 제한을 피하기 위해 사용될 수 있습니다.

옵션 파일에는 JSON 형식의 데이터가 포함됩니다. 콘텐츠는 JSON 문자열로만 구성된 유효한 JSON 배열이어야 합니다. 파일의 인코딩은 UTF-8이어야 합니다. 파일은 BOM로 시작하면 안 되지만 있으면 건너뜁니다.

JSON 내부의 특수 문자를 이스케이프하기 위한 규칙은 JSON 공식 사양인 RFC 7159에 있습니다.

옵션 파일의 이름 자체는 '@' 문자의 접두사로 된 명령줄 인수로 지정해야 합니다.

명령행 'mkvmerge -o "myfile.mkv" -A "movie.avi" sound.ogg'를 'options.json'라는 JSON 옵션 파일로 변환할 수 있습니다.

    [
      "-o",
      "c:\\Matroska\\my file.mkv",
      "--title",
      "#65",
      "-A",
      "a movie.avi",
      "sound.ogg"
    ]

그러면 해당 명령은 'mkvmerge @options.json'가 됩니다.

# 10. 파일 링크

Matroska(tm)는 단순히 특정 파일이 현재 파일의 이전 또는 후속 파일이라고 말하는 파일 연결을 지원합니다. 정확히 말하면, 실제로 연결된 것은 파일이 아니라 Matroska(tm) 세그먼트입니다. 대부분의 파일들은 하나의 Matroska(tm) 세그먼트만 포함할 수 있기 때문에, 다음 설명은 '파일 연결'이라는 용어를 사용하지만 '세그먼트 연결'이 더 적절합니다.

각 세그먼트는 고유한 128비트 폭 세그먼트 UID로 식별됩니다. 이 UID는 mkvmerge(1)에 의해 자동으로 생성됩니다. 연결은 주로 이전/다음 파일의 세그먼트 UID(짧은 길이: SID)를 세그먼트 헤더 정보에 넣는 방식으로 이루어집니다. mkvinfo(1) 이 SIDs를 찾으면 인쇄합니다.

파일을 여러 개의 작은 파일로 분할하고 링크를 사용하면 타임스탬프가 0에서 다시 시작되지 않고 마지막 파일이 남아 있는 곳에서 계속됩니다. 이렇게 하면 이전 파일을 사용할 수 없는 경우에도(예: 스트리밍할 때) 절대 시간이 유지됩니다. 링크가 사용되지 않으면 타임스탬프는 각 파일에 대해 0부터 시작됩니다. 기본적으로 mkvmerge(1)는 파일 연결을 사용하지 않습니다. 원하는 경우 --link 옵션을 사용하여 설정할 수 있습니다. 이 옵션은 분할도 활성화된 경우에만 유용합니다.

분할의 활성 여부와 상관없이 사용자는 mkvmerge(1)에게 생성된 파일을 특정 SIDs에 연결하도록 지시할 수 있습니다. 이 작업은 --link-to-previous 및 --link-to-next 옵션을 사용하여 수행됩니다. 이러한 옵션은 mkvinfo(1)가 출력하는 형식의 세그먼트 SID를 허용합니다. 예를 들어 '0x410xda 0x730x660xd90xcf 0xb20 0x1e 0x780xebb4 0x5 0xca0x93'과 같이 각각 접두사 0x00과 0xff 사이의 '0x'접두사를 사용한 16진수입니다. 또는 '0x' 접두사를 사용하지 않고 공백 없이 0x00과 0xff 사이의 16진수 숫자 16개를 사용할 수 있습니다(예: '41da7366d9cfb21e78eb45ecab393'

분할을 사용하는 경우 첫 번째 파일은 --link-to-previous로 지정된 SID에 연결되고 마지막 파일은 --link-to-next로 지정된 SID에 연결됩니다. 분할을 사용하지 않으면 하나의 출력 파일이 두 SIDs 모두에 연결됩니다.

# 11. 기본값

Matroska(tm) 규격에는 일부 요소가 기본값을 가지고 있다고 명시되어 있습니다. 일반적으로 공간을 절약하기 위해 요소 값이 기본값과 같으면 요소가 파일에 기록되지 않습니다. 사용자가 mkvinfo(1)의 출력에서 놓칠 수 있는 요소는 language와 default track flag 요소입니다. language의 기본값은 영어('eng')이고 default track flag에 대한 기본값은 true입니다. 따라서 --language 0:eng을 트랙에 사용한 경우 mkvinfo(1)의 출력에 표시되지 않습니다.

# 12. 첨부 파일

또한 사진을 Matroska(tm) 파일과 함께 보관하거나 SSA 자막을 사용 중이므로 매우 드문 특수 TrueType(tm) 글꼴이 필요할 수 있습니다. 이러한 경우 해당 파일을 Matroska(tm) 파일에 첨부할 수 있습니다. 이러한 파일은 파일에 추가되지 않고 파일에 포함됩니다. 사용자는 이러한 파일('사진' 케이스)을 보여주거나 자막('TrueType(tm) 폰트' 케이스)을 렌더링하는 데 사용할 수 있습니다.

출력 파일에 사진 및 TrueType(tm) 글꼴을 첨부하는 방법은 다음과 같습니다.

    $ mkvmerge -o output.mkv -A video.avi sound.ogg \
      --attachment-description "Me and the band behind the stage in a small get-together" \
      --attachment-mime-type image/jpeg \
      --attach-file me_and_the_band.jpg \
      --attachment-description "The real rare and unbelievably good looking font" \
      --attachment-mime-type application/octet-stream \
      --attach-file really_cool_font.ttf

첨부 파일이 포함된 Matroska(tm) 파일을 입력 파일로 사용하는 경우 mkvmerge(1)는 첨부 파일을 새 파일로 복사합니다. 복사된 첨부 파일과 복사되지 않은 첨부 파일 선택 항목은 --attachments 및 --no-attachments 옵션을 사용하여 변경할 수 있습니다.

# 13. 챕터

Matroska(tm) 챕터 시스템은 OGM 파일에 사용되는 오래된 알려진 시스템보다 더 강력합니다. 전체 사양은 the Matroska website에서 확인할 수 있습니다.

mkvmerge(1)는 두 가지 종류의 챕터 파일을 입력으로 지원합니다. '단순 챕터 형식'이라고 불리는 첫 번째 형식은 OGM 도구가 기대하는 형식과 동일합니다. 두 번째 형식은 Matroska(tm)의 모든 챕터 기능을 지원하는 XML 기반 장 형식입니다.

전용 챕터 파일 외에도 mkvmerge(1)는 다른 파일 형식(예: MP4, Ogg, Blu-ray 또는 DVD)의 챕터를 읽을 수 있습니다.

## 13.1. 간단한 챕터 형식

이 형식은 각각 'CHAPterxx=' 및 'CHAPterxxNAME='로 시작하는 행 쌍으로 구성됩니다. 첫 번째 타임스탬프는 시작 타임스탬프를 포함하고 두 번째 타임스탬프는 제목을 포함합니다. 다음은 예시입니다.

    CHAPTER01=00:00:00.000
    CHAPTER01NAME=Intro
    CHAPTER02=00:02:30.000
    CHAPTER02NAME=Baby prepares to rock
    CHAPTER03=00:02:42.300
    CHAPTER03NAME=Baby rocks the house

mkvmerge(1) will transform every pair or lines into one Matroska(tm) ChapterAtom. It does not set any ChapterTrackNumber which means that all chapters apply to all tracks in the file.

텍스트 파일이기 때문에 문자 집합 변환이 필요할 수 있습니다. mkvmerge(1)가 문자 집합을 변환하는 방법에 대한 설명은 text files and character sets섹션을 참조하십시오.

## 13.2. XML 기반의 챕터 형식

XML 기반 챕터 형식은 다음과 같습니다.

    <?xml version="1.0" encoding="ISO-8859-1"?>
    <!DOCTYPE Chapters SYSTEM "matroskachapters.dtd">
    <Chapters>
      <EditionEntry>
        <ChapterAtom>
          <ChapterTimeStart>00:00:30.000</ChapterTimeStart>
          <ChapterTimeEnd>00:01:20.000</ChapterTimeEnd>
          <ChapterDisplay>
            <ChapterString>A short chapter</ChapterString>
            <ChapterLanguage>eng</ChapterLanguage>
          </ChapterDisplay>
          <ChapterAtom>
            <ChapterTimeStart>00:00:46.000</ChapterTimeStart>
            <ChapterTimeEnd>00:01:10.000</ChapterTimeEnd>
            <ChapterDisplay>
              <ChapterString>A part of that short chapter</ChapterString>
              <ChapterLanguage>eng</ChapterLanguage>
            </ChapterDisplay>
          </ChapterAtom>
        </ChapterAtom>
      </EditionEntry>
    </Chapters>

이 형식을 사용하면 간단한 챕터 형식으로는 가능하지 않은 세 가지가 가능합니다.

1. 챕터 끝에 대한 타임스탬프를 설정할 수 있습니다.

2. 챕터는 중첩될 수 있습니다.

3. 언어와 국가는 설정할 수 있습니다.

mkvtoolix 배포판에는 기본으로 사용할 수 있는 몇 가지 샘플 파일이 doc 하위 디렉터리에 포함되어 있습니다.

다음은 지원되는 XML 태그, 데이터 유형 및 해당 값의 유효한 범위(해당하는 경우)를 나열합니다.

    Chapters (master)
      EditionEntry (master)
        EditionUID (unsigned integer, valid range: 1 <= value)
        EditionFlagHidden (unsigned integer, valid range: 0 <= value <= 1)
        EditionFlagDefault (unsigned integer, valid range: 0 <= value <= 1)
        EditionFlagOrdered (unsigned integer, valid range: 0 <= value <= 1)
        ChapterAtom (master)
          ChapterAtom (master)
          ChapterUID (unsigned integer, valid range: 1 <= value)
          ChapterTimeStart (unsigned integer)
          ChapterTimeEnd (unsigned integer)
          ChapterFlagHidden (unsigned integer, valid range: 0 <= value <= 1)
          ChapterFlagEnabled (unsigned integer, valid range: 0 <= value <= 1)
          ChapterSegmentUID (binary, valid range: 1 <= length in bytes)
          ChapterSegmentEditionUID (unsigned integer, valid range: 1 <= value)
          ChapterPhysicalEquiv (unsigned integer)
          ChapterTrack (master)
            ChapterTrackNumber (unsigned integer, valid range: 1 <= value)
          ChapterDisplay (master)
            ChapterString (UTF-8 string)
            ChapterLanguage (UTF-8 string)
            ChapterCountry (UTF-8 string)
          ChapterProcess (master)
            ChapterProcessCodecID (unsigned integer)
            ChapterProcessPrivate (binary)
            ChapterProcessCommand (master)
              ChapterProcessTime (unsigned integer)
              ChapterProcessData (binary)

## 13.3. Blu-ray에서 챕터 읽기

mkvmerge(1)는 암호화되지 않은 Blu-ray의 챕터를 읽을 수 있습니다. 이를 위해 --chapters 매개 변수를 사용하여 MPLS 재생 목록 중 하나의 경로를 사용할 수 있습니다.

예시: --chapters /srv/blurays/BigBuckBunny/BDMV/PLAYLIST/00001.mpls

## 13.4. DVD에서 챕터 읽기

MKVToolNix가 libdvdvdread(tm) 라이브러리로 컴파일되면 mkvmerge(1)는 DVD에서 장을 읽을 수 있습니다. 이를 위해 --chapters 매개 변수를 사용하여 DVD의 폴더 또는 파일 중 하나에 대한 경로를 사용할 수 있습니다. DVD에는 둘 이상의 제목이 포함될 수 있고 각 제목에는 고유한 챕터 집합이 있으므로 파일 이름 인수 끝에 콜론과 원하는 제목 번호를 추가할 수 있습니다. 제목 번호는 1로 기본 설정됩니다.

예시: --chapters /srv/dvds/BigBuckBunny/VIDEO_TS:2

## 13.5. 일반적인 주의사항

파일을 분할할 때 mkvmerge(1)도 올바르게 챕터를 조정합니다. 즉, 각 파일에 적용되는 장 항목만 포함되며, 각 출력 파일의 새 타임스탬프와 일치하도록 타임스탬프가 오프셋됩니다.

--no-filename 옵션을 사용하여 이 옵션을 명시적으로 사용하지 않도록 설정하지 않은 경우 Matroska(tm) 원본 파일에서 챕터를 복사할 수 있습니다. 모든 소스(Matroska(tm) 파일, Ogg 파일, MP4 파일, 챕터 텍스트 파일)의 챕터들은 일반적으로 병합되지 않고 별도의 ChapterEdition으로 끝납니다. 동일한 버전의 UID를 공유하는 여러 Matroska(tm) 또는 XML 파일에서 챕터를 읽는 경우에만 챕터가 단일 ChapterEdition으로 병합됩니다. 다른 상황에서도 병합이 필요한 경우, 사용자는 mkvextract(1)를 사용하여 모든 소스에서 챕터를 추출해야 합니다. 먼저 XML 파일을 수동으로 병합한 후 나중에 병합해야 합니다.

# 14. 태그

## 14.1. 소개

Matroska(tm)의 태그 시스템은 KEY=VALUE 쌍의 집합인 다른 컨테이너의 태그 시스템과 유사합니다. 그러나 Matroska(tm)에서 이러한 태그는 중첩될 수 있으며 KEY와 VALUE는 모두 고유한 요소입니다. 예제 파일 example-tags-2.xml은 이 시스템의 사용 방법을 보여 줍니다.

## 14.2. 태그 범위

Matroska(tm) 태그는 전체 파일에 자동으로 적용되지 않습니다. 파일의 여러 부분, 즉 하나 이상의 트랙, 하나 이상의 챕터, 또는 둘의 조합에도 적용할 수 있습니다. Matroska 명세서는 이 사실에 대해 더 자세히 설명합니다.

한 가지 중요한 사실은 태그가 Targets Matroska(tm) 태그 요소를 가진 트랙이나 장에 연결된다는 것이고, 이 링크에 사용되는 UID는 모든 곳에서 사용되는 트랙 ID는not mkvmerge(1) 이라는 것입니다. 대신 사용되는 숫자는 mkvmerge(1)가 자동으로 계산하거나(트랙이 Matroska(tm)가 아닌 파일 형식에서 가져온 경우) 트랙의 소스 파일이 Matroska(tm) 파일인 경우 소스 파일에서 복사되는 UID입니다. 따라서 파일이 mkvmerge(1)로 넘겨지기 전에 태그 파일에 어떤 UID를 사용해야 하는지 알기는 어렵습니다.

Matroska(tm) 파일에 태그를 추가할 수 있는 두 가지 옵션: --global-tags 및 --tags 옵션이 있습니다. 차이점은 이전 옵션인 --global-tags는 위에서 언급한 Targets 요소를 제거하여 태그를 전체 파일에 적용한다는 것입니다. 후자 옵션인 --tags는 --tags 옵션의 TID 부분으로 지정된 태그에 대해 mkvmerge(1)가 생성하는 UID를 자동으로 삽입합니다.

## 14.3. 예

AVI에서 읽은 비디오 트랙에 태그를 추가하려고 합니다. mkvmerge --identify file.avi는 비디오 트랙의 ID(이 ID를 UID와 혼합하지 않음!)가 0임을 알려줍니다. 태그 파일을 생성하고 모든 Targets 요소를 생략하고 mkvmerge(1)를 호출합니다.

    $ mkvmerge -o file.mkv --tags 0:tags.xml file.avi

## 14.4. 태그 파일 형식

&vmerge;는 XML 기반 태그 파일 형식을 지원합니다. 이 형식은 Matroska specification에 따라 매우 밀접하게 모델링되었습니다. MKVToolNix의 바이너리 배포판과 소스 배포판 모두 example-tags-2.xml샘플 파일과 함께 제공되며, 단순히 알려진 모든 태그를 나열하고 실제 태그 파일의 기준으로 사용할 수 있습니다.

기본은 다음과 같습니다:

- 가장 바깥쪽 요소는 <Tags> 여야만 합니다.

- 논리 태그 하나가 <Tag> XML tags의 한 쌍 안에 포함되어 있습니다.

- 태그 내용 바로 앞과 뒤에 있는 공백은 무시됩니다.

## 14.5. 데이터 형식

새로운 Matroska(tm) 태깅 시스템은 UTF-8 문자열과 이진 유형이라는 두 가지 데이터 유형만 알고 있습니다. 첫 번째 유형은 태그 이름과 <String> 요소에 사용되며, 이진 유형은 <Binary> 요소에 사용됩니다.

이진 데이터 자체는 XML 파일 mkvmerge(1)에 맞지 않기 때문에 이진 데이터를 저장하는 두 가지 다른 방법을 지원합니다. XML 태그의 내용이 '@'로 시작하는 경우 다음 텍스트는 파일 이름으로 처리됩니다. 해당 파일의 내용이 Matroska(tm) 요소에 복사됩니다.

그렇지 않으면 데이터가 Base64로 인코딩될 것으로 예상됩니다. 이진 데이터를 제한된 ASCII 문자 집합으로 변환하는 인코딩으로, 예를 들어 전자 메일 프로그램에서 사용됩니다. mkvextract(1)는 이진 요소에 대해 Base64 인코딩된 데이터를 출력합니다.

권장되지 않는 태그 시스템은 공식 태그 사양에서 찾을 수 있는 몇 가지 데이터 유형을 더 알고 있습니다. mkvmerge(1)는 더 이상 이 시스템을 지원하지 않으므로, 이러한 유형은 여기에 설명되어 있지 않습니다.

## 14.6. XML 파일 형식의 알려진 태그

다음은 지원되는 XML 태그, 데이터 유형 및 해당 값의 유효한 범위(해당하는 경우)를 나열합니다.

    Tags (master)
      Tag (master)
        Targets (master)
          TargetTypeValue (unsigned integer)
          TargetType (UTF-8 string)
          TrackUID (unsigned integer)
          EditionUID (unsigned integer)
          ChapterUID (unsigned integer)
          AttachmentUID (unsigned integer)
        Simple (master)
          Simple (master)
          Name (UTF-8 string)
          TagLanguage (UTF-8 string)
          DefaultLanguage (unsigned integer)
          String (UTF-8 string)
          Binary (binary)

# 15. 세그먼트 정보

세그먼트 정보 XML 파일을 사용하면 Matroska(tm) 파일의 "세그먼트 정보" 헤더 필드에 특정 값을 설정할 수 있습니다. 이러한 모든 값은 다른 명령줄 옵션을 통해 설정할 수 없습니다.

기타 "세그먼트 정보"헤더 필드는 명령줄 옵션을 통해 설정할 수 있지만 XML 파일을 통해 설정할 수는 없습니다. 여기에는 --title 및 --timestamp-scale 옵션이 포함됩니다.

명령줄 옵션이나 XML 파일을 통해 설정할 수 없는 다른 요소도 있습니다. 여기에는 DateUTC( "muxing date"라고도 함), MuxingApp, WritingApp 및 Duration이 포함됩니다. 그것들은 항상 mkvmerge(1) 자체에 의해 설정됩니다.

다음은 지원되는 XML 태그, 데이터 유형 및 해당 값의 유효한 범위(해당하는 경우)를 나열합니다.

    Info (master)
      SegmentUID (binary, valid range: length in bytes == 16)
      SegmentFilename (UTF-8 string)
      PreviousSegmentUID (binary, valid range: length in bytes == 16)
      PreviousSegmentFilename (UTF-8 string)
      NextSegmentUID (binary, valid range: length in bytes == 16)
      NextSegmentFilename (UTF-8 string)
      SegmentFamily (binary, valid range: length in bytes == 16)
      ChapterTranslate (master)
        ChapterTranslateEditionUID (unsigned integer)
        ChapterTranslateCodec (unsigned integer)
        ChapterTranslateID (binary)

# 16. Matroska 파일 레이아웃

Matroska(tm) 파일 레이아웃은 매우 유연합니다. &vmerge;는 미리 정의된 방식으로 파일을 렌더링합니다. 결과 파일은 다음과 같습니다:

[EBML head] [segment {meta seek #1} [segment information] [track information] {attachments} {chapters} [cluster 1] {cluster 2} ... {cluster n} {cues} {meta seek #2} {tags}]

중괄호의 요소는 선택 사항이며 사용된 내용과 옵션에 따라 다릅니다. 몇 가지 메모:

- 메타탐색 #1은 소수의 레벨 1 요소만 포함하며, 첨부 파일, 챕터, 큐, 태그, 메타탐색 #2가 실제로 존재하는 경우에만 포함됩니다. 이전 버전의 mkvmerge(1)도 클러스터를 이 메타탐색 요소에 넣는 데 사용되었습니다. 그러므로 충분한 공간을 확보하기 위해서는 약간의 부정확한 추측이 필요합니다. 종종 실패할 가능성이 있습니다. 이제 클러스터만 메타탐색 #2에 저장되며 메타탐색 #1은 메타탐색 요소 #2를 참조합니다.

- 첨부 파일, 장 및 태그 요소는 추가된 경우에만 표시됩니다.

가능한 가장 짧은 Matroska(tm) 파일은 다음과 같습니다.

[EBML head] [segment [segment information] [track information] [cluster 1]]

이는 오디오 전용 파일의 경우일 수 있습니다.

# 17. 외부 타임스탬프 파일

사용자가 직접 특정 트랙의 타임스탬프를 선택할 수 있습니다. 이것은 가변 프레임률 비디오로 파일을 만들거나 오디오에 공백을 포함하기 위해 사용될 수 있습니다. 이 경우 프레임은 mkvmerge(1)가 Matroska(tm) 블록별로 별도로 생성하는 단위입니다. 비디오의 경우 정확히 하나의 프레임이고 오디오의 경우 특정 오디오 유형의 패킷입니다. 예를 들어 AC-3의 경우 1536개의 샘플을 포함하는 패킷입니다.

트랙이 서로 추가될 때 사용되는 타임스탬프 파일은 트랙 체인의 첫 번째 부분에 대해서만 지정해야 합니다. 예를 들어, v1.avi 및 v2.avi라는 두 파일을 추가하고 타임스탬프를 사용하려면 명령줄이 다음과 같아야 합니다.

    $ mkvmerge ... --timestamps 0:my_timestamps.txt v1.avi +v2.avi

mkvmerge(1)에서 인식되는 네 가지 형식이 있습니다. 첫 번째 줄에는 항상 버전 번호가 포함됩니다. 빈 줄, 공백만 포함된 줄 및 '#'으로 시작하는 줄은 무시됩니다.

## 17.1. 타임스탬프 파일 형식 v1

이 형식은 버전 행으로 시작합니다. 두 번째 줄은 초당 기본 프레임 수를 선언합니다. 다음 행은 모두 쉼표로 구분된 세 개의 숫자를 포함합니다. 시작 프레임(0은 첫 번째 프레임), 끝 프레임 및 이 범위의 프레임 수입니다. FPS는 점 '.'을 소수점으로 하는 부동 소수점 번호입니다. 범위에는 기본 FPS가 사용되는 간격이 포함될 수 있습니다. 예:

    # timestamp format v1
    assume 27.930
    800,1000,25
    1500,1700,30

## 17.2. 타임스탬프 파일 형식 v2

이 형식에서 각 라인은 해당 프레임에 대한 타임스탬프를 포함합니다. 이 타임스탬프는 밀리초 단위로 지정해야 합니다. 부동 소수점 숫자일 수 있지만 그럴 필요는 없습니다. 트랙에 있는 프레임 수만큼 타임스탬프 라인을 제공해야 합니다. 이 파일의 타임스탬프는 정렬되어야 합니다. 25fps의 예:

    # timestamp format v2
    0
    40
    80

## 17.3. 타임스탬프 파일 형식 v3

이 형식에서 각 라인은 초당 프레임 수에 이은 시간(초)을 포함합니다. 둘 다 부동 소수점 숫자일 수 있습니다. 초당 프레임 수가 없으면 기본 프레임 수가 사용됩니다. 오디오의 경우 코덱이 프레임 타임스탬프 자체를 계산하도록 해야 합니다. 이를 위해 0.0을 초당 프레임 수로 사용해야 합니다. 또한 'gap' 키워드에 이어 갭 지속 시간을 사용하여 스트림에 갭을 만들 수 있습니다. 오디오 파일의 예:

    # timestamp format v3
    assume 0.0
    25.325
    7.530,38.236
    gap, 10.050
    2.000,38.236

## 17.4. 타임스탬프 파일 형식 v4

이 형식은 v2 형식과 동일합니다. 유일한 차이점은 타임스탬프를 정렬할 필요가 없다는 것입니다. 이 형식은 절대 사용해서는 안 됩니다.

# 18. 종료 코드

&vmerge; 종료 시 다음 세 가지 종료 코드 중 하나가 표시됩니다:

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

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

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

# 19. 환경 변수

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

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

# 20. 더 보기

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

# 21. WWW

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