MKVMERGE(1) | 사용자 명령어 | MKVMERGE(1) |
NAME¶
mkvmerge - 멀티미디어 스트림을 Matroska 파일로 합치기
개요¶
mkvmerge [전역 옵션] {-o out} [옵션1] {파일1} [[옵션2] {파일2}] [@옵션-파일.json]
설명¶
이 프로그램은 여러 미디어 파일의 입력을 받아 그 스트림(전부나 선택 항목)을 Matroska file;로 결합합니다. Matroska 웹사이트[1]를 참고하세요.
Important
명령행 옵션의 순서는 중요합니다. 프로그램을 처음 사용하면 "옵션 순서" 섹션을 읽어 주세요.
전역 옵션¶
-v, --verbose
-q, --quiet
-o, --output 파일명
-w, --webm
챕터와 태그의 경우 요소의 하위 집합만 허용됩니다. mkvmerge(1)는 사양에서 허용되지 않는 모든 요소를 자동으로 제거합니다.
--title 제목
--default-language 언어-코드
기본 언어 코드는 '확인되지 않음'에 대해 'und'입니다.
세그먼트 정보 처리 (전역 옵션)¶
--segmentinfo filename.xml
자세한 내용은 아래의 segment info XML files 파일에 대한 섹션을 참조하십시오.
--segment-uid SID1,SID2,...
SID가 =로 시작하는 경우, 나머지 부분은 UID 세그먼트를 읽고 사용하는 Matroska 파일의 이름으로 해석됩니다.
생성된 각 파일에는 하나의 세그먼트가 포함되며 각 세그먼트에는 하나의 세그먼트 UID가 있습니다. 세그먼트가 생성된 것보다 더 많은 세그먼트 UID가 지정되면 잉여 UID는 무시됩니다. 세그먼트가 생성된 것보다 적은 수의 UID가 지정된 경우 해당 세그먼트에 대해 랜덤 UID가 생성됩니다.
챕터 및 태그 처리 (전역 옵션)¶
--chapter-language language-code
이 옵션은 단순 챕터 파일과 챕터는 포함되지만 챕터의 언어에 대한 정보는 없는 소스 파일(예: MP4 및 OGM 파일) 모두에 사용할 수 있습니다.
이 옵션을 사용하는 언어 집합은 --generate-chapters 옵션을 사용하여 장을 생성할 때도 사용됩니다.
--chapter-charset character-set
이 스위치는 Ogg/OGM 및 MP4 파일과 같은 특정 컨테이너 유형에서 복사된 챕터에도 적용됩니다. 자세한 내용은 아래 장에 대한 섹션을 참조하십시오.
--chapter-sync d[,o[/p]]
o / p: o / p로 타임스탬프를 조정하여 선형 드리프트를 고정합니다. p는 생략하면 1로 기본 설정됩니다. o와 p는 모두 부동 소수점 숫자일 수 있습니다.
기본값: 수동 동기화 보정 없음(d = 0 및 o / p = 1.0과 동일)
이 옵션은 매번 다른 트랙 ID를 선택하여 여러 트랙에 적용되는 입력 파일에 대해 여러 번 사용할 수 있습니다.
--generate-chapters mode
이 모드는 분할 모드 'parts:' 및 'parts-frames:'에서도 작동합니다. 이러한 모드에서는 추가된 각 타임스탬프 범위(시작 타임스탬프에 '+'로 접두사가 붙은 챕터)에 대해 1개의 챕터가 생성됩니다.
Note
mkvmerge(1)는 새 파일이 추가되는 시기를 확인할 수 있도록 비디오 또는 오디오 트랙이 있어야 합니다. 하나 이상의 비디오 트랙이 혼합된 경우 첫 번째 비디오 트랙이 사용됩니다. 그렇지 않으면 첫 번째 오디오 트랙이 사용됩니다.
예: --generate-chapters interval:45s
새 챕터의 이름은 --generate-chapters-name-template 옵션으로 제어됩니다. 언어는 --generate-chapters 이전에 발생해야 하는 --chapter-language로 설정됩니다.
--generate-chapters-name-template template
템플릿에서 사용할 수 있는 몇 가지 변수는 챕터가 생성될 때 실제 값으로 대체됩니다. 문자열 '<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'로 기본 설정됩니다. 유효한 형식 코드는 다음과 같습니다.
--cue-chapter-name-format format
이 옵션이 제공되지 않은 경우 mkvmerge(1) 형식은 '%p - %t'(performer, 공백, 대시, 다른 공백 및 제목 뒤에 있음)으로 기본 설정됩니다.
형식이 지정되면 다음 메타 문자를 제외한 모든 문자가 그대로 복사되고 메타 문자는 다음과 같이 바뀝니다.
--chapters file-name
--global-tags file-name
일반 출력 제어 (고급 전역 옵션)¶
--track-order FID1:TID1,FID2:TID2,...
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
단위가 사용되지 않으면 mkvmerge(1)는 최대 n개의 데이터 블록을 각 클러스터에 넣습니다. 최대 블록 수는 65535입니다.
숫자 d가 'ms'로 고정된 경우 mkvmerge(1)는 최대 d 밀리초의 데이터를 각 클러스터에 넣습니다. d의 최소값은 100ms이고, 최대값은 32000ms입니다.
mkvmerge(1)는 기본적으로 최대 65535개의 데이터 블록과 5000ms의 데이터를 클러스터에 저장합니다.
특정 프레임을 찾으려는 프로그램은 클러스터에만 직접 검색할 수 있으며 이후 전체 클러스터를 읽어야 합니다. 따라서 더 큰 클러스터를 만드는 것은 부정확하거나 느린 탐색으로 이어질 수 있습니다.
--clusters-in-meta-seek
--timestamp-scale factor
일반적으로 mkvmerge(1)는 1000000 값을 사용합니다. 즉, 타임스탬프와 지속 시간은 1ms의 정밀도를 갖습니다. 비디오 트랙을 포함하지 않지만 하나 이상의 오디오 트랙 mkvmerge(1)가 포함된 파일의 경우 모든 타임스탬프와 지속 시간이 하나의 오디오 샘플의 정밀도를 갖도록 타임스탬프 스케일 팩터를 자동으로 선택합니다. 이는 더 큰 오버헤드를 발생시키지만 정확한 탐색과 추출을 가능하게 합니다.
특수 값인 -1을 사용하면 mkvmerge(1)는 비디오 트랙이 있더라도 샘플 정밀도를 사용합니다.
--enable-durations
--no-cues
--no-date
--disable-lacing
--disable-track-statistics-tags
이 옵션을 활성화하면 mkvmerge(1)가 이러한 태그를 작성하고 동일한 이름의 기존 태그를 생성하지 못하게 됩니다.
--disable-language-ietf
--normalize-language-ietf mode
표준 형식에서 기본값이 존재하는 모든 하위 태그는 해당 기본 값으로 대체됩니다. 이를 통해 'zh-yue-jyutping'을 'yue-jyutping'으로 변환하거나 'fr-FX'를 'fr-FR'로 변환합니다.
확장 언어 하위 태그 형식의 경우 표준 형식이 먼저 구축됩니다. 나중에 확장 언어 하위 태그가 존재하는 모든 기본 언어는 확장 언어 하위 태그와 접두사로 대체됩니다. 예를 들면 'yue-jyutping'을 'zh-yue-jyutping'으로 다시 변환하지만 'fr'은 확장 언어 하위 태그가 아니기 때문에 'fr-FR'에는 영향을 미치지 않습니다.
--stop-after-video-ends
파일 분할, 링크, 결합 및 연결 (추가 전역 옵션)¶
--split specification
현재 mkvmerge(1)는 다음 모드를 지원합니다.
구문: --split [size:]d[k|m|g]
예: --split size:700m or --split 150000000
매개 변수 d는 크기가 각각 KB, MB 또는 GB임을 나타내기 위해 'k', 'm' 또는 'g'로 끝날 수 있습니다. 그렇지 않으면 바이트 단위의 크기로 가정됩니다. 현재 출력 파일이 이 크기 제한에 도달하면 새 파일이 시작됩니다.
'size:' 접두사는 호환성을 위해 생략될 수 있습니다.
구문: --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:' 접두사는 호환성을 위해 생략될 수 있습니다.
구문: --split timestamps:A[,B[,C...]]
예: --split timestamps:00:45:00.000,01:20:00.250,6300s
매개 변수 A, B, C 등은 모두 기간 동안 사용된 형식과 동일해야 합니다(위 참조). 타임스탬프 목록은 쉼표로 구분됩니다. 입력 스트림이 현재 분할점의 타임스탬프에 도달하면 새 파일이 생성됩니다. 그런 다음 이 목록에 지정된 다음 분할점이 사용됩니다.
'timestamps:' 접두사는 생략할 수 없습니다.
구문: --split parts:start1-end1[,[+]start2-end2[,[+]start3-end3...]]
예:
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)는 주요 프레임 위치에서만 분할에 대한 결정을 내립니다. 이것은 각 범위의 시작과 끝 모두에 적용됩니다. 따라서 종료 타임스탬프가 두 키 프레임 사이에 있더라도 다음 키 프레임은 제외하지만 프레임은 계속 출력합니다.
구문: --split parts-frames:start1-end1[,[+]start2-end2[,[+]start3-end3...]]
예:
parts-frames 모드는 mkvmerge(1)에게 프레임/필드 번호의 특정 범위를 유지하는 동시에 다른 범위도 무시하도록 지시합니다. 유지할 범위는 parts-frames: 키워드 뒤에 나열되고 쉼표로 구분되어야 합니다. 범위 자체는 시작 및 끝 프레임/필드 번호로 구성됩니다. 번호는 1부터 시작합니다.
시작 번호가 생략된 경우 기본값은 이전 범위의 끝 번호입니다. 이전 범위가 없으면 기본적으로 파일 시작 부분으로 설정됩니다(예시 3번 참조).
끝 번호가 생략된 경우 기본적으로 mkvmerge(1)가 나머지를 보관하도록 지시하는 소스 파일의 끝으로 기본 설정됩니다(예시 3번 참조).
일반적으로 각 범위는 새 파일에 기록됩니다. 연속된 범위가 동일한 파일에 쓰이도록 변경할 수 있습니다. 이를 위해 사용자는 시작 번호 앞에 +를 붙여야 합니다. 이 경우 mkvmerge(1)는 새 파일을 만들지 말고 이전 범위가 기록된 동일한 파일에 범위를 추가하도록 지시합니다. 입력 파일의 두 범위에 공백이 있더라도 출력 파일에 공백이 없도록 타임스탬프가 조정됩니다.
Note
mkvmerge(1)는 주요 프레임 위치에서만 분할에 대한 결정을 내립니다. 이것은 각 범위의 시작과 끝 모두에 적용됩니다. 따라서 종료 프레임/필드 번호가 두 키 프레임 사이에 있더라도 다음 키 프레임은 제외하지만 프레임은 계속 출력합니다.
예시 2번에서 mkvmerge(1)는 한 개의 파일을 만듭니다. 해당 항목은 733부터 912까지의 내용과 1592부터 2730까지 내용을 모두 포함합니다.
예시 3번에서 mkvmerge(1)는 두 개의 파일을 만듭니다. 첫 번째 파일은 원본 파일의 시작부터 430까지 내용을 포함합니다. 두 번째 파일에는 2512부터 원본 파일 끝까지 내용이 포함됩니다.
이 모드는 출력되는 첫 번째 비디오 트랙만 고려합니다. 비디오 트랙이 출력되지 않으면 분할되지 않습니다.
Note
이 인수와 함께 제공된 숫자는 출력되는 Matroska 블록의 수를 기준으로 해석됩니다. 단일 Matroska 블록에는 전체 프레임(프로그레시브 콘텐츠용) 또는 단일 필드(인터레이스 콘텐츠용)가 포함됩니다. mkvmerge는 이 둘을 구분하지 않고 단순히 블록의 수를 세는 것입니다. 예: 인터레이스된 콘텐츠가 있는 25번째 전체 프레임 이후에 분할하려면 분할점으로 50(전체 프레임당 두 필드)을 사용해야 합니다.
구문: --split frames:A[,B[,C...]]
예: --split frames:120,237,891
매개변수 A, B, C 등은 모두 양의 정수여야 합니다. 번호는 1부터입니다. 프레임/필드 번호 목록은 쉼표로 구분됩니다. 입력 스트림이 현재 분할점의 프레임/필드 번호에 도달하면 새 파일이 생성됩니다. 그런 다음 이 목록에 지정된 다음 분할점이 사용됩니다.
'frames:' 접두사는 생략할 수 없습니다.
이 모드는 출력되는 첫 번째 비디오 트랙만 고려합니다. 비디오 트랙이 출력되지 않으면 분할되지 않습니다.
Note
이 인수와 함께 제공된 숫자는 출력되는 Matroska 블록의 수를 기준으로 해석됩니다. 단일 Matroska 블록에는 전체 프레임(프로그레시브 콘텐츠용) 또는 단일 필드(인터레이스 콘텐츠용)가 포함됩니다. mkvmerge는 이 둘을 구분하지 않고 단순히 블록의 수를 세는 것입니다. 예: 인터레이스된 콘텐츠가 있는 25번째 전체 프레임 이후에 분할하려면 분할점으로 50(전체 프레임당 두 필드)을 사용해야 합니다.
구문: --split chapters:all or --split chapters:A[,B[,C...]]
예: --split chapters:5,8
매개변수 A, B, C 등은 모두 양의 정수여야 합니다. 번호는 1부터입니다. 챕터 번호 목록은 쉼표로 구분됩니다. 번호가 나열된 장의 시작 타임스탬프와 같거나 큰 첫 번째 키 프레임 바로 앞에서 분할이 발생합니다. 0s로 시작하는 챕터는 분할로 간주되지 않으며 자동으로 삭제됩니다.
모든 챕터 번호를 수동으로 나열하는 대신 키워드 all을 사용할 수 있습니다.
'chapters:' 접두사는 생략할 수 없습니다.
Note
Matroska 파일 형식은 'edition entries' 및 'chapter atoms'라고 하는 임의의 깊이 중첩된 챕터 구조를 지원합니다. 그러나 이 모드는 모든 버전 항목에서 가장 높은 수준의 챕터만 고려합니다.
이 분할 모드에서는 출력 파일 이름이 일반 작동과 다르게 처리됩니다. 옵션 필드 너비(예: '%02d')를 포함하여 식 '%d'와 같은 printf를 포함할 수 있습니다. 이 경우 현재 파일 번호가 적절하게 포맷되고 파일 이름의 해당 지점에 삽입됩니다. 이러한 패턴이 없으면 파일 확장자 바로 전에 '-%03d' 패턴을 가정합니다: '-o output.mkv'는 'output-001.mkv' 등의 결과를 도출합니다. 확장자가 없으면 이름에 '-%03d'가 추가됩니다.
또 다른 가능한 패턴은 '%c'로, 파일의 첫 번째 장의 이름으로 대체됩니다. '%c'가 있으면 패턴 '-%03d'는 자동으로 추가되지 않습니다.
--link
--link-to-previous segment-UID
SID가 =로 시작하는 경우, 나머지 부분은 UID 세그먼트를 읽고 사용하는 Matroska 파일의 이름으로 해석됩니다.
--link-to-next segment-UID
SID가 =로 시작하는 경우, 나머지 부분은 UID 세그먼트를 읽고 사용하는 Matroska 파일의 이름으로 해석됩니다.
--append-mode mode
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 수가 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 ']'
=
다음 파일 이름 앞에 '='를 넣을 수도 있습니다. 따라서 다음 두 명령은 동일합니다.
$ 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 ')'
몇 가지 사항에 유의해야 합니다:
첨부 파일 지원 (추가 전역 옵션)¶
--attachment-description 설명
--attachment-mime-type MIME type
첨부 파일에 대해 MIME 유형이 지정되지 않은 경우 해당 유형은 자동으로 탐지됩니다.
--attachment-name name
--attach-file file-name, --attach-file-once file-name
mkvextract(1)는 Matroska 파일에서 첨부 파일을 추출하는 데 사용할 수 있습니다.
--enable-legacy-font-mime-types
이는 MIME 유형이 자동으로 감지되는 경우 새 첨부 파일과 저장된 MIME 유형이 기존 첨부 파일에 다시 매핑되는 경우 모두 영향을 미칩니다.
영향을 받는 MIME 유형은 'application/x-truetype-fonts'에 매핑된 'font/sfnt'와 'font/ttf', 'font/collection'이고 'application/vnd.ms-opentype'에 매핑된 'font/otf' 입니다.
각 입력 파일에 대해 사용 가능한 옵션¶
-a, --audio-tracks [!]n,m,...
트랙 ID 대신 ISO 639-2 언어 코드를 제공할 수도 있습니다. 트랙에 대한 언어 태그를 제공하는 소스 파일에만 사용할 수 있습니다.
기본값: 이 종류의 모든 트랙을 복사합니다.
ID가 !로 접두사가 붙으면 의미는 반대로 됩니다: ! 뒤에 나열된 트랙을 제외한 이러한 종류의 모든 트랙을 복사합니다.
-d, --video-tracks [!]n,m,...
트랙 ID 대신 ISO 639-2 언어 코드를 제공할 수도 있습니다. 트랙에 대한 언어 태그를 제공하는 소스 파일에만 사용할 수 있습니다.
ID가 !로 접두사가 붙으면 의미는 반대로 됩니다: ! 뒤에 나열된 트랙을 제외한 이러한 종류의 모든 트랙을 복사합니다.
-s, --subtitle-tracks [!]n,m,...
트랙 ID 대신 ISO 639-2 언어 코드를 제공할 수도 있습니다. 트랙에 대한 언어 태그를 제공하는 소스 파일에만 사용할 수 있습니다.
ID가 !로 접두사가 붙으면 의미는 반대로 됩니다: ! 뒤에 나열된 트랙을 제외한 이러한 종류의 모든 트랙을 복사합니다.
-b, --button-tracks [!]n,m,...
트랙 ID 대신 ISO 639-2 언어 코드를 제공할 수도 있습니다. 트랙에 대한 언어 태그를 제공하는 소스 파일에만 사용할 수 있습니다.
ID가 !로 접두사가 붙으면 의미는 반대로 됩니다: ! 뒤에 나열된 트랙을 제외한 이러한 종류의 모든 트랙을 복사합니다.
--track-tags [!]n,m,...
ID 앞에 !이 붙으면 의미가 반대로 됩니다. ! 뒤에 나열된 ID를 제외한 모든 것을 복사합니다.
-m, --attachments [!]n[:all|first],m[:all|first],...
기본값은 모든 첨부 파일을 모든 출력 파일에 복사하는 것입니다.
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
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]]
o / p: o / p로 타임스탬프를 조정하여 선형 드리프트를 고정합니다. p는 생략하면 1로 기본 설정됩니다. o와 p는 모두 부동 소수점 숫자일 수 있습니다.
기본값: 수동 동기화 보정 없음(d = 0 및 o / p = 1.0과 동일)
이 옵션은 매번 다른 트랙 ID를 선택하여 여러 트랙에 적용되는 입력 파일에 대해 여러 번 사용할 수 있습니다.
--cues TID:none|iframes|all
기본값은 비디오 및 자막 트랙의 경우 'iframes'이고 오디오 트랙의 경우 'none'입니다. 사용된 --cues 옵션에 관계없이 큐 항목 작성을 금지하는 --no-cues 옵션도 참조하십시오.
이 옵션은 매번 다른 트랙 ID를 선택하여 여러 트랙에 적용되는 입력 파일에 대해 여러 번 사용할 수 있습니다.
--default-track-flag TID[:bool]
사용자가 재생 중에 트랙을 명시적으로 선택하지 않는 경우 플레이어는 기본 트랙" 플래그가 설정된 트랙 중 하나를 선택해야 하며, 사용자의 선호 언어와 같은 기본 설정을 고려해야 합니다.
이 옵션은 매번 다른 트랙 ID를 선택하여 여러 트랙에 적용되는 입력 파일에 대해 여러 번 사용할 수 있습니다.
--track-enabled-flag TID[:bool]
"track enabled" 플래그가 설정된 트랙만 재생 대상으로 간주해야 합니다.
이 옵션은 매번 다른 트랙 ID를 선택하여 여러 트랙에 적용되는 입력 파일에 대해 여러 번 사용할 수 있습니다.
--forced-display-flag TID[:bool]
이 옵션은 매번 다른 트랙 ID를 선택하여 여러 트랙에 적용되는 입력 파일에 대해 여러 번 사용할 수 있습니다.
--hearing-impaired-flag TID[:bool]
이 옵션은 매번 다른 트랙 ID를 선택하여 여러 트랙에 적용되는 입력 파일에 대해 여러 번 사용할 수 있습니다.
--visual-impaired-flag TID[:bool]
이 옵션은 매번 다른 트랙 ID를 선택하여 여러 트랙에 적용되는 입력 파일에 대해 여러 번 사용할 수 있습니다.
--text-descriptions-flag TID[:bool]
이 옵션은 매번 다른 트랙 ID를 선택하여 여러 트랙에 적용되는 입력 파일에 대해 여러 번 사용할 수 있습니다.
--original-flag TID[:bool]
이 옵션은 매번 다른 트랙 ID를 선택하여 여러 트랙에 적용되는 입력 파일에 대해 여러 번 사용할 수 있습니다.
--commentary-flag TID[:bool]
이 옵션은 매번 다른 트랙 ID를 선택하여 여러 트랙에 적용되는 입력 파일에 대해 여러 번 사용할 수 있습니다.
--track-name TID:name
--language TID:language
이 옵션은 매번 다른 트랙 ID를 선택하여 여러 트랙에 적용되는 입력 파일에 대해 여러 번 사용할 수 있습니다.
-t, --tags TID:file-name
--aac-is-sbr TID[:0|1]
원본 파일이 Matroska 파일인 경우 CodecID만 있으면 SBR AAC를 탐지할 수 있습니다. 하지만, 만약 CodecID가 잘못되었으면 이 스위치를 사용하여 수정할 수 있습니다.
mkvmerge가 AAC 파일이 SBR임을 잘못 감지한 경우 트랙 ID에 ':0'을 추가할 수 있습니다.
--audio-emphasis TID:n|symbolic-name
--reduce-to-core TID
현재 DTS 트랙만 이 옵션의 영향을 받습니다. 내장형 AC-3 코어를 포함하는 TrueHD 트랙은 대신 사용자가 복사할 트랙을 선택할 수 있는 두 개의 개별 트랙으로 표시됩니다. DTS의 경우 True와 달리 HD 확장 기능을 자체적으로 디코딩할 수 없기 때문에 이러한 방식은 TrueHD 데이터 처럼 작동하지 않습니다.
--remove-dialog-normalization-gain TID
현재 AC-3' DTS 및 TrueHD 트랙만 이 옵션의 영향을 받습니다.
--timestamps TID:file-name
--default-duration TID:x
기본 기간이 설정되지 않으면 mkvmerge는 컨테이너 및/또는 특정 트랙 유형(예: AVC/H.264 또는 MPEG-2)에 대한 인코딩된 비트스트림으로부터 트랙의 기본 기간을 도출하려고 시도합니다.
이 옵션을 사용하면 외부 타임스탬프 파일을 사용하지 않고도 비디오 트랙의 FPS를 변경할 수 있습니다.
--fix-bitstream-timing-information TID[:0|1]
Note
이 기능은 AVC/H.264 비디오 트랙에만 구현되었습니다.
--compression TID:n
'mpeg4_p2'/'mpeg4p2' 압축 방식은 MPEG4 파트 2 비디오 트랙에서만 사용할 수 있는 'header removal'라는 특수 압축 방식입니다.
일부 자막 유형의 기본값은 'zlib' 압축입니다. 이 압축 방법은 모든 재생 애플리케이션이 아닌 경우 가장 많이 지원하는 압축 방법입니다. 'none' 이외의 다른 압축 방법에 대한 지원은 보장되지 않습니다.
비디오 트랙에만 적용되는 옵션¶
-f, --fourcc TID:FourCC
--display-dimensions TID:widthxheight
값을 지정하는 또 다른 방법은 --aspect-ratio 또는 --aspect-ratio-factor 옵션을 사용하는 것입니다(아래 참조). 이러한 옵션은 상호 배타적입니다.
--aspect-ratio TID:ratio|width/height
값을 지정하는 또 다른 방법은 --aspect-ratio-factor 또는 --display-dimensions 옵션을 사용하는 것입니다(위 및 아래 참조). 이러한 옵션은 상호 배타적입니다.
--aspect-ratio-factor TID:factor|n/d
값을 지정하는 또 다른 방법은 --aspect-ratio 또는 --display-dimensions 옵션을 사용하는 것입니다(위 참조). 이러한 옵션은 상호 배타적입니다.
--cropping TID:left,top,right,bottom
--color-matrix-coefficients TID:n
유효한 값과 그 의미는 다음과 같습니다:
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
--chroma-subsample TID:hori,vert
예: 4:2:0 크로마 하위 샘플링이 있는 비디오의 경우 파라미터를 TID:1,1로 설정해야 합니다.
--cb-subsample TID:hori,vert
예: 4:2:1 크로마 하위 샘플링이 있는 비디오의 경우 파라미터 --chroma-subsample을 TID:1,0으로 설정하고 Cb-subsample을 TID:1,0으로 설정해야 합니다.
--chroma-siting TID:hori,vert
--color-range TID:n
--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
--max-frame-light TID:n
--chromaticity-coordinates TID:red-x,red-y,green-x,green-y,blue-x,blue-y
--white-color-coordinates TID:x,y
--max-luminance TID:float
--min-luminance TID:float
--projection-type TID:method
--projection-private TID:data
--projection-pose-yaw TID:float
--projection-pose-pitch TID:float
--projection-pose-roll TID:float
--field-order TID:n
0: 진행도, 1: 맨 위 필드가 먼저 표시되고 맨 위 필드가 먼저 저장됨, 2: 미정 필드 순서, 6: 맨 아래 필드가 먼저 표시되고 맨 아래 필드가 먼저 저장됨, 9: 맨 아래 필드가 먼저 표시되고 맨 위 필드가 먼저 저장됨, 14: 맨 위 필드가 먼저 표시되고 맨 아래 필드가 먼저 저장됨
--stereo-mode TID:n|symbolic-name
텍스트 자막 트랙에만 적용되는 옵션¶
--sub-charset TID:character-set
이 옵션은 매번 다른 트랙 ID를 선택하여 여러 트랙에 적용되는 입력 파일에 대해 여러 번 사용할 수 있습니다.
기타 옵션¶
-i, --identify file-name
결과에 사용되는 출력 형식은 --identification-format 옵션으로 변경할 수 있습니다.
-J file-name
-F, --identification-format format
이 형식은 구문 분석되지 않습니다. 출력은 mkvmerge(1)uses 언어로 번역됩니다(참조: --ui-language).
mkvmerge-identification-output-schema-v20.json[3]
모든 버전의 JSON 스키마는 온라인과 공개된 소스 코드 아카이브에서 모두 사용할 수 있습니다.
--probe-range-percentage percentage
트랙이 있는 것으로 알려졌지만 찾을 수 없는 경우 이 옵션을 사용하여 probe 비율을 변경할 수 있습니다. 최소 10MB는 기본 제공되며 변경할 수 없습니다.
--list-audio-emphasis
--list-languages
--list-stereo-modes
-l, --list-types
--priority priority
또한 'lowest'를 선택하면 mkvmerge(1)는 가능한 가장 낮은 프로세스 우선 순위 외에 유휴 I/O 우선 순위를 선택합니다.
--command-line-charset 문자셋
--output-charset 문자셋
-r, --redirect-output 파일명
--flush-on-close
--ui-language 코드
--abort-on-warnings
--deterministic seed
시드는 임의 문자열일 수 있으며 숫자일 필요는 없습니다.
동일 바이트 파일의 결과는 다음 조건에서만 보장됩니다.
다른 버전의 mkvmerge(1) 또는 다른 명령줄 옵션을 사용하면 동일한 바이트로 동일한 파일이 생성될 수 있지만 반드시 사용되지는 않습니다.
--debug 토픽
--engage 기능
--gui-mode
@옵션 파일.json
--capabilities
-h, --help
-V, --version
사용법¶
각 파일에 대해 사용자는 mkvmerge(1)를 사용해야 하는 트랙을 선택할 수 있습니다. 이 파일들은 모두 -o로 지정된 파일에 저장됩니다. 알려진(및 지원되는) 소스 형식 목록은 -l 옵션을 사용하여 얻을 수 있습니다.
Important
명령행 옵션의 순서는 중요합니다. 프로그램을 처음 사용하면 "옵션 순서" 섹션을 읽어 주세요.
옵션 순서¶
일부 옵션에서는 옵션을 입력하는 순서가 중요합니다. 옵션은 두 가지 범주로 나뉩니다.
옵션은 왼쪽에서 오른쪽으로 처리됩니다. 같은 범위 내에서 옵션이 여러 번 나타나면 마지막 항목이 사용됩니다. 따라서 제목은 "로 설정됩니다.다음 예제의 다른 항목"입니다.
$ 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
보기¶
MyMovie라는 파일과MyMovie.wav'와 같은 별도의 파일의 오디오 트랙이 있다고 가정합니다. 먼저 오디오를 OggVorbis로 인코딩합니다.
$ 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를 켜고 즐기세요. 오디오 트랙이 여러 개 있는 경우(또는 비디오 트랙도) '-vid' 및 '-aid' 옵션으로 재생할 트랙을 mplayer에 알려줄 수 있습니다. 이들은 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 등) 또는 'contrib/subrip' 디렉터리의 transcode(1) 소스에 있는 subrip 패키지를 사용할 수 있습니다. 일반적인 프로세스는 다음과 같습니다.
$ tccat -i /path/to/copied/dvd/ -T 1 -L | tcextract -x ps1 -t vob -a 0x20 | subtitle2pgm -o mymovie
$ pgm2txt mymovie
$ ispell -d american *txt
$ 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 파일에 넣고 해당 언어 코드를 설정하려고 하며 트랙 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
트랙 ID¶
일반 트랙 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는 다음과 같이 할당됩니다.
트랙 ID를 사용하는 옵션은 설명에 'TID'가 포함된 옵션입니다. --audio tracks, --video-tracks, --subtitle-tracks, --button-tracks 및 --track-tags도 사용합니다.
특수 트랙 ID¶
식별 출력에는 특별한 의미를 가지며 발생하지 않는 여러 ID가 있습니다.
특수 트랙 ID '-1'은 와일드 카드이며 입력 파일에서 읽은 모든 트랙에 지정된 스위치를 적용합니다.
특수 트랙 ID '-2'는 소스 파일의 장을 나타냅니다. 현재 --sync 옵션만 이 특수 ID를 사용합니다. --sync-2:...의 대안으로 --chapter-sync... 옵션을 사용할 수 있습니다.
LANGUAGE HANDLING¶
Matroska 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.
텍스트 파일과 문자셋 변환¶
소개¶
Matroska 파일의 모든 텍스트는 UTF-8로 인코딩됩니다. 이것은 mkvmerge(1)가 읽는 모든 텍스트 파일뿐만 아니라 명령행에 주어진 모든 텍스트를 UTF-8로 변환해야 한다는 것을 의미합니다. 또한 mkvmerge(1)의 출력을 UTF-8에서 해당 문자 집합으로 다시 변환해야 합니다. 예를 들어, 영어가 아닌 번역이 --ui-language와 함께 사용되는 경우 또는 Matroska 파일을 원본 텍스트로 변환해야 합니다.
mkvmerge(1)는 바이트 순서 마커(짧은 길이: BOM) 또는 시스템의 현재 로케일의 존재에 따라 이 변환을 자동으로 수행합니다. 문자 집합이 로케일에서 추론되는 방법은 mkvmerge(1)가 실행되는 운영 체제에 따라 다릅니다.
바이트 순서 표시 (BOM)¶
BOM으로 시작하는 텍스트 파일은 UTF-8, UTF-16 little, big endian, UTF-32 little, big endian의 다섯 가지 모드를 지원합니다. BOM이 있는 텍스트 파일은 자동으로 UTF-8로 변환됩니다. 그렇지 않으면 해당 파일의 문자 집합을 설정하는 모든 매개 변수(예: --sub-charset)는 자동으로 무시됩니다.
MacOS를 포함한 Linux 및 Unix 계열 시스템¶
유닉스 계열 시스템에서 mkvmerge(1)는 환경 변수 LANG, LC_ALL, LC_CYPE을 사용하는 setlocale(3) 시스템 호출을 사용합니다. 결과 문자 집합은 종종 UTF-8이나 ISO-8859-* 계열 중 하나이며 모든 텍스트 파일 작업과 명령줄의 문자열 인코딩 및 콘솔 출력에 사용됩니다.
윈도우¶
Windows에서 텍스트 파일을 변환하는 데 사용되는 기본 문자 집합은 GetACP() 시스템 호출에 의해 결정됩니다.
명령줄 읽기는 이미 유니코드 문자열을 반환하는 GetCommandLineW() 함수를 사용하여 수행됩니다. 따라서 --command-line-charset 옵션은 Windows에서 무시됩니다.
콘솔 출력은 세 가지 시나리오로 구성됩니다:
명령행 옵션¶
문자 집합을 지정할 수 있는 옵션은 다음과 같습니다:
옵션 파일¶
옵션 파일은 파일 mkvmerge(1)이며 추가 명령줄 인수를 읽을 수 있습니다. 이것은 제한된 명령행 길이와 같은 외부 프로그램을 실행할 때 셸이나 운영 체제의 특정 제한을 피하기 위해 사용될 수 있습니다.
옵션 파일에는 JSON 형식의 데이터가 포함됩니다. 콘텐츠는 JSON 문자열로만 구성된 유효한 JSON 배열이어야 합니다. 파일의 인코딩은 UTF-8이어야 합니다. 파일은 BOM로 시작하면 안 되지만 있으면 건너뜁니다.
JSON 내부의 특수 문자를 이스케이프하기 위한 규칙은 JSON 공식 사양인 RFC 7159[4]에 있습니다.
옵션 파일의 이름 자체는 '@' 문자의 접두사로 된 명령줄 인수로 지정해야 합니다.
명령행 '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'가 됩니다.
파일 링크¶
Matroska는 단순히 특정 파일이 현재 파일의 이전 또는 후속 파일이라고 말하는 파일 연결을 지원합니다. 정확히 말하면, 실제로 연결된 것은 파일이 아니라 Matroska 세그먼트입니다. 대부분의 파일들은 하나의 Matroska 세그먼트만 포함할 수 있기 때문에, 다음 설명은 '파일 연결'이라는 용어를 사용하지만 '세그먼트 연결'이 더 적절합니다.
각 세그먼트는 고유한 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 모두에 연결됩니다.
기본값¶
Matroska 규격에는 일부 요소가 기본값을 가지고 있다고 명시되어 있습니다. 일반적으로 공간을 절약하기 위해 요소 값이 기본값과 같으면 요소가 파일에 기록되지 않습니다. 사용자가 mkvinfo(1)의 출력에서 놓칠 수 있는 요소는 language와 default track flag 요소입니다. language의 기본값은 영어('eng')이고 default track flag에 대한 기본값은 true입니다. 따라서 --language 0:eng을 트랙에 사용한 경우 mkvinfo(1)의 출력에 표시되지 않습니다.
첨부 파일¶
또한 사진을 Matroska 파일과 함께 보관하거나 SSA 자막을 사용 중이므로 매우 드문 특수 TrueType 글꼴이 필요할 수 있습니다. 이러한 경우 해당 파일을 Matroska 파일에 첨부할 수 있습니다. 이러한 파일은 파일에 추가되지 않고 파일에 포함됩니다. 사용자는 이러한 파일('사진' 케이스)을 보여주거나 자막('TrueType 폰트' 케이스)을 렌더링하는 데 사용할 수 있습니다.
출력 파일에 사진 및 TrueType 글꼴을 첨부하는 방법은 다음과 같습니다.
$ 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 파일을 입력 파일로 사용하는 경우 mkvmerge(1)는 첨부 파일을 새 파일로 복사합니다. 복사된 첨부 파일과 복사되지 않은 첨부 파일 선택 항목은 --attachments 및 --no-attachments 옵션을 사용하여 변경할 수 있습니다.
챕터¶
Matroska 챕터 시스템은 OGM 파일에 사용되는 오래된 알려진 시스템보다 더 강력합니다. 전체 사양은 the Matroska website[1]에서 확인할 수 있습니다.
mkvmerge(1)는 두 가지 종류의 챕터 파일을 입력으로 지원합니다. '단순 챕터 형식'이라고 불리는 첫 번째 형식은 OGM 도구가 기대하는 형식과 동일합니다. 두 번째 형식은 Matroska의 모든 챕터 기능을 지원하는 XML 기반 장 형식입니다.
전용 챕터 파일 외에도 mkvmerge(1)는 다른 파일 형식(예: MP4, Ogg, Blu-ray 또는 DVD)의 챕터를 읽을 수 있습니다.
간단한 챕터 형식¶
이 형식은 각각 '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 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섹션을 참조하십시오.
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>
이 형식을 사용하면 간단한 챕터 형식으로는 가능하지 않은 세 가지가 가능합니다.
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)
Blu-ray에서 챕터 읽기¶
mkvmerge(1)는 암호화되지 않은 Blu-ray의 챕터를 읽을 수 있습니다. 이를 위해 --chapters 매개 변수를 사용하여 MPLS 재생 목록 중 하나의 경로를 사용할 수 있습니다.
예시: --chapters /srv/blurays/BigBuckBunny/BDMV/PLAYLIST/00001.mpls
DVD에서 챕터 읽기¶
MKVToolNix가 libdvdvdread 라이브러리로 컴파일되면 mkvmerge(1)는 DVD에서 장을 읽을 수 있습니다. 이를 위해 --chapters 매개 변수를 사용하여 DVD의 폴더 또는 파일 중 하나에 대한 경로를 사용할 수 있습니다. DVD에는 둘 이상의 제목이 포함될 수 있고 각 제목에는 고유한 챕터 집합이 있으므로 파일 이름 인수 끝에 콜론과 원하는 제목 번호를 추가할 수 있습니다. 제목 번호는 1로 기본 설정됩니다.
예시: --chapters /srv/dvds/BigBuckBunny/VIDEO_TS:2
일반적인 주의사항¶
파일을 분할할 때 mkvmerge(1)도 올바르게 챕터를 조정합니다. 즉, 각 파일에 적용되는 장 항목만 포함되며, 각 출력 파일의 새 타임스탬프와 일치하도록 타임스탬프가 오프셋됩니다.
--no-filename 옵션을 사용하여 이 옵션을 명시적으로 사용하지 않도록 설정하지 않은 경우 Matroska 원본 파일에서 챕터를 복사할 수 있습니다. 모든 소스(Matroska 파일, Ogg 파일, MP4 파일, 챕터 텍스트 파일)의 챕터들은 일반적으로 병합되지 않고 별도의 ChapterEdition으로 끝납니다. 동일한 버전의 UID를 공유하는 여러 Matroska 또는 XML 파일에서 챕터를 읽는 경우에만 챕터가 단일 ChapterEdition으로 병합됩니다. 다른 상황에서도 병합이 필요한 경우, 사용자는 mkvextract(1)를 사용하여 모든 소스에서 챕터를 추출해야 합니다. 먼저 XML 파일을 수동으로 병합한 후 나중에 병합해야 합니다.
태그¶
소개¶
Matroska의 태그 시스템은 KEY=VALUE 쌍의 집합인 다른 컨테이너의 태그 시스템과 유사합니다. 그러나 Matroska에서 이러한 태그는 중첩될 수 있으며 KEY와 VALUE는 모두 고유한 요소입니다. 예제 파일 example-tags-2.xml은 이 시스템의 사용 방법을 보여 줍니다.
태그 범위¶
Matroska 태그는 전체 파일에 자동으로 적용되지 않습니다. 파일의 여러 부분, 즉 하나 이상의 트랙, 하나 이상의 챕터, 또는 둘의 조합에도 적용할 수 있습니다. Matroska 명세서[5]는 이 사실에 대해 더 자세히 설명합니다.
한 가지 중요한 사실은 태그가 Targets Matroska 태그 요소를 가진 트랙이나 장에 연결된다는 것이고, 이 링크에 사용되는 UID는 모든 곳에서 사용되는 트랙 ID는notmkvmerge(1) 이라는 것입니다. 대신 사용되는 숫자는 mkvmerge(1)가 자동으로 계산하거나(트랙이 Matroska가 아닌 파일 형식에서 가져온 경우) 트랙의 소스 파일이 Matroska 파일인 경우 소스 파일에서 복사되는 UID입니다. 따라서 파일이 mkvmerge(1)로 넘겨지기 전에 태그 파일에 어떤 UID를 사용해야 하는지 알기는 어렵습니다.
Matroska 파일에 태그를 추가할 수 있는 두 가지 옵션: --global-tags 및 --tags 옵션이 있습니다. 차이점은 이전 옵션인 --global-tags는 위에서 언급한 Targets 요소를 제거하여 태그를 전체 파일에 적용한다는 것입니다. 후자 옵션인 --tags는 --tags 옵션의 TID 부분으로 지정된 태그에 대해 mkvmerge(1)가 생성하는 UID를 자동으로 삽입합니다.
예¶
AVI에서 읽은 비디오 트랙에 태그를 추가하려고 합니다. mkvmerge --identify file.avi는 비디오 트랙의 ID(이 ID를 UID와 혼합하지 않음!)가 0임을 알려줍니다. 태그 파일을 생성하고 모든 Targets 요소를 생략하고 mkvmerge(1)를 호출합니다.
$ mkvmerge -o file.mkv --tags 0:tags.xml file.avi
태그 파일 형식¶
&vmerge;는 XML 기반 태그 파일 형식을 지원합니다. 이 형식은 Matroska specification[5]에 따라 매우 밀접하게 모델링되었습니다. MKVToolNix의 바이너리 배포판과 소스 배포판 모두 example-tags-2.xml샘플 파일과 함께 제공되며, 단순히 알려진 모든 태그를 나열하고 실제 태그 파일의 기준으로 사용할 수 있습니다.
기본은 다음과 같습니다:
데이터 형식¶
새로운 Matroska 태깅 시스템은 UTF-8 문자열과 이진 유형이라는 두 가지 데이터 유형만 알고 있습니다. 첫 번째 유형은 태그 이름과 <String> 요소에 사용되며, 이진 유형은 <Binary> 요소에 사용됩니다.
이진 데이터 자체는 XML 파일 mkvmerge(1)에 맞지 않기 때문에 이진 데이터를 저장하는 두 가지 다른 방법을 지원합니다. XML 태그의 내용이 '@'로 시작하는 경우 다음 텍스트는 파일 이름으로 처리됩니다. 해당 파일의 내용이 Matroska 요소에 복사됩니다.
그렇지 않으면 데이터가 Base64로 인코딩될 것으로 예상됩니다. 이진 데이터를 제한된 ASCII 문자 집합으로 변환하는 인코딩으로, 예를 들어 전자 메일 프로그램에서 사용됩니다. mkvextract(1)는 이진 요소에 대해 Base64 인코딩된 데이터를 출력합니다.
권장되지 않는 태그 시스템은 공식 태그 사양에서 찾을 수 있는 몇 가지 데이터 유형을 더 알고 있습니다. mkvmerge(1)는 더 이상 이 시스템을 지원하지 않으므로, 이러한 유형은 여기에 설명되어 있지 않습니다.
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)
세그먼트 정보¶
세그먼트 정보 XML 파일을 사용하면 Matroska 파일의 "세그먼트 정보" 헤더 필드에 특정 값을 설정할 수 있습니다. 이러한 모든 값은 다른 명령줄 옵션을 통해 설정할 수 없습니다.
기타 "세그먼트 정보"헤더 필드는 명령줄 옵션을 통해 설정할 수 있지만 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)
MATROSKA 파일 레이아웃¶
Matroska 파일 레이아웃은 매우 유연합니다. &vmerge;는 미리 정의된 방식으로 파일을 렌더링합니다. 결과 파일은 다음과 같습니다:
[EBML head] [segment {meta seek #1} [segment information] [track information] {attachments} {chapters} [cluster 1] {cluster 2} ... {cluster n} {cues} {meta seek #2} {tags}]
중괄호의 요소는 선택 사항이며 사용된 내용과 옵션에 따라 다릅니다. 몇 가지 메모:
가능한 가장 짧은 Matroska 파일은 다음과 같습니다.
[EBML head] [segment [segment information] [track information] [cluster 1]]
이는 오디오 전용 파일의 경우일 수 있습니다.
외부 타임스탬프 파일¶
사용자가 직접 특정 트랙의 타임스탬프를 선택할 수 있습니다. 이것은 가변 프레임률 비디오로 파일을 만들거나 오디오에 공백을 포함하기 위해 사용될 수 있습니다. 이 경우 프레임은 mkvmerge(1)가 Matroska 블록별로 별도로 생성하는 단위입니다. 비디오의 경우 정확히 하나의 프레임이고 오디오의 경우 특정 오디오 유형의 패킷입니다. 예를 들어 AC-3의 경우 1536개의 샘플을 포함하는 패킷입니다.
트랙이 서로 추가될 때 사용되는 타임스탬프 파일은 트랙 체인의 첫 번째 부분에 대해서만 지정해야 합니다. 예를 들어, v1.avi 및 v2.avi라는 두 파일을 추가하고 타임스탬프를 사용하려면 명령줄이 다음과 같아야 합니다.
$ mkvmerge ... --timestamps 0:my_timestamps.txt v1.avi +v2.avi
mkvmerge(1)에서 인식되는 네 가지 형식이 있습니다. 첫 번째 줄에는 항상 버전 번호가 포함됩니다. 빈 줄, 공백만 포함된 줄 및 '#'으로 시작하는 줄은 무시됩니다.
타임스탬프 파일 형식 v1¶
이 형식은 버전 행으로 시작합니다. 두 번째 줄은 초당 기본 프레임 수를 선언합니다. 다음 행은 모두 쉼표로 구분된 세 개의 숫자를 포함합니다. 시작 프레임(0은 첫 번째 프레임), 끝 프레임 및 이 범위의 프레임 수입니다. FPS는 점 '.'을 소수점으로 하는 부동 소수점 번호입니다. 범위에는 기본 FPS가 사용되는 간격이 포함될 수 있습니다. 예:
# timestamp format v1 assume 27.930 800,1000,25 1500,1700,30
타임스탬프 파일 형식 v2¶
이 형식에서 각 라인은 해당 프레임에 대한 타임스탬프를 포함합니다. 이 타임스탬프는 밀리초 단위로 지정해야 합니다. 부동 소수점 숫자일 수 있지만 그럴 필요는 없습니다. 트랙에 있는 프레임 수만큼 타임스탬프 라인을 제공해야 합니다. 이 파일의 타임스탬프는 정렬되어야 합니다. 25fps의 예:
# timestamp format v2 0 40 80
타임스탬프 파일 형식 v3¶
이 형식에서 각 라인은 초당 프레임 수에 이은 시간(초)을 포함합니다. 둘 다 부동 소수점 숫자일 수 있습니다. 초당 프레임 수가 없으면 기본 프레임 수가 사용됩니다. 오디오의 경우 코덱이 프레임 타임스탬프 자체를 계산하도록 해야 합니다. 이를 위해 0.0을 초당 프레임 수로 사용해야 합니다. 또한 'gap' 키워드에 이어 갭 지속 시간을 사용하여 스트림에 갭을 만들 수 있습니다. 오디오 파일의 예:
# timestamp format v3 assume 0.0 25.325 7.530,38.236 gap, 10.050 2.000,38.236
타임스탬프 파일 형식 v4¶
이 형식은 v2 형식과 동일합니다. 유일한 차이점은 타임스탬프를 정렬할 필요가 없다는 것입니다. 이 형식은 절대 사용해서는 안 됩니다.
종료 코드¶
&vmerge; 종료 시 다음 세 가지 종료 코드 중 하나가 표시됩니다:
환경 변수¶
mkvmerge(1)는 시스템의 로케일을 결정하는 기본 변수(예: LANG 및 LC_* 제품군)를 사용합니다. 추가 변수:
MKVMERGE_DEBUG, MKVTOOLNIX_DEBUG and its short form MTX_DEBUG
MKVMERGE_ENGAGE, MKVTOOLNIX_ENGAGE 와 그 간략한 형태인 MTX_ENGAGE
더 보기¶
mkvinfo(1), mkvextract(1), mkvpropedit(1), mkvtoolnix-gui(1)
WWW¶
이전 버전은 언제나 MKVToolNix 홈페이지[6]에서 찾을 수 있습니다.
AUTHOR¶
Moritz Bunkus <moritz@bunkus.org>
NOTES¶
- 1.
- Matroska 웹사이트
- 2.
- the IANA hompage
- 3.
- mkvmerge-identification-output-schema-v20.json
- 4.
- RFC 7159
- 5.
- Matroska 명세서
- 6.
- MKVToolNix 홈페이지
2024-09-07 | MKVToolNix 87.0 |