MKVMERGE(1) User Commands MKVMERGE(1)

mkvmerge - ادغام جریان‌های چندرسانه‌ای در یک فایل Matroska(TM)

mkvmerge [global options] {-o out} [options1] {file1} [[options2] {file2}] [@options-file.json]

این برنامه ورودی را از چندین فایل رسانه‌ای دریافت کرده و جریان‌های آن‌ها را (تمامی آن‌ها یا تنها مجموعه‌ای گزینش‌شده) درون یک فایل Matroska(TM) ادغام می‌کند؛ ببینید: وب‌سایت Matroska(TM)[1].


مهم

ترتیب گزینه‌های خط فرمان مهم است. لطفاً اگر در کار با این برنامه تازه‌کار هستید، بخش "Option order" (ترتیب گزینه‌ها) را مطالعه کنید.

-v, --verbose

افزایش سطح جزئیات خروجی (پُرگویی).

-q, --quiet

فرونشاندن و جلوگیری از نمایش خروجی وضعیت.

-o, --output file-name

نوشتن در فایل file-name. در صورت استفاده از تکه‌تکه‌سازی (splitting)، این پارامتر کمی متفاوت مدیریت می‌شود. برای جزئیات به توضیحات گزینه --split مراجعه کنید.

-w, --webm

ایجاد یک فایل سازگار با WebM. همچنین در صورتی که پسوند نام فایل خروجی "webm" باشد، این حالت فعال می‌شود. این حالت محدودیت‌های متعددی را اعمال می‌کند. تنها کدک‌های مجاز شامل ویدیوهای VP8 و VP9 و قطعه‌های صوتی Opus و Vorbis هستند. مورد سربرگ DocType به "webm" تغییر می‌یابد.

برای فصل‌ها (chapters) و برچسب‌ها (tags) تنها زیرمجموعه‌ای از عناصر مجاز هستند. mkvmerge(1) به‌طور خودکار تمام عناصری را که طبق مشخصات فنی مجاز نیستند حذف خواهد کرد.

--title title

تنظیم عنوان کلی برای فایل خروجی، مانند نام فیلم.

--default-language language-code

تعیین کد زبان پیش‌فرضی که برای قطعه‌هایی (ترک‌هایی) به کار می‌رود که زبانی برای آن‌ها با گزینه --language تنظیم نشده و ظرف منبع (source container) نیز زبانی ارائه نداده است.

کد زبان پیش‌فرض 'und' برای 'undetermined' (نامشخص) است.

--segmentinfo filename.xml

خواندن اطلاعات قطعه (segment) از یک فایل XML. این فایل می‌تواند شامل عناصر segment family UID، segment UID، و UID قطعه قبلی و بعدی باشد. یک فایل نمونه و یک DTD در توزیع MKVToolNix گنجانده شده است.

برای جزئیات بیشتر به بخش مربوط به فایل‌های XML اطلاعات قطعه (segment info XML files) در ادامه مراجعه کنید.

--segment-uid SID1,SID2,...

تنظیم segment UIDهای مورد استفاده. این یک فهرست جداشده با کاما از segment UIDهای ۱۲۸ بیتی در قالب معمول UID است: اعداد هگزادسیمال با یا بدون پیشوند "0x"، با یا بدون فاصله، دقیقاً ۳۲ رقم.

اگر SID با علامت = آغاز شود، باقی‌مانده آن به عنوان نام یک فایل Matroska تفسیر می‌شود که segment UID آن خوانده شده و مورد استفاده قرار می‌گیرد.

هر فایل ایجادشده شامل یک قطعه (segment) است، و هر قطعه یک segment UID دارد. اگر تعداد segment UIDهای مشخص‌شده بیشتر از تعداد قطعه‌های ایجادشده باشد، UIDهای اضافی نادیده گرفته می‌شوند. اگر تعداد UIDهای مشخص‌شده کمتر از قطعه‌های ایجادشده باشد، UIDهای تصادفی برای آن‌ها ایجاد خواهد شد.

--chapter-language language-code

کد زبان ISO 639-2 را که برای هر مدخل فصل نوشته می‌شود تعیین می‌کند. مقدار پیش‌فرض 'eng' است. برای جزئیات، بخش مربوط به فصل‌ها را در ادامه ببینید.

این گزینه می‌تواند هم برای فایل‌های فصل ساده و هم برای فایل‌های مبدأ که حاوی فصل هستند اما اطلاعاتی درباره‌ی زبان فصل‌ها ندارند (مانند فایل‌های MP4 و OGM) استفاده شود.

زبانی که با این گزینه تعیین می‌شود، هنگام ایجاد فصل‌ها با گزینه‌ی --generate-chapters نیز به کار می‌رود.

--chapter-charset character-set

مجموعه‌نویسه‌ای را که برای تبدیل به UTF-8 در فایل‌های فصل ساده استفاده می‌شود، تعیین می‌کند. برای توضیحات درباره‌ی چگونگی تبدیل بین مجموعه‌نویسه‌ها توسط mkvmerge(1)، بخش مربوط به فایل‌های متنی و مجموعه‌نویسه‌ها را ببینید.

این سوئیچ همچنین برای فصل‌هایی که از انواع خاصی از کانتینرها، مانند فایل‌های Ogg/OGM و MP4 کپی می‌شوند نیز اعمال می‌شود. برای جزئیات، بخش مربوط به فصل‌ها را در ادامه ببینید.

--chapter-sync d[,o[/p]]

مهرزمانی فصل‌ها را در فایل مبدأ بعدی به میزان d میلی‌ثانیه تنظیم می‌کند. همچنین می‌توانید از گزینه‌ی --sync با شناسه قطعه‌ی ویژه -2 استفاده کنید (بخش شناسه‌های قطعه‌ی ویژه را ببینید).

o/p: تنظیم مهرزمانی‌ها به نسبت o/p برای رفع انحراف‌های خطی. در صورت حذف، مقدار پیش‌فرض p برابر 1 است. هر دوی o و p می‌توانند اعداد اعشاری ممیز شناور باشند.

پیش‌فرض‌ها: بدون تصحیح دستی همگام‌سازی (که همانند d = 0 و o/p = 1.0 است).

این گزینه می‌تواند چندین بار برای یک فایل ورودی استفاده شود و با انتخاب شناسه‌های قطعه‌ی مختلف در هر بار، روی چندین قطعه اعمال گردد.

--generate-chapters mode

mkvmerge(1) می‌تواند فصل‌ها را به‌طور خودکار ایجاد کند. در حال حاضر دو حالت زیر پشتیبانی می‌شوند:
•'when-appending' – این حالت یک فصل در آغاز و هر زمان که فایلی پیوست (append) شود یک فصل ایجاد می‌کند.

این حالت همچنین با حالت‌های تقسیم 'parts:' و 'parts-frames:' کار می‌کند. برای این حالت‌ها، به ازای هر بازه‌ی مهرزمانی پیوست‌شده (آن‌هایی که پیشوند مهرزمانی آغازین‌شان '+' است) یک فصل ایجاد خواهد شد.


نکته
mkvmerge(1) برای اینکه بتواند زمان پیوست شدن یک فایل جدید را تشخیص دهد، نیاز به وجود یک قطعه‌ی ویدیویی یا صوتی دارد. اگر یک یا چند قطعه‌ی ویدیویی میکس (mux) شوند، از اولین قطعه استفاده می‌شود؛ در غیر این صورت، از اولین قطعه‌ی صوتی استفاده خواهد شد.
•'interval:time-spec' – این حالت در فواصل زمانی ثابتی که توسط time-spec مشخص شده است یک فصل ایجاد می‌کند. قالب یا به شکل HH:MM:SS.nnnnnnnnn است و یا یک عدد که به دنبال آن یکی از واحدهای 's'، 'ms' یا 'us' قرار می‌گیرد.

مثال: --generate-chapters interval:45s

نام‌های فصل‌های جدید توسط گزینه‌ی --generate-chapters-name-template کنترل می‌شوند. زبان با --chapter-language تعیین می‌شود که باید پیش از --generate-chapters قرار گیرد.

--generate-chapters-name-template template

الگوی نام را برای نام‌های فصل تولیدشده توسط گزینه‌ی --generate-chapters تعیین می‌کند. اگر این گزینه استفاده نشود، مقدار پیش‌فرض 'Chapter <NUM:2>' استفاده خواهد شد.

متغیرهای متعددی وجود دارند که می‌توانند در الگو استفاده شوند و هنگام تولید یک فصل با مقادیر واقعی خود جایگزین می‌شوند. رشته‌ی '<NUM>' با شماره‌ی فصل جایگزین خواهد شد. رشته‌ی '<START>' با مهرزمانی آغاز فصل جایگزین خواهد شد.

رشته‌های '<FILE_NAME>' و '<FILE_NAME_WITH_EXT>' تنها هنگام تولید فصل‌ها برای فایل‌های پیوست‌شده پر می‌شوند. آن‌ها با نام فایل پیوست‌شده به‌ترتیب بدون پسوند و با پسوند جایگزین خواهند شد. توجه داشته باشید که تنها نام پایه و پسوند فایل درج می‌شوند، نه اجزای دایرکتوری یا درایو آن.

می‌توانید حداقل تعداد ارقام را برای شماره‌ی فصل با '<NUM:places>'، مانند '<NUM:3>'، مشخص کنید. اگر تعداد ارقام کمتر از مقدار تعیین‌شده باشد، عدد حاصل با صفرهای پیش‌رو پر خواهد شد.

می‌توانید قالبی را که توسط مهرزمانی آغازین استفاده می‌شود با <START:format> کنترل کنید. در صورت تعیین نشدن، قالب به‌طور پیش‌فرض '%H:%M:%S' خواهد بود. کدهای قالب معتبر عبارتند از:

•%h – ساعت
•%H – ساعت با صفر پیش‌رو تا دو رقم
•%m – دقیقه
•%M – دقیقه با صفر پیش‌رو تا دو رقم
•%s – ثانیه
•%S – ثانیه‌ها با صفر پیشرو تا دو رقم پر شده
•%n – نانوثانیه‌ها با نه رقم
•%<1-9>n – نانوثانیه‌ها تا سقف نه رقم (مثلاً سه رقم با %3n)

رشته‌ی '<TITLE>' تنها هنگام تولید فصل‌ها برای فایل‌های الحاق‌شده پر می‌شود. در صورت وجود، با عنوان فایل الحاق‌شده جایگزین خواهد شد.

--cue-chapter-name-format format

mkvmerge(1) از خواندن برگه‌های CUE برای فایل‌های صوتی به‌عنوان ورودی فصل‌ها پشتیبانی می‌کند. برگه‌های CUE معمولاً شامل ورودی‌های PERFORMER و TITLE برای هر مدخل نمایه هستند. mkvmerge(1) از این دو رشته برای ساختن نام فصل استفاده می‌کند. با این گزینه می‌توان قالبی که برای این نام استفاده می‌شود را مشخص کرد.

اگر این گزینه داده نشود، پیش‌فرض mkvmerge(1) قالب '%p - %t' خواهد بود (نام اجراکننده، به دنبال آن یک فاصله، یک خط تیره، فاصله‌ای دیگر و سپس عنوان).

اگر قالب مشخص شود، همه‌چیز به جز نویسه‌های متای زیر عیناً کپی شده و نویسه‌های متا به‌صورت زیر جایگزین می‌شوند:

•%p با رشته‌ی PERFORMER مدخل جاری جایگزین می‌شود،
•%t با رشته‌ی TITLE مدخل جاری جایگزین می‌شود،
•%n با شماره قطعه‌ی جاری جایگزین می‌شود و
•%N با شماره قطعه‌ی جاری جایگزین می‌شود که در صورت کمتر بودن از ۱۰ با یک صفر پیشرو پر می‌شود.

--chapters file-name

اطلاعات فصل‌ها را از فایل file-name می‌خواند. برای جزئیات، بخش مربوط به فصل‌ها در زیر را ببینید.

--global-tags file-name

برچسب‌های سراسری را از فایل file-name می‌خواند. برای جزئیات، بخش مربوط به برچسب‌ها در زیر را ببینید.

--track-order FID1:TID1,FID2:TID2,...

این گزینه ترتیبی که در آن تراک‌های یک فایل ورودی ایجاد می‌شوند را تغییر می‌دهد. آرگومان یک فهرست جداشده با کاما از جفت‌های شناسه است. هر جفت ابتدا شامل شناسهٔ فایل (FID1) است که صرفاً شمارهٔ فایل در خط فرمان با شروع از 0 است. مقدار دوم، شناسهٔ تراک (TID1) از آن فایل است. اگر برخی شناسه‌های تراک حذف شوند، آن تراک‌ها پس از مواردی که با این گزینه مشخص شده‌اند ایجاد می‌شوند.

اگر این گزینه داده نشود، تراک‌ها ابتدا بر اساس نوعشان و سپس بر اساس ترتیب فایل مبدأ مرتب می‌شوند. تراک‌های ویدیویی ابتدا می‌آیند و پس از آن‌ها تراک‌های صوتی و زیرنویس قرار می‌گیرند. سایر انواع تراک که به ندرت استفاده می‌شوند در انتها می‌آیند.

--cluster-length spec

تعداد بلوک‌های داده یا مدت‌زمان داده در هر کلاستر را محدود می‌کند. پارامتر spec می‌تواند یک عدد n بدون واحد یا یک عدد d با پسوند 'ms' باشد.

اگر از هیچ واحدی استفاده نشود، mkvmerge(1) حداکثر n بلوک داده را در هر کلاستر قرار خواهد داد. حداکثر تعداد بلوک‌ها ۶۵۵۳۵ است.

اگر عدد d با پسوند 'ms' همراه باشد، mkvmerge(1) حداکثر d میلی‌ثانیه داده را در هر کلاستر قرار می‌دهد. کمینهٔ مقدار برای d برابر '100ms' و بیشینهٔ آن '32000ms' است.

mkvmerge(1) به‌طور پیش‌فرض حداکثر ۶۵۵۳۵ بلوک داده و ۵۰۰۰ میلی‌ثانیه داده را در یک کلاستر قرار می‌دهد.

برنامه‌هایی که برای یافتن یک فریم خاص تلاش می‌کنند، تنها می‌توانند مستقیماً به یک کلاستر پرش کنند و پس از آن باید کل کلاستر را بخوانند. بنابراین، ایجاد کلاسترهای بزرگ‌تر ممکن است به پرش‌های زمانی (seeking) نادقیق یا کند منجر شود.

--clusters-in-meta-seek

به mkvmerge(1) می‌گوید که یک عنصر جستجوی متا (meta seek) حاوی تمام کلاسترها در انتهای فایل ایجاد کند. همچنین بخش مربوط به ساختار فایل‌های Matroska(TM) را ببینید.

--timestamp-scale factor

ضریب مقیاس برچسب زمان (timestamp scale factor) را به factor اجبار می‌کند. مقادیر معتبر در محدودهٔ 1000..10000000 یا مقدار ویژهٔ -1 هستند.

به‌طور معمول mkvmerge(1) از مقدار 1000000 استفاده می‌کند، به این معنی که برچسب‌های زمانی و مدت‌زمان‌ها دقتی معادل ۱ میلی‌ثانیه خواهند داشت. برای فایل‌هایی که فاقد تراک ویدیویی بوده اما حداقل یک تراک صوتی دارند، mkvmerge(1) به‌طور خودکار ضریب مقیاس برچسب زمانی را به‌گونه‌ای انتخاب می‌کند که همهٔ برچسب‌های زمانی و مدت‌زمان‌ها دقتی به اندازهٔ یک نمونهٔ صوتی (audio sample) داشته باشند. این کار باعث بار اضافی (overhead) بیشتری می‌شود، اما امکان پرش زمانی و استخراج دقیق را فراهم می‌سازد.

اگر مقدار ویژهٔ -1 استفاده شود، mkvmerge(1) حتی در صورت وجود تراک ویدیویی نیز از دقت نمونه استفاده خواهد کرد.

--enable-durations

مدت‌زمان را برای همهٔ بلوک‌ها می‌نویسد. این کار حجم فایل را افزایش می‌دهد و در حال حاضر هیچ ارزش افزوده‌ای برای پخش‌کننده‌ها ندارد.

--no-cues

به mkvmerge(1) دستور می‌دهد داده‌های cue را که می‌توان آن را با ایندکس در یک فایل AVI مقایسه کرد، نسازد و ننویسد. فایل‌های Matroska(TM) بدون داده‌های cue نیز قابل پخش هستند، اما پرش زمانی (seeking) احتمالاً نادقیق و کندتر خواهد بود. از این گزینه تنها در صورتی که شدیداً به فضا نیاز دارید یا برای اهداف آزمایشی استفاده کنید. همچنین گزینهٔ --cues را ببینید که می‌تواند برای هر فایل ورودی مشخص شود.

--no-date

به‌طور پیش‌فرض mkvmerge(1) فیلد اطلاعات بخش “date” را روی تاریخ و زمان آغاز تسهیم‌سازی (multiplexing) تنظیم می‌کند. با این گزینه، این فیلد اصلاً نوشته نمی‌شود.

--date timestamp

فیلد DateUTC نوشته‌شده در اطلاعات بخش را تنظیم می‌کند. برچسب زمانی باید با قالب ISO 8601 سازگار باشد: YYYY-mm-ddTHH:MM:SSZ برای UTC یا همراه با یک آفست ±HH:MM (فاصله به جای T نیز پذیرفته می‌شود)، برای مثال 2017-03-28T17:28:00Z یا 2017-03-28 17:28:00+02:00. در صورت استفاده همزمان با --no-date، گزینهٔ --no-date اولویت دارد و هیچ تاریخی نوشته نخواهد شد.

--disable-lacing

قابلیت 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) با حالت 'canonical'، به شکل زیربرچسب‌های زبان گسترش‌یافته با حالت 'extlang' فعال می‌کند یا با حالت 'off' آن را غیرفعال می‌سازد. به‌طور پیش‌فرض، نرمال‌سازی به شکل متعارف اعمال می‌شود.

در شکل متعارف، تمام زیربرچسب‌هایی که مقادیر ارجح برای آن‌ها وجود دارد، با آن مقادیر ارجح جایگزین می‌شوند. برای مثال این عمل 'zh-yue-jyutping' را به 'yue-jyutping' یا 'fr-FX' را به 'fr-FR' تبدیل می‌کند.

برای حالت زیربرچسب‌های زبان گسترش‌یافته، ابتدا فرم متعارف ساخته می‌شود. سپس تمام زبان‌های اصلی که یک زیربرچسب زبان گسترش‌یافته برای آن‌ها وجود دارد، با آن زیربرچسب زبان گسترش‌یافته و پیشوند آن جایگزین می‌شوند. برای مثال، این کار 'yue-jyutping' را مجدداً به 'zh-yue-jyutping' تبدیل می‌کند، اما هیچ تأثیری روی 'fr-FR' ندارد زیرا 'fr' یک زیربرچسب زبان گسترش‌یافته نیست.

--stop-after-video-ends

پردازش را پس از پایان تراک ویدیویی اصلی متوقف کرده و تمام بسته‌های باقی‌مانده از تراک‌های دیگر را دور می‌اندازد.

--split specification

فایل خروجی را پس از اندازه یا زمانی مشخص تقسیم می‌کند. لطفاً توجه داشته باشید که تراک‌ها تنها می‌توانند درست پیش از یک فریم کلیدی (key frame) تقسیم شوند. بنابراین، نقطهٔ تقسیم ممکن است کمی با آنچه کاربر مشخص کرده است تفاوت داشته باشد.

در حال حاضر mkvmerge(1) از حالت‌های زیر پشتیبانی می‌کند:

1.تقسیم بر اساس اندازه.

نحو: --split [size:]d[k|m|g]

مثال‌ها: --split size:700m یا --split 150000000

پارامتر d می‌تواند به 'k'، 'm' یا 'g' ختم شود تا نشان دهد اندازه به ترتیب بر حسب کیلوبایت، مگابایت یا گیگابایت است. در غیر این صورت، اندازه بر حسب بایت فرض می‌شود. پس از اینکه فایل خروجی فعلی به این حد نصاب اندازه رسید، فایل جدیدی آغاز خواهد شد.

پیشوند 'size:' به دلایل سازگاری می‌تواند حذف شود.

2.تقسیم پس از یک مدت زمان.

نحو: --split [duration:]HH:MM:SS.nnnnnnnnn|ds

مثال‌ها: --split duration:00:60:00.000 یا --split 3600s

پارامتر یا باید به شکل HH:MM:SS.nnnnnnnnn برای تعیین مدت زمان با دقتی تا نانوثانیه باشد، یا عددی مانند d که به دنبال آن حرف 's' برای مدت زمان بر حسب ثانیه می‌آید. HH تعداد ساعت‌ها، MM تعداد دقیقه‌ها، SS تعداد ثانیه‌ها و nnnnnnnnn تعداد نانوثانیه‌ها است. هم تعداد ساعت‌ها و هم تعداد نانوثانیه‌ها را می‌توان نادیده گرفت. بعد از ممیز اعشار می‌تواند تا نه رقم وجود داشته باشد. پس از اینکه مدت زمان محتوای خروجی فعلی به این حد رسید، یک فایل خروجی جدید آغاز خواهد شد.

پیشوند '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 به یک مهر زمانی یکسان اشاره دارند).

اگر مهر زمانی آغاز حذف شود، مقدار پیش‌فرض آن مهر زمانی پایانِ بازهٔ قبلی خواهد بود. اگر بازهٔ قبلی وجود نداشته باشد، به طور پیش‌فرض ابتدای فایل در نظر گرفته می‌شود (مثال ۳ را ببینید).

اگر مهر زمانی پایان حذف شود، مقدار پیش‌فرض آن انتهای فایل‌های مبدأ خواهد بود که اساساً به mkvmerge(1) می‌گوید بقیه را نگه دارد (مثال ۳ را ببینید).

به طور معمول هر بازه در یک فایل جدید نوشته می‌شود. این رفتار را می‌توان تغییر داد تا بازه‌های متوالی در همان فایل نوشته شوند. برای این منظور کاربر باید یک + را پیشوند مهر زمانی آغاز قرار دهد. این کار به mkvmerge(1) می‌گوید که فایل جدیدی ایجاد نکند و در عوض بازه را به همان فایلی که بازهٔ قبلی در آن نوشته شده بود الصاق کند. مهرهای زمانی طوری تنظیم خواهند شد که حتی در صورت وجود وقفه میان دو بازه در فایل ورودی، هیچ وقفه‌ای در فایل خروجی وجود نداشته باشد.

در مثال ۱، mkvmerge(1) دو فایل ایجاد خواهد کرد. فایل اول شامل محتوای آغازشده از 00:01:20 تا 00:02:45 خواهد بود. فایل دوم شامل محتوای آغازشده از 00:05:50 تا 00:10:30 خواهد بود.

در مثال ۲، mkvmerge(1) تنها یک فایل ایجاد خواهد کرد. این فایل هم شامل محتوای آغازشده از 00:01:20 تا 00:02:45 و هم محتوای آغازشده از 00:05:50 تا 00:10:30 خواهد بود.

در مثال ۳، mkvmerge(1) دو فایل ایجاد خواهد کرد. فایل اول شامل محتوا از ابتدای فایل‌های مبدأ تا 00:02:45 خواهد بود. فایل دوم شامل محتوای آغازشده از 00:05:50 تا انتهای فایل‌های مبدأ خواهد بود.


نکته
توجه داشته باشید که mkvmerge(1) تنها در موقعیت فریم‌های کلیدی دربارهٔ تقسیم تصمیم‌گیری می‌کند. این موضوع هم برای ابتدا و هم برای انتهای هر بازه صدق می‌کند. بنابراین حتی اگر یک مهر زمانی پایان بین دو فریم کلیدی باشد، 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: فهرست شده و با کاما از هم جدا شوند. هر محدوده به‌خودی‌خود شامل یک شماره فریم/فیلد آغازین و پایانی است. شماره‌گذاری از ۱ شروع می‌شود.

اگر شماره آغازین حذف شود، پیش‌فرض آن شماره پایان محدوده قبلی خواهد بود. اگر محدوده قبلی وجود نداشته باشد، پیش‌فرض ابتدای فایل است (مثال ۳ را ببینید).

اگر شماره پایانی حذف شود، پیش‌فرض آن انتهای فایل‌های مبدأ خواهد بود که در واقع به mkvmerge(1) می‌گوید بقیه را نگه دارد (مثال ۳ را ببینید).

به‌طور معمول هر محدوده در یک فایل جدید نوشته می‌شود. این رفتار می‌تواند تغییر کند تا محدوده‌های متوالی در همان فایل نوشته شوند. برای این کار، کاربر باید پیشوند + را به ابتدای شماره آغازین اضافه کند. این به mkvmerge(1) می‌گوید که فایل جدیدی ایجاد نکند و در عوض، محدوده را به همان فایلی که محدوده قبلی در آن نوشته شده بود ضمیمه کند. برچسب‌های زمانی به‌گونه‌ای تنظیم می‌شوند که هیچ وقفه‌ای در فایل خروجی وجود نداشته باشد، حتی اگر بین دو محدوده در فایل ورودی وقفه وجود داشته باشد.


نکته
توجه داشته باشید که mkvmerge(1) تصمیم‌گیری درباره تفکیک را فقط در موقعیت‌های فریم کلیدی (key frame) انجام می‌دهد. این موضوع هم در مورد شروع و هم در مورد پایان هر محدوده صدق می‌کند. بنابراین، حتی اگر شماره فریم/فیلد پایانی بین دو فریم کلیدی قرار گیرد، mkvmerge(1) به ارسال فریم‌ها تا فریم کلیدی بعدی (بدون شامل کردن خود آن فریم کلیدی) ادامه خواهد داد.
در مثال ۱، mkvmerge(1) دو فایل ایجاد خواهد کرد. فایل اول شامل محتوایی است که از اولین فریم کلیدی در یا بعد از 137 شروع شده و تا قبل از اولین فریم کلیدی در یا بعد از 258 (بدون شامل کردن آن) ادامه می‌یابد. فایل دوم شامل محتوا از 548 تا 1211 خواهد بود.

در مثال ۲، mkvmerge(1) تنها یک فایل ایجاد خواهد کرد. این فایل هم شامل محتوای آغازشده از 733 تا 912 و هم محتوای آغازشده از 1592 تا 2730 خواهد بود.

در مثال ۳، mkvmerge(1) دو فایل ایجاد خواهد کرد. فایل اول شامل محتوا از ابتدای فایل‌های مبدأ تا 430 خواهد بود. فایل دوم شامل محتوای آغازشده از 2512 تا انتهای فایل‌های مبدأ خواهد بود.

این حالت تنها نخستین ترک ویدیویی را که خروجی داده می‌شود در نظر می‌گیرد. اگر هیچ ترک ویدیویی خروجی داده نشود، هیچ تفکیکی رخ نخواهد داد.


نکته
اعداد ارائه‌شده با این آرگومان بر اساس تعداد بلوک‌های Matroska(TM) که خروجی داده می‌شوند تفسیر می‌گردند. یک بلوک واحد Matroska(TM) یا شامل یک فریم کامل (برای محتوای progressive) است یا یک فیلد منفرد (برای محتوای interlaced). برنامه mkvmerge بین این دو تمایزی قائل نمی‌شود و صرفاً تعداد بلوک‌ها را می‌شمارد. برای مثال: اگر کسی بخواهد پس از بیست‌وپنجمین فریم کامل با محتوای interlaced تفکیک انجام دهد، باید از 50 (دو فیلد به ازای هر فریم کامل) به‌عنوان نقطه تفکیک استفاده کند.
6.تفکیک پس از فریم‌ها/فیلدهای مشخص.

نحو: --split frames:A[,B[,C...]]

مثال: --split frames:120,237,891

پارامترهای A، B، C و غیره همگی باید اعداد صحیح مثبت باشند. شماره‌گذاری از ۱ آغاز می‌شود. فهرست شماره فریم‌ها/فیلدها با کاما از هم جدا می‌شود. پس از اینکه جریان ورودی به شماره فریم/فیلد نقطه تفکیک فعلی برسد، یک فایل جدید ایجاد می‌شود. سپس از نقطه تفکیک بعدی ارائه‌شده در این فهرست استفاده خواهد شد.

پیشوند 'frames:' نباید حذف شود.

این حالت تنها نخستین ترک ویدیویی را که خروجی داده می‌شود در نظر می‌گیرد. اگر هیچ ترک ویدیویی خروجی داده نشود، هیچ تفکیکی رخ نخواهد داد.


نکته
اعداد ارائه‌شده با این آرگومان بر اساس تعداد بلوک‌های Matroska(TM) که خروجی داده می‌شوند تفسیر می‌گردند. یک بلوک واحد Matroska(TM) یا شامل یک فریم کامل (برای محتوای progressive) است یا یک فیلد منفرد (برای محتوای interlaced). برنامه mkvmerge بین این دو تمایزی قائل نمی‌شود و صرفاً تعداد بلوک‌ها را می‌شمارد. برای مثال: اگر کسی بخواهد پس از بیست‌وپنجمین فریم کامل با محتوای interlaced تفکیک انجام دهد، باید از 50 (دو فیلد به ازای هر فریم کامل) به‌عنوان نقطه تفکیک استفاده کند.
7.تفکیک پیش از فصل‌های مشخص.

نحو: --split chapters:all یا --split chapters:A[,B[,C...]]

مثال: --split chapters:5,8

پارامترهای A، B، C و غیره همگی باید اعداد صحیح مثبت باشند. شماره‌گذاری از ۱ آغاز می‌شود. فهرست شماره فصل‌ها با کاما از هم جدا می‌شود. تفکیک دقیقاً پیش از اولین فریم کلیدی رخ می‌دهد که برچسب زمانی آن برابر یا بزرگ‌تر از برچسب زمانی آغاز برای فصل‌هایی باشد که شماره‌شان فهرست شده است. فصلی که در زمان 0s شروع می‌شود هرگز برای تفکیک در نظر گرفته نمی‌شود و بدون اخطار نادیده گرفته خواهد شد.

به‌جای فهرست کردن دستی همه شماره فصل‌ها، می‌توان از کلیدواژه all استفاده کرد.

پیشوند 'chapters:' نباید حذف شود.


نکته
فرمت فایل Matroska(TM) از ساختارهای فصلی تودرتو با عمق دلخواه تحت عنوان 'edition entries' و 'chapter atoms' پشتیبانی می‌کند. با این وجود، این حالت تنها بالاترین سطح از فصل‌ها را در میان تمام edition entryها در نظر می‌گیرد.

برای این حالت تفکیک، با نام فایل خروجی نسبت به حالت عملکرد عادی رفتار متفاوتی صورت می‌گیرد. نام فایل می‌تواند شامل یک عبارت شبیه به printf مانند '%d' شامل پهنای فیلد اختیاری، مثلاً '%02d' باشد. در این صورت، شماره فایل فعلی به‌طور مناسب قالب‌بندی شده و در آن نقطه از نام فایل درج خواهد شد. اگر چنین الگویی وجود نداشته باشد، الگوی '-%03d' دقیقاً پیش از پسوند فایل در نظر گرفته می‌شود: مثلاً '-o output.mkv' به 'output-001.mkv' و غیره منتج خواهد شد. اگر پسوندی وجود نداشته باشد، '-%03d' به انتهای نام پیوست خواهد شد.

الگوی ممکن دیگر '%c' است که با نام نخستین فصل درون فایل جایگزین خواهد شد. توجه داشته باشید در صورتی که '%c' وجود داشته باشد، الگوی '-%03d' به‌طور خودکار اضافه نخواهد شد. --link

هنگام تقسیم فایل خروجی، فایل‌ها را به یکدیگر پیوند می‌دهد. برای جزئیات بیشتر به بخش پیونددهی فایل در زیر مراجعه کنید.

--link-to-previous segment-UID

اولین فایل خروجی را به قطعه‌ای با UID قطعه که توسط پارامتر segment-UID مشخص شده پیوند می‌دهد. برای جزئیات بیشتر به بخش پیونددهی فایل در زیر مراجعه کنید.

اگر SID با = شروع شود، باقی‌مانده آن به‌عنوان نام یک فایل Matroska تفسیر می‌شود که segment UID آن خوانده و استفاده می‌گردد.

--link-to-next segment-UID

آخرین فایل خروجی را به قطعه‌ای با UID قطعه که توسط پارامتر segment-UID مشخص شده پیوند می‌دهد. برای جزئیات بیشتر به بخش پیونددهی فایل در زیر مراجعه کنید.

اگر SID با = شروع شود، باقی‌مانده آن به‌عنوان نام یک فایل Matroska تفسیر می‌شود که segment UID آن خوانده و استفاده می‌گردد.

--append-mode mode

نحوه محاسبه برچسب‌های زمانی را هنگام الحاق فایل‌ها تعیین می‌کند. پارامتر mode می‌تواند دو مقدار داشته باشد: 'file' که مقدار پیش‌فرض است و 'track'.

هنگامی که mkvmerge ترکی (از این پس 'track2_1') از فایل دوم ('file2') را به ترکی (از این پس 'track1_1') از فایل اول ('file1') الحاق می‌کند، باید تمام برچسب‌های زمانی 'track2_1' را به مقداری مشخص جابه‌جا (offset) کند. برای حالت 'file'، این مقدار برابر است با بالاترین برچسب زمانی دیده‌شده در 'file1'، حتی اگر آن برچسب زمانی مربوط به ترکی غیر از 'track1_1' باشد. در حالت track، این مقدار جابه‌جایی برابر با بالاترین برچسب زمانی در 'track1_1' است.

متأسفانه mkvmerge نمی‌تواند به‌طور قابل‌اطمینان تشخیص دهد که از کدام حالت استفاده کند. بنابراین به‌طور پیش‌فرض از حالت 'file' استفاده می‌کند. حالت 'file' معمولاً برای فایل‌هایی که مستقل از یکدیگر ایجاد شده‌اند بهتر عمل می‌کند؛ مانند هنگام الحاق فایل‌های AVI یا MP4. حالت 'track' ممکن است برای منابعی که اساساً بخش‌هایی از یک فایل بزرگ هستند بهتر کار کند، مانند فایل‌های VOB و EVO.

ترک‌های زیرنویس همیشه به‌گونه‌ای پردازش می‌شوند که گویی حالت 'file' فعال است، حتی اگر حالت 'track' فعال باشد.

--append-to SFID1:STID1:DFID1:DTID1[,...]

این گزینه مشخص می‌کند که یک ترک به کدام ترک دیگر الحاق شود. هر مشخصه شامل چهار شناسه است: یک شناسه فایل، یک شناسه ترک، یک شناسه فایل دوم و یک شناسه ترک دوم. جفت اول، «شناسه فایل مبدأ» و «شناسه ترک مبدأ»، ترکی را که قرار است الحاق شود مشخص می‌کند. جفت دوم، «شناسه فایل مقصد» و «شناسه ترک مقصد»، ترکی را مشخص می‌کند که ترک اول به آن الحاق خواهد شد.

اگر این گزینه قید نشود، از یک نگاشت استاندارد استفاده می‌شود. این نگاشت استاندارد هر ترک از فایل جاری را به ترکی از فایل قبلی با همان شناسه ترک الحاق می‌کند. این ویژگی الحاق آسان را ممکن می‌سازد، مثلاً هنگامی که یک فیلم به دو بخش تقسیم شده و هر دو فایل دارای تعداد ترک‌ها و شناسه‌های ترک یکسانی باشند، با دستور 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 یا VOBها)، mkvmerge(1) معمولاً در همان دایرکتوریِ فایل ورودی به دنبال فایل‌هایی می‌گردد که نام پایه یکسانی دارند و تنها در شماره ترتیبی خود تفاوت دارند (مانند '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 )

اگر چندین نام فایل در یک جفت پرانتز قرار گیرند، با آن فایل‌ها به‌گونه‌ای رفتار می‌شود که گویی در یک فایل بزرگ متشکل از محتوای هر یک از فایل‌ها، یکی پس از دیگری متصل شده‌اند.

این قابلیت می‌تواند برای مثال برای فایل‌های VOB حاصل از DVD یا جریان‌های انتقال MPEG استفاده شود. اگر هر فایل شامل مجموعه‌ای از هدرهای مختص به خود باشد (که معمولاً در فایل‌های مستقل مانند AVI یا MP4 چنین است)، این ویژگی قابل استفاده نیست.

قرار دادن نام فایل در پرانتز همچنین مانع از جستجوی mkvmerge(1) برای فایل‌های اضافی با همان نام پایه می‌شود، همان‌طور که در گزینه = توضیح داده شد. بنابراین این دو خط فرمان معادل یکدیگرند:

$ mkvmerge -o out.mkv = file.mkv
$ mkvmerge -o out.mkv '(' file.mkv ')'

چند نکته باید مورد توجه قرار گیرد:

1.باید هم بعد از پرانتز باز و هم قبل از پرانتز بسته فاصله (space) وجود داشته باشد.
2.هر پارامتر بین پرانتزها به‌عنوان یک نام فایل تفسیر می‌شود. بنابراین تمام گزینه‌هایی که به این فایل منطقی اعمال می‌شوند باید قبل از پرانتز باز فهرست شوند.
3.برخی از پوسته‌ها (shells) با پرانتزها به‌عنوان نویسه‌های ویژه رفتار می‌کنند. بنابراین باید آن‌ها را نقل‌قول کرده یا از نویسه گریز (escape) استفاده کنید، همان‌طور که در مثال بالا نشان داده شده است.

--attachment-description description

توضیحات متنی ساده برای پیوست بعدی. برای گزینهٔ بعدی --attach-file یا --attach-file-once اعمال می‌شود.

--attachment-mime-type MIME type

نوع MIME پیوست بعدی. برای گزینهٔ بعدی --attach-file یا --attach-file-once اعمال می‌شود. فهرستی از انواع MIME رسماً شناخته‌شده را می‌توان برای نمونه در صفحه اصلی IANA[2] یافت. نوع MIME برای یک پیوست اجباری است.

اگر هیچ نوع MIME برای یک پیوست مشخص نشود، نوع آن به طور خودکار شناسایی خواهد شد.

--attachment-name name

نامی را که برای این پیوست در فایل خروجی ذخیره خواهد شد تنظیم می‌کند. اگر این گزینه داده نشود، نام از روی نام فایل پیوست که با گزینهٔ --attach-file یا --attach-file-once مشخص شده است مشتق می‌شود.

--attach-file file-name, --attach-file-once file-name

یک پیوست فایلی درون فایل Matroska(TM) ایجاد می‌کند. تفاوت میان این دو حالت در این است که هنگام تقسیم‌بندی (splitting)، فایل‌های پیوست‌شده با --attach-file به همهٔ فایل‌های خروجی پیوست می‌شوند در حالی که فایل‌های پیوست‌شده با --attach-file-once تنها به نخستین فایل ایجادشده پیوست خواهند شد. اگر تقسیم‌بندی استفاده نشود هر دو حالت عملکرد یکسانی دارند.

می‌توان از mkvextract(1) برای استخراج فایل‌های پیوست از یک فایل Matroska(TM) استفاده کرد.

--enable-legacy-font-mime-types

استفاده از انواع MIME قدیمی (legacy) را برای انواع خاصی از پیوست‌های قلم (فونت) فعال می‌کند. برای نمونه، 'application/x-truetype-font' به جای 'fonts/ttf' برای قلم‌های TrueType استفاده خواهد شد.

این امر هم بر پیوست‌های جدید در صورتی که نوع MIME آن‌ها به طور خودکار تشخیص داده شود اثر می‌گذارد و هم بر پیوست‌های موجود که انواع MIME ذخیره‌شدهٔ آن‌ها به انواع قدیمی نگاشت مجدد خواهند شد.

انواع MIME تحت تأثیر عبارت‌اند از 'font/sfnt'، 'font/ttf' و 'font/collection' که همگی به 'application/x-truetype-fonts' نگاشت می‌شوند، و 'font/otf' که به 'application/vnd.ms-opentype' نگاشت می‌شود.

-a, --audio-tracks [!]n,m,...

کپی کردن ترک‌های صوتی n، m و غیره. این اعداد شناسه‌های ترک (track IDs) هستند که می‌توان با سوییچ --identify به دست آورد. آن‌ها صرفاً شماره‌های ترتیب ترک نیستند (بخش track IDs را ببینید). پیش‌فرض: کپی کردن همهٔ ترک‌های صوتی.

به جای شناسه‌های ترک می‌توانید کدهای زبان ISO 639-2 را نیز وارد کنید. این قابلیت تنها برای فایل‌های مبدئی کار می‌کند که برچسب‌های زبان را برای ترک‌های خود ارائه می‌دهند.

پیش‌فرض: کپی کردن همهٔ ترک‌های این نوع.

اگر پیش از شناسه‌ها از ! استفاده شود، معنا معکوس می‌شود: همهٔ ترک‌های این نوع به جز موارد فهرست‌شده پس از ! کپی می‌شوند.

-d, --video-tracks [!]n,m,...

کپی کردن ترک‌های ویدیویی n، m و غیره. این اعداد شناسه‌های ترک هستند که می‌توان با سوییچ --identify به دست آورد. آن‌ها صرفاً شماره‌های ترتیب ترک نیستند (بخش track IDs را ببینید). پیش‌فرض: کپی کردن همهٔ ترک‌های ویدیویی.

به جای شناسه‌های ترک می‌توانید کدهای زبان ISO 639-2 را نیز وارد کنید. این قابلیت تنها برای فایل‌های مبدئی کار می‌کند که برچسب‌های زبان را برای ترک‌های خود ارائه می‌دهند.

اگر پیش از شناسه‌ها از ! استفاده شود، معنا معکوس می‌شود: همهٔ ترک‌های این نوع به جز موارد فهرست‌شده پس از ! کپی می‌شوند.

-s, --subtitle-tracks [!]n,m,...

کپی کردن ترک‌های زیرنویس n، m و غیره. این اعداد شناسه‌های ترک هستند که می‌توان با سوییچ --identify به دست آورد. آن‌ها صرفاً شماره‌های ترتیب ترک نیستند (بخش track IDs را ببینید). پیش‌فرض: کپی کردن همهٔ ترک‌های زیرنویس.

به جای شناسه‌های ترک می‌توانید کدهای زبان ISO 639-2 را نیز وارد کنید. این قابلیت تنها برای فایل‌های مبدئی کار می‌کند که برچسب‌های زبان را برای ترک‌های خود ارائه می‌دهند.

اگر پیش از شناسه‌ها از ! استفاده شود، معنا معکوس می‌شود: همهٔ ترک‌های این نوع به جز موارد فهرست‌شده پس از ! کپی می‌شوند.

-b, --button-tracks [!]n,m,...

کپی کردن ترک‌های دکمه (button tracks) n، m و غیره. این اعداد شناسه‌های ترک هستند که می‌توان با سوییچ --identify به دست آورد. آن‌ها صرفاً شماره‌های ترتیب ترک نیستند (بخش track IDs را ببینید). پیش‌فرض: کپی کردن همهٔ ترک‌های دکمه.

به جای شناسه‌های ترک می‌توانید کدهای زبان ISO 639-2 را نیز وارد کنید. این قابلیت تنها برای فایل‌های مبدئی کار می‌کند که برچسب‌های زبان را برای ترک‌های خود ارائه می‌دهند.

اگر پیش از شناسه‌ها از ! استفاده شود، معنا معکوس می‌شود: همهٔ ترک‌های این نوع به جز موارد فهرست‌شده پس از ! کپی می‌شوند.

--track-tags [!]n,m,...

کپی کردن برچسب‌ها برای ترک‌های n، m و غیره. این اعداد شناسه‌های ترک هستند که می‌توان با سوییچ --identify به دست آورد (بخش track IDs را ببینید). آن‌ها صرفاً شماره‌های ترتیب ترک نیستند. پیش‌فرض: کپی کردن برچسب‌ها برای همهٔ ترک‌ها.

اگر پیش از شناسه‌ها از ! استفاده شود، معنا معکوس می‌شود: همه چیز به جز شناسه‌های فهرست‌شده پس از ! کپی می‌شود.

-m, --attachments [!]n[:all|first],m[:all|first],...

کپی کردن پیوست‌های دارای شناسه‌های n، m و غیره به همه یا تنها به نخستین فایل خروجی. پس از هر شناسه می‌توان ':all' (که در صورت وارد نکردن هیچ‌کدام، حالت پیش‌فرض است) یا ':first' را درج کرد. اگر تقسیم‌بندی فعال باشد، آن دسته از پیوست‌هایی که شناسهٔ آن‌ها با ':all' مشخص شده است به همهٔ فایل‌های خروجی حاصل کپی می‌شوند، در حالی که بقیه تنها در نخستین فایل خروجی کپی خواهند شد. اگر تقسیم‌بندی فعال نباشد، هر دو حالت اثر یکسانی دارند.

پیش‌فرض کپی کردن تمام پیوست‌ها در تمام فایل‌های خروجی است.

اگر پیش از شناسه‌ها از ! استفاده شود، معنا معکوس می‌شود: همه چیز به جز شناسه‌های فهرست‌شده پس از ! کپی می‌شود.

-A, --no-audio

هیچ ترک صوتی از این فایل کپی نشود.

-D, --no-video

هیچ ترک ویدیویی از این فایل کپی نشود.

-S, --no-subtitles

هیچ ترک زیرنویسی از این فایل کپی نشود.

-B, --no-buttons

هیچ ترک دکمه‌ای از این فایل کپی نشود.

-T, --no-track-tags

هیچ برچسب ویژهٔ ترکی از این فایل کپی نشود. --no-chapters
فصل‌ها را از این فایل کپی نکنید.

-M, --no-attachments

پیوست‌ها را از این فایل کپی نکنید.

--no-global-tags

برچسب‌های عمومی (global tags) را از این فایل کپی نکنید.

--regenerate-track-uids

هنگامی که از این گزینه برای یک فایل مبدأ Matroska استفاده شود، mkvmerge(1) به جای نگه‌داشتن شناسه‌های یکتای موجود در فایل، شناسه‌های تصادفی یکتای جدیدی برای قطعه‌ها ایجاد خواهد کرد. شناسه‌های قطعه (UID) موجود در فصل‌ها و برچسب‌های خوانده‌شده از همان فایل، به مقادیر تازه تولیدشده نگاشت مجدد می‌شوند.

این رفتار به صورت خودکار برای فایل‌های Matroska ایجادشده توسط نرم‌افزار MakeMKV فعال می‌شود. دلیل آن این است که MakeMKV به جای ایجاد شناسه‌های تصادفی، از اعداد متوالی (۱، ۲، ۳...) به عنوان UID استفاده می‌کند.

-y, --sync TID:d[,o[/p]]

برچسب‌های زمانی قطعه با شناسهٔ TID را به میزان d میلی‌ثانیه تنظیم می‌کند. شناسه‌های قطعه همان‌هایی هستند که با گزینهٔ --identify مشخص شده‌اند (بخش track IDs را ببینید).

o/p: برچسب‌های زمانی را به اندازهٔ o/p تنظیم می‌کند تا رانش‌های خطی (linear drifts) تصحیح شوند. در صورت حذف، مقدار پیش‌فرض p برابر 1 است. هر دو مقدار o و p می‌توانند اعداد ممیز شناور باشند.

پیش‌فرض‌ها: بدون تصحیح دستی همگام‌سازی (که همان d = 0 و o/p = 1.0 است).

این گزینه می‌تواند چندین بار برای یک فایل ورودی استفاده شود تا با انتخاب شناسه‌های قطعهٔ متفاوت در هر بار، روی چندین قطعه اعمال گردد.

--cues TID:none|iframes|all

کنترل می‌کند که ورودی‌های cue (نمایه) برای کدام بلوک‌های قطعهٔ داده‌شده ایجاد شوند (بخش track IDs را ببینید). مقدار 'none' مانع از ایجاد ورودی‌های cue می‌شود. برای 'iframes' تنها بلوک‌های فاقد ارجاع به عقب یا جلو (= فریم‌های I در قطعه‌های ویدیویی) در برگهٔ cue قرار می‌گیرند. مقدار 'all' باعث می‌شود mkvmerge(1) برای تمامی بلوک‌ها ورودی cue ایجاد کند که اندازهٔ فایل را بسیار حجیم خواهد کرد.

مقدار پیش‌فرض برای قطعه‌های ویدیویی و زیرنویس 'iframes' و برای قطعه‌های صوتی 'none' است. همچنین گزینهٔ --no-cues را ببینید که صرف‌نظر از گزینه‌های --cues استفاده‌شده، از ایجاد ورودی‌های cue جلوگیری می‌کند.

این گزینه می‌تواند چندین بار برای یک فایل ورودی به کار رود تا با انتخاب شناسه‌های قطعهٔ متفاوت در هر بار، بر روی چندین قطعه اعمال شود.

--default-track-flag TID[:bool]

پرچم «قطعهٔ پیش‌فرض» (default track) را برای قطعهٔ مشخص‌شده (بخش track IDs را ببینید) تنظیم می‌کند، در صورتی که آرگومان اختیاری bool روی 1 تنظیم شده باشد یا درج نشده باشد. این پرچم در حالتی که ظرف مبدأ این اطلاعات را ارائه نکرده باشد و کاربر نیز آن را از طریق این گزینه مشخص نکرده باشد نیز تنظیم خواهد شد.

اگر کاربر هنگام پخش به طور صریح قطعه‌ای را انتخاب نکند، پخش‌کننده باید یکی از قطعه‌هایی را که پرچم «قطعهٔ پیش‌فرض» آن‌ها فعال است، با در نظر گرفتن ترجیحات کاربر مانند زبان مورد نظر، برای پخش انتخاب کند.

این گزینه می‌تواند چندین بار برای یک فایل ورودی به کار رود تا با انتخاب شناسه‌های قطعهٔ متفاوت در هر بار، بر روی چندین قطعه اعمال گردد.

--track-enabled-flag TID[:bool]

پرچم «قطعهٔ فعال» (track enabled) را برای قطعهٔ داده‌شده (بخش track IDs را ببینید) روی مقدار bool مشخص‌شده تنظیم می‌کند (0 یا 1؛ در صورت عدم تعیین، پیش‌فرض 1 است). در حالتی که هیچ گزینه‌ای برای آن‌ها تعیین نشده باشد و ظرف مبدأ نیز این اطلاعات را ارائه نداده باشد، قطعه‌ها به طور پیش‌فرض فعال در نظر گرفته می‌شوند.

تنها قطعه‌هایی که پرچم «قطعهٔ فعال» آن‌ها روشن است باید برای پخش در نظر گرفته شوند.

این گزینه می‌تواند چندین بار برای یک فایل ورودی به کار رود تا با انتخاب شناسه‌های قطعهٔ مختلف در هر بار، روی چندین قطعه اعمال شود.

--forced-display-flag TID[:bool]

پرچم «نمایش اجباری» (forced display) را برای قطعهٔ داده‌شده (بخش track IDs را ببینید) تنظیم می‌کند، در صورتی که آرگومان اختیاری bool روی 1 تنظیم شده باشد یا درج نشده باشد. از این گزینه برای قطعه‌های حاوی متن روی تصویر یا دیالوگ‌های زبان خارجی استفاده کنید.

این گزینه می‌تواند چندین بار برای یک فایل ورودی استفاده شود تا با انتخاب شناسه‌های قطعهٔ مختلف در هر بار، بر روی چند قطعه اعمال شود.

--hearing-impaired-flag TID[:bool]

پرچم «کم‌شنوا» (hearing impaired) را برای قطعهٔ داده‌شده (بخش track IDs را ببینید) تنظیم می‌کند، در صورتی که آرگومان اختیاری bool روی 1 تنظیم شده باشد یا درج نشده باشد. اگر این قطعه برای کاربران کم‌شنوا یا دارای آسیب‌های شنوایی مناسب باشد، این پرچم می‌تواند فعال شود.

این گزینه می‌تواند چندین بار برای یک فایل ورودی استفاده شود تا با انتخاب شناسه‌های قطعهٔ متفاوت در هر بار، بر روی چندین قطعه اعمال گردد.

--visual-impaired-flag TID[:bool]

پرچم «کم‌بینا» (visual impaired) را برای قطعهٔ داده‌شده (بخش track IDs را ببینید) تنظیم می‌کند، در صورتی که آرگومان اختیاری bool روی 1 تنظیم شده باشد یا درج نشده باشد. اگر این قطعه برای کاربران کم‌بینا یا دارای آسیب‌های بینایی مناسب باشد، این پرچم می‌تواند فعال شود.

این گزینه می‌تواند چندین بار برای یک فایل ورودی به کار رود تا با انتخاب شناسه‌های قطعهٔ مختلف در هر بار، بر روی چندین قطعه اعمال گردد.

--text-descriptions-flag TID[:bool]

پرچم «توصیف‌های متنی» (text descriptions) را برای قطعهٔ داده‌شده (بخش track IDs را ببینید) تنظیم می‌کند، در صورتی که آرگومان اختیاری bool روی 1 تنظیم شده باشد یا درج نشده باشد. اگر قطعه حاوی توصیف‌های متنی از محتوای تصویری باشد که برای بازتولید از طریق سامانه‌های تبدیل متن‌به‌گفتار برای کاربران کم‌بینا مناسب است، این پرچم می‌تواند تنظیم شود.

این گزینه می‌تواند چندین بار برای یک فایل ورودی استفاده شود تا با انتخاب شناسه‌های قطعهٔ مختلف در هر بار، روی چندین قطعه اعمال گردد.

--original-flag TID[:bool]

پرچم «زبان اصلی» (original language) را برای قطعهٔ مشخص‌شده (بخش track IDs را ببینید) تنظیم می‌کند، در صورتی که آرگومان اختیاری bool روی 1 تنظیم شده باشد یا اصلاً وجود نداشته باشد. این پرچم در حالتی قابل تنظیم است که قطعه به زبان اصلی محتوا (و نه دوبله یا ترجمه) باشد.

این گزینه می‌تواند چندین بار برای یک فایل ورودی به کار رود تا با انتخاب شناسه‌های قطعهٔ مختلف در هر بار، روی چندین قطعه اعمال شود.

--commentary-flag TID[:bool]

پرچم «توضیحات صوتی/تفسیر» (commentary) را برای قطعهٔ مشخص‌شده (بخش track IDs را ببینید) تنظیم می‌کند، در صورتی که آرگومان اختیاری bool روی 1 تنظیم شده باشد یا درج نشده باشد. اگر قطعه حاوی تفسیر و توضیحات باشد، می‌توان این پرچم را فعال کرد.

این گزینه می‌تواند چندین بار برای یک فایل ورودی استفاده شود تا با انتخاب شناسه‌های قطعهٔ مختلف در هر بار، روی چندین قطعه اعمال گردد.

--track-name TID:name

نام قطعه را برای قطعهٔ داده‌شده (بخش track IDs را ببینید) به name تنظیم می‌کند.

--language TID:language

زبان قطعهٔ مشخص‌شده را تعیین می‌کند (بخش track IDs را ببینید). استفاده از هر دو کد زبان ISO 639-2 و کدهای کشور ISO 639-1 مجاز است. کدهای کشور به طور خودکار به کدهای زبان تبدیل خواهند شد. تمام زبان‌ها به همراه کدهای ISO 639-2 مربوطه‌شان را می‌توان از طریق گزینهٔ --list-languages فهرست کرد.

این گزینه می‌تواند چندین بار برای یک فایل ورودی به کار رود تا با انتخاب شناسه‌های قطعهٔ مختلف در هر بار، روی چندین قطعه اعمال گردد.

-t, --tags TID:file-name

برچسب‌های مربوط به قطعه با شمارهٔ TID را از فایل file-name می‌خواند. برای جزئیات بیشتر، بخش مربوط به برچسب‌ها (tags) را در ادامه ببینید.

--aac-is-sbr TID[:0|1]

به mkvmerge(1) اعلام می‌کند که قطعه با شناسهٔ TID از نوع SBR AAC (که به نام HE-AAC یا AAC+ نیز شناخته می‌شود) است. این گزینه زمانی مورد نیاز است که الف) فایل مبدأ یک فایل AAC باشد (نه یک فایل Matroska(TM)) و ب) فایل AAC حاوی داده‌های SBR AAC باشد. دلیل وجود این سوئیچ آن است که از نظر فنی تشخیص خودکار داده‌های معمولی AAC از داده‌های SBR AAC بدون رمزگشایی کامل یک فریم AAC غیرممکن است. با توجه به وجود مسائل متعدد مربوط به حق امتیاز و پتنت در رمزگشاهای AAC، برنامهٔ mkvmerge(1) هرگز شامل این مرحلهٔ رمزگشایی نخواهد بود. بنابراین برای فایل‌های SBR AAC استفاده از این سوئیچ الزامی است. در صورت عدم درج این سوئیچ، ممکن است فایل نهایی به درستی یا اصلاً پخش نشود.

اگر فایل مبدأ یک فایل Matroska(TM) باشد، مقدار CodecID باید برای تشخیص SBR AAC کافی باشد. با این حال، اگر CodecID نادرست باشد، می‌توان از این سوئیچ برای اصلاح آن استفاده کرد.

اگر mkvmerge به اشتباه تشخیص دهد که یک فایل AAC از نوع SBR است، می‌توانید مقدار ':0' را به شناسهٔ قطعه اضافه کنید. --audio-emphasis TID:n|symbolic-name

تأکید (emphasis) را برای ترک صوتی با شناسه ترک TID تنظیم می‌کند. این حالت می‌تواند یک عدد n (مقادیر مشخصی بین 0 و 16) یا یک نام نمادین باشد. تمام اعداد و نام‌های نمادین معتبر را می‌توان با گزینهٔ --list-audio-emphasis فهرست کرد.

--reduce-to-core TID

برخی از کدک‌های صوتی دارای یک هسته با اتلاف (lossy core) و افزونه‌های اختیاری هستند که رمزگشایی بدون اتلاف (lossless) را پیاده‌سازی می‌کنند. این گزینه به mkvmerge(1) می‌گوید که تنها هسته را کپی کند و افزونه‌ها را کپی نکند. به‌طور پیش‌فرض، mkvmerge(1) هم هسته و هم افزونه‌ها را کپی می‌کند.

در حال حاضر تنها ترک‌های DTS تحت تأثیر این گزینه قرار می‌گیرند. ترک‌های TrueHD که حاوی یک هسته تعبیه‌شدهٔ AC-3 هستند، در عوض به عنوان دو ترک جداگانه ارائه می‌شوند که کاربر می‌تواند انتخاب کند کدام ترک کپی شود. برای DTS چنین طرحی کارساز نخواهد بود، زیرا افزونه‌های HD برخلاف داده‌های TrueHD نمی‌توانند به‌تنهایی رمزگشایی شوند.

--remove-dialog-normalization-gain TID

برخی از کدک‌های صوتی شامل فیلدهای سرآیندی هستند که به رمزگشا یا پخش‌کننده می‌گویند یک بهره (معمولاً منفی) را برای عادی‌سازی گفتگو (dialog normalization) اعمال کند. این گزینه به mkvmerge(1) می‌گوید که با تغییر فیلدهای سرآیند مربوطه، این بهره را حذف کند یا به حداقل برساند.

در حال حاضر تنها ترک‌های AC-3، DTS و TrueHD تحت تأثیر این گزینه قرار می‌گیرند.

--timestamps TID:file-name

برچسب‌های زمانی مورد استفاده برای شناسه ترک مشخص را از file-name می‌خواند. این برچسب‌های زمانی با اجبار برچسب‌های زمانی‌ای را که mkvmerge(1) به‌طور معمول محاسبه می‌کند بازنویسی می‌کنند. بخش مربوط به external timestamp files را بخوانید.

--default-duration TID:x

مدت‌زمان پیش‌فرض ترک داده‌شده را به مقدار مشخص‌شده تحمیل می‌کند. همچنین برچسب‌های زمانی ترک را برای مطابقت با مدت‌زمان پیش‌فرض تغییر می‌دهد. آرگومان x باید با 's'، 'ms'، 'us'، 'ns'، 'fps'، 'p' یا 'i' پسوندگذاری شود تا مدت‌زمان پیش‌فرض به ترتیب بر حسب ثانیه، میلی‌ثانیه، میکروثانیه، نانوثانیه، 'فریم بر ثانیه'، 'فریم‌های پیش‌رونده بر ثانیه' یا 'فریم‌های درهم‌بافته بر ثانیه' مشخص شود. خود عدد x می‌تواند یک عدد اعشاری یا کسر باشد.

اگر مدت‌زمان پیش‌فرض تحمیل نشود، mkvmerge تلاش خواهد کرد مدت‌زمان پیش‌فرض ترک را برای انواع خاصی از ترک‌ها مانند AVC/H.264 یا MPEG-2 از کانتینر و/یا جریان بیت کدگذاری‌شده به دست آورد.

این گزینه همچنین می‌تواند برای تغییر FPS ترک‌های ویدیو بدون نیاز به استفاده از فایل برچسب زمانی خارجی استفاده شود.

--fix-bitstream-timing-information TID[:0|1]

به‌طور معمول mkvmerge(1) اطلاعات زمان‌بندی (نرخ فریم/میدان) ذخیره‌شده در جریان بیت ویدیو را تغییر نمی‌دهد. با این گزینه، آن اطلاعات طوری تنظیم می‌شوند که با اطلاعات زمان‌بندی کانتینر مطابقت داشته باشند. اطلاعات زمان‌بندی کانتینر می‌تواند از منابع گوناگونی حاصل شود: از خط فرمان (گزینهٔ --default-duration را ببینید)، کانتینر مبدأ یا استخراج‌شده از جریان بیت.

نکته
این قابلیت تاکنون تنها برای ترک‌های ویدیویی AVC/H.264 پیاده‌سازی شده است.

--compression TID:n

روش فشرده‌سازی مورد استفاده برای ترک را انتخاب می‌کند. توجه داشته باشید که پخش‌کننده نیز باید از این روش پشتیبانی کند. مقادیر معتبر عبارتند از 'none'، 'zlib' و 'mpeg4_p2'/'mpeg4p2'.

روش فشرده‌سازی 'mpeg4_p2'/'mpeg4p2' یک روش فشرده‌سازی ویژه به نام 'header removal' است که تنها برای ترک‌های ویدیویی MPEG4 part 2 در دسترس است.

پیش‌فرض برای برخی از انواع زیرنویس، فشرده‌سازی 'zlib' است. این روش فشرده‌سازی همچنین روشی است که بیشتر (اگر نه همه) برنامه‌های پخش از آن پشتیبانی می‌کنند. پشتیبانی از روش‌های فشرده‌سازی دیگر غیر از 'none' تضمین نمی‌شود.

-f, --fourcc TID:FourCC

مقدار FourCC را به مقدار مشخص‌شده تحمیل می‌کند. فقط برای ترک‌های ویدیو در حالت 'MS compatibility mode' کار می‌کند.

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

پارامترهای برش پیکسل (cropping) یک ترک ویدیو را روی مقادیر ارائه‌شده تنظیم می‌کند.

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

نحوهٔ قرارگیری کروما (chroma) را به‌صورت افقی/عمودی تنظیم می‌کند (0: مشخص‌نشده، 1: منطبق بر بالا (top collocated)، 2: نیمه (half)).

--color-range TID:n

بُرش (clipping) محدوده‌های رنگ را تنظیم می‌کند (0: مشخص‌نشده، 1: محدودهٔ پخش (broadcast range)، 2: محدودهٔ کامل (بدون بُرش)، 3: تعریف‌شده توسط MatrixCoefficients/TransferCharacteristics).

--color-transfer-characteristics TID:n

ویژگی‌های انتقال (transfer characteristics) ویدیو.

مقادیر معتبر و مفهوم آن‌ها عبارتند از:

0: رزروشده، 1: ITU-R BT.709، 2: مشخص‌نشده، 3: رزروشده، 4: منحنی گاما 2.2، 5: منحنی گاما 2.8، 6: SMPTE 170M، 7: SMPTE 240M، 8: خطی (linear)، 9: لگاریتمی (log)، 10: ریشهٔ دوم لگاریتمی (log sqrt)، 11: IEC 61966-2-4، 12: گاموت رنگی گسترش‌یافتهٔ ITU-R BT.1361، 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

رنگ‌های اصلی (color primaries) ویدیو را تنظیم می‌کند.

مقادیر معتبر و مفهوم آن‌ها عبارتند از:

0: رزروشده، 1: ITU-R BT.709، 2: مشخص‌نشده، 3: رزروشده، 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

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

مختصات فام‌داری (chromaticity coordinates) قرمز/سبز/آبی را طبق تعریف CIE 1931 تنظیم می‌کند.

--white-color-coordinates TID:x,y

مختصات فام‌داری رنگ سفید را طبق تعریف CIE 1931 تنظیم می‌کند.

--max-luminance TID:float

حداکثر درخشندگی (luminance) را بر حسب کندلا بر متر مربع (cd/m²) تنظیم می‌کند. مقدار باید کمتر از 9999.99 باشد.

--min-luminance TID:float

حداقل درخشندگی (luminance) را بر حسب کندلا بر متر مربع (cd/m²) تنظیم می‌کند. مقدار باید کمتر از 999.9999 باشد.

--projection-type TID:method

روش تصویرسازی (projection method) ویدیوی استفاده‌شده را تنظیم می‌کند. مقادیر معتبر عبارتند از 0 (تصویرسازی مستطیلی)، 1 (تصویرسازی هم‌مستطیلی [equirectangular])، 2 (تصویرسازی مکعبی [cubemap]) و 3 (تصویرسازی مش [mesh]).

--projection-private TID:data

داده‌های اختصاصی (private data) را تنظیم می‌کند که فقط برای یک تصویرسازی خاص اعمال می‌شود. داده‌ها باید به‌صورت اعداد هگزادسیمال با یا بدون پیشوند "0x"، همراه با یا بدون فاصله وارد شوند.

--projection-pose-yaw TID:float

یک چرخش یاو (yaw rotation) را برای تصویرسازی مشخص می‌کند.

--projection-pose-pitch TID:float

یک چرخش پیچ (pitch rotation) را برای تصویرسازی مشخص می‌کند.

--projection-pose-roll TID:float

یک چرخش رول (roll rotation) را برای تصویرسازی مشخص می‌کند.

--field-order TID:n

ترتیب فیلدها را برای تِرَک ویدیو با شناسهٔ تِرَک TID تنظیم می‌کند. این ترتیب باید یکی از شماره‌های زیر باشد:

0: پیش‌رونده (progressive)؛ 1: درهم‌بافته با نمایش فیلد بالایی در ابتدا و ذخیرهٔ فیلد بالایی در ابتدا؛ 2: ترتیب فیلد نامشخص؛ 6: درهم‌بافته با نمایش فیلد پایینی در ابتدا و ذخیرهٔ فیلد پایینی در ابتدا؛ 9: درهم‌بافته با نمایش فیلد پایینی در ابتدا و ذخیرهٔ فیلد بالایی در ابتدا؛ 14: درهم‌بافته با نمایش فیلد بالایی در ابتدا و ذخیرهٔ فیلد پایینی در ابتدا

--stereo-mode TID:n|symbolic-name

حالت استریو (stereo mode) را برای تِرَک ویدیو با شناسهٔ تِرَک TID تنظیم می‌کند. این حالت می‌تواند یک عدد n بین 0 و 14 یا یک نام نمادین باشد. تمام اعداد و نام‌های معتبر را می‌توان با گزینهٔ --list-stereo-modes فهرست کرد.

--sub-charset TID:character-set

مجموعه نویسه را برای تبدیل به UTF-8 برای زیرنویس‌های UTF-8 برای شناسه قطعه (track ID) داده‌شده تنظیم می‌کند. در صورت عدم تعیین، مجموعه نویسه از تنظیمات محلی (locale) فعلی استخراج خواهد شد. توجه داشته باشید که برای زیرنویس‌های خوانده‌شده از فایل‌های Matroska(TM) یا جریان‌های Kate نیازی به مجموعه نویسه نیست، زیرا این موارد همیشه در قالب UTF-8 ذخیره می‌شوند. برای توضیح درباره نحوه تبدیل بین مجموعه‌های نویسه توسط mkvmerge(1) بخش مربوط به فایل‌های متنی و مجموعه‌های نویسه را ببینید.

این گزینه می‌تواند چندین بار برای یک فایل ورودی استفاده شود و با انتخاب شناسه‌های قطعه متفاوت در هر بار، برای چندین قطعه اعمال گردد.

-i, --identify file-name

به mkvmerge(1) اجازه می‌دهد تا فایل منفرد را بررسی کرده و نوع آن، قطعه‌های موجود در فایل و شناسه قطعه آن‌ها را گزارش دهد. در صورت استفاده از این گزینه، تنها گزینه مجاز دیگر، نام فایل است.

قالب خروجی مورد استفاده برای نتیجه را می‌توان با گزینه --identification-format تغییر داد.

-J file-name

این یک نام مستعار مناسب برای "--identification-format json --identify file-name" است.

-F, --identification-format format

قالب خروجی مورد استفاده توسط گزینه --identify را تعیین می‌کند. قالب‌های زیر پشتیبانی می‌شوند: text (پیش‌فرض در صورت عدم استفاده از این گزینه) و json.
1.قالب text کوتاه و برای انسان خوانا است. این قالب شامل یک خط به ازای هر مورد یافت‌شده است (کانتینر، قطعه‌ها، پیوست‌ها و غیره).

این قالب برای تجزیه شدن در نظر گرفته نشده است. خروجی به زبانی که mkvmerge(1) استفاده می‌کند ترجمه خواهد شد (همچنین --ui-language را ببینید).

2.قالب json یک نمایش JSON ماشین‌خوان را در خروجی می‌دهد. این قالب از شمای JSON شرح داده شده در فایل زیر پیروی می‌کند:

mkvmerge-identification-output-schema-v20.json[3]

تمامی نسخه‌های شمای JSON هم به‌صورت برخط و هم در آرشیوهای کد منبع منتشرشده در دسترس هستند.

--probe-range-percentage percentage

انواع فایل‌هایی مانند جریان‌های برنامه و انتقال MPEG (.vob، .m2ts) برای شناسایی تمام قطعه‌های موجود در فایل، نیازمند تجزیه مقدار مشخصی از داده‌ها هستند. این مقدار 0.3% از اندازه فایل منبع یا 10 مگابایت است، هر کدام که بیشتر باشد.

اگر مشخص باشد قطعه‌هایی وجود دارند اما پیدا نشوند، درصد بررسی را می‌توان با این گزینه تغییر داد. مقدار حداقل 10 مگابایت به صورت پیش‌ساخته است و قابل تغییر نیست.

--list-audio-emphasis

تمام شماره‌های معتبر و نام‌های نمادین متناظر آن‌ها را برای گزینه --audio-emphasis فهرست می‌کند.

--list-languages

تمام زبان‌ها و کد ISO 639-2 آن‌ها را که می‌توان با گزینه --language استفاده کرد، فهرست می‌کند.

--list-stereo-modes

تمام شماره‌های معتبر و نام‌های نمادین متناظر آن‌ها را برای گزینه --stereo-mode فهرست می‌کند.

-l, --list-types

انواع فایل‌های ورودی پشتیبانی‌شده را فهرست می‌کند.

--priority priority

اولویت پردازشی را که mkvmerge(1) با آن اجرا می‌شود تنظیم می‌کند. مقادیر معتبر عبارتند از 'lowest'، 'lower'، 'normal'، 'higher' و 'highest'. در صورت عدم تعیین، از 'normal' استفاده می‌شود. در سیستم‌های شبه‌یونیکس، mkvmerge(1) از تابع nice(2) استفاده خواهد کرد. بنابراین تنها مدیر سیستم (superuser) می‌تواند از 'higher' و 'highest' استفاده کند. در Windows تمام مقادیر برای همه کاربران قابل استفاده هستند.

انتخاب 'lowest' همچنین باعث می‌شود mkvmerge(1) علاوه بر کمترین اولویت ممکن پردازش، اولویت ورودی/خروجی (I/O) بی‌استفاده (idle) را نیز انتخاب کند.

--command-line-charset character-set

مجموعه نویسه را برای تبدیل رشته‌های ارائه‌شده در خط فرمان تنظیم می‌کند. پیش‌فرض آن مجموعه نویسه ارائه‌شده توسط تنظیمات محلی (locale) فعلی سیستم است. این تنظیم برای آرگومان‌های گزینه‌های زیر اعمال می‌شود: --title، --track-name و --attachment-description.

--output-charset character-set

مجموعه نویسه‌ای را که رشته‌های ارسالی به خروجی باید به آن تبدیل شوند تنظیم می‌کند. پیش‌فرض آن مجموعه نویسه ارائه‌شده توسط تنظیمات محلی (locale) فعلی سیستم است.

-r, --redirect-output file-name

تمام پیام‌ها را به جای کنسول در فایل file-name می‌نویسد. در حالی که این کار به‌سادگی با هدایت خروجی (redirection) قابل انجام است، مواردی وجود دارد که این گزینه لازم است: هنگامی که ترمینال خروجی را پیش از نوشتن در فایل، مجدداً تفسیر می‌کند. مجموعه نویسه تعیین‌شده با --output-charset رعایت می‌شود.

--no-bom

به طور معمول فایل‌های متنی که در یکی از گونه‌های UTF ایجاد و کدگذاری می‌شوند، با یک نشانگر ترتیب بایت (BOM) آغاز می‌شوند. استفاده از این گزینه نوشتن نشانگر ترتیب بایت را غیرفعال می‌کند.

--flush-on-close

به برنامه دستور می‌دهد هنگام بستن فایل‌هایی که برای نوشتن باز شده‌اند، تمام داده‌های ذخیره‌شده در حافظه نهان را در فضای ذخیره‌سازی تخلیه (flush) کند. این کار می‌تواند برای جلوگیری از دست رفتن داده‌ها هنگام قطعی برق یا دور زدن مشکلات خاصی در سیستم‌عامل یا درایورها استفاده شود. نکته منفی این است که تسهیم‌سازی زمان بیشتری خواهد برد زیرا mkvmerge پیش از خروج، منتظر می‌ماند تا تمام داده‌ها در فضای ذخیره‌سازی نوشته شوند. برای بحث‌های دقیق درباره مزایا و معایب، گزارش‌های #2469 و #2480 را در سامانه پیگیری باگ MKVToolNix ببینید.

--ui-language code

استفاده از ترجمه‌های زبان code را اجبار می‌کند (برای مثال 'de_DE' برای ترجمه‌های آلمانی). وارد کردن 'list' به عنوان code باعث می‌شود برنامه فهرستی از ترجمه‌های موجود را خروجی دهد.

--abort-on-warnings

به برنامه دستور می‌دهد پس از صدور اولین هشدار متوقف شود. کد خروج برنامه 1 خواهد بود.

--deterministic seed

امکان ایجاد فایل‌های بایت‌به‌بایت یکسان را در صورتی که همان نسخه از mkvmerge(1) با فایل‌های منبع یکسان، مجموعه گزینه‌های یکسان و همان seed استفاده شود، فعال می‌کند. توجه داشته باشید که در این حالت، فیلد اطلاعات قطعه (segment) با عنوان "date" نوشته نمی‌شود.

مقدار seed می‌تواند یک رشته اختیاری باشد و نیازی نیست حتماً یک عدد باشد.

نتیجه فایل‌های بایت‌به‌بایت یکسان تنها تحت شرایط زیر تضمین می‌شود:

1.از همان نسخه mkvmerge(1) که با همان نسخه‌های libEBML و libMatroska ساخته شده است استفاده شود.
2.فایل‌های منبع استفاده‌شده بایت‌به‌بایت یکسان باشند.
3.همان گزینه‌های خط فرمان به همان ترتیب استفاده شوند (به استثنای بارز --output ...).

استفاده از سایر نسخه‌های mkvmerge(1) یا دیگر گزینه‌های خط فرمان ممکن است به فایلی با بایت‌های یکسان منجر شود، اما تضمینی برای آن وجود ندارد.

--debug topic

اشکال‌زدایی را برای یک ویژگی خاص فعال می‌کند. این گزینه فقط برای توسعه‌دهندگان مفید است.

--engage feature

ویژگی‌های آزمایشی را فعال می‌کند. فهرستی از ویژگی‌های موجود را می‌توان با mkvmerge --engage list درخواست کرد. این ویژگی‌ها برای استفاده در شرایط عادی در نظر گرفته نشده‌اند.

--gui-mode

حالت رابط گرافیکی (GUI) را فعال می‌کند. در این حالت ممکن است خطوطی با قالب‌بندی ویژه خروجی داده شوند که به یک رابط گرافیکیِ کنترل‌کننده اطلاع می‌دهند چه رخ داده است. این پیام‌ها از قالب '#GUI#message' پیروی می‌کنند. پیام ممکن است با جفت‌های کلید/مقدار دنبال شود، مانند '#GUI#message#key1=value1#key2=value2...'. نه پیام‌ها و نه کلیدها هرگز ترجمه نمی‌شوند و همواره به زبان انگلیسی خروجی داده می‌شوند.

@options-file.json

آرگومان‌های خط فرمان اضافی را از فایل options-file می‌خواند. برای اطلاعات بیشتر، بخش مربوط به option files را ببینید.

اگر می‌خواهید از علامت @ به‌عنوان نخستین نویسه در آرگومانِ یک گزینه مانند '--title' استفاده کنید، باید آن را با یک علامت @ دوم اِسکِیپ (escape) کنید. مثال:

$ mkvmerge -o midnight-s01e01.mkv --title @@midnight midnight-s01e01.mp4

--capabilities

اطلاعات مربوط به ویژگی‌های اختیاری که در برنامه کامپایل شده‌اند را فهرست کرده و خارج می‌شود. نخستین خط خروجی، اطلاعات نسخه خواهد بود. تمام خطوط بعدی دقیقاً شامل یک کلمه هستند که حضور آن نشان می‌دهد این ویژگی کامپایل شده است. این ویژگی‌ها عبارتند از:
•'FLAC' -- خواندن فایل‌های خام FLAC و مدیریت تِرَک‌های FLAC در سایر کانتینرها، مثلاً Ogg(TM) یا Matroska(TM).

-h, --help

اطلاعات نحوه استفاده را نشان داده و خارج می‌شود.

-V, --version

اطلاعات نسخه را نشان داده و خارج می‌شود.

برای هر فایل، کاربر می‌تواند انتخاب کند که mkvmerge(1) کدام تِرَک‌ها را بردارد. همه‌ی آن‌ها درون فایلی قرار می‌گیرند که با -o مشخص شده است. فهرستی از قالب‌های منبع شناخته‌شده (و پشتیبانی‌شده) را می‌توان با گزینه -l به دست آورد.


مهم

ترتیب گزینه‌های خط فرمان مهم است. لطفاً اگر در استفاده از این برنامه تازه‌کار هستید، بخش "Option order" را بخوانید.

ترتیب وارد کردن گزینه‌ها برای برخی از آن‌ها حائز اهمیت است. گزینه‌ها به دو دسته تقسیم می‌شوند:

1.گزینه‌هایی که بر کل برنامه تأثیر می‌گذارند و به هیچ فایل ورودی خاصی وابسته نیستند. این موارد شامل --command-line-charset، --output یا --title می‌شوند ولی به آن‌ها محدود نیستند. این گزینه‌ها می‌توانند در هر کجای خط فرمان قرار گیرند.
2.گزینه‌هایی که روی یک فایل ورودی واحد یا یک قطعه در یک فایل ورودی تأثیر می‌گذارند. تمام این گزینه‌ها روی فایل ورودیِ بعدی در خط فرمان اعمال می‌شوند. تمام گزینه‌هایی که بر یک فایل ورودی یکسان (یا قطعه‌هایی از همان فایل ورودی) اعمال می‌شوند را می‌توان به هر ترتیبی نوشت، تا زمانی که همگی پیش از نام آن فایل ورودی قرار گیرند. مثال‌هایی از گزینه‌های قابل اعمال روی یک فایل ورودی عبارتند از --no-chapters یا --chapter-charset. مثال‌هایی از گزینه‌های قابل اعمال روی یک قطعه واحد عبارتند از --default-duration یا --language.

گزینه‌ها از چپ به راست پردازش می‌شوند. اگر یک گزینه چندین بار در یک محدوده یکسان تکرار شود، آخرین مورد استفاده خواهد شد. بنابراین در مثال زیر، عنوان روی "Something else" تنظیم خواهد شد:

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

مثال زیر نشان می‌دهد که دو بار استفاده از گزینهٔ --language بلامانع است، زیرا در محدوده‌های متفاوتی استفاده شده‌اند. با اینکه هر دو روی شناسه قطعه (track ID) یکسانی اعمال می‌شوند، اما مربوط به فایل‌های ورودی متفاوتی هستند و در نتیجه محدوده‌های متفاوتی دارند:

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

فرض کنید فایلی با نام MyMovie.avi و قطعه صوتی را در فایلی جداگانه، مثلاً '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' استخراج (rip) می‌کنید. دوباره آن را کدگذاری کرده و به فایل دیگر ملحق نمایید:

$ 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-based) هستند و تفاوتی میان ویدیو و صدا قائل نمی‌شوند.

اگر نیاز به همگام‌سازی یک قطعه صوتی دارید، به سادگی می‌توانید این کار را انجام دهید. ابتدا با دستور زیر ببینید قطعه Vorbis چه شناسه‌ای (track ID) دارد:

$ mkvmerge --identify outofsync.ogg

اکنون می‌توانید از آن شناسه در خط فرمان زیر استفاده کنید:

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

این دستور ۲۰۰ میلی‌ثانیه سکوت به ابتدای قطعه صوتی با شناسهٔ 12345 که از 'outofsync.ogg' گرفته شده، اضافه می‌کند.

برخی فیلم‌ها در ابتدا به درستی همگام هستند اما کم‌کم از حالت همگام خارج می‌شوند. برای این دسته از فیلم‌ها می‌توانید یک ضریب تأخیر تعیین کنید که بر تمام برچسب‌های زمانی (timestamps) اعمال شود -- هیچ داده‌ای اضافه یا حذف نمی‌شود. بنابراین اگر این ضریب را بیش از حد بزرگ یا کوچک انتخاب کنید، نتایج نامطلوبی خواهید گرفت. به عنوان مثال، در یک قسمت که من تبدیل کد (transcode) کردم، در انتهای فیلم که 77340 فریم طول داشت، 0.2 ثانیه ناهمگامی وجود داشت. در نرخ 29.97fps، مقدار 0.2 ثانیه معادل تقریباً 6 فریم است. بنابراین دستور زیر را اجرا کردم:

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

نتیجه رضایت‌بخش بود.

گزینه‌های همگام‌سازی را می‌توان به همین شیوه برای زیرنویس‌ها نیز به کار برد.

برای زیرنویس‌های متنی می‌توانید از برخی نرم‌افزارهای Windows (مانند SubRipper(TM)) یا بستهٔ subrip(TM) موجود در کدهای منبع transcode(1) در پوشهٔ 'contrib/subrip' استفاده کنید. روند کلی به این صورت است:

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) قرار داده‌اید و می‌خواهید کدهای زبان آن‌ها را تنظیم کنید و شناسه‌های تراک آن‌ها 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) مشاهده نمی‌کنید، لطفاً بخش مربوط به مقادیر پیش‌فرض را مطالعه کنید.

غیرفعال کردن فشرده‌سازی برای یک فایل ورودی.

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

برخی از گزینه‌های mkvmerge(1) برای مشخص کردن اینکه باید بر روی کدام قطعه اعمال شوند، به یک شناسه قطعه (track ID) نیاز دارند. این شناسه‌های قطعه هنگام تفکیک (demuxing) فایل ورودی جاری توسط خواننده‌ها، یا در صورتی که mkvmerge(1) با گزینهٔ --identify فراخوانی شود، چاپ می‌شوند. نمونه‌ای از چنین خروجی:

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

شناسه‌های قطعه‌ای را که به قطعه‌های قرار گرفته در فایل MKV خروجی اختصاص داده می‌شوند، با شناسه‌های قطعهٔ فایل‌های ورودی اشتباه نگیرید. تنها شناسه‌های قطعهٔ فایل ورودی برای گزینه‌هایی که به این مقادیر نیاز دارند استفاده می‌شوند.

همچنین توجه داشته باشید که هر فایل ورودی مجموعه شناسه‌های قطعهٔ مخصوص به خود را دارد. بنابراین شناسه‌های قطعه برای فایل 'file1.ext' همان‌طور که توسط 'mkvmerge --identify' گزارش شده است، صرف‌نظر از اینکه چند فایل ورودی دیگر وجود دارد یا 'file1.ext' در چه موقعیتی استفاده شده است، تغییر نمی‌کنند.

شناسه‌های قطعه به این صورت اختصاص می‌یابند:

•فایل‌های AVI: قطعهٔ ویدیو دارای شناسهٔ 0 است. قطعه‌های صوتی شناسه‌ها را به ترتیب صعودی و با شروع از 1 دریافت می‌کنند.
•فایل‌های AAC، AC-3، MP3، SRT و WAV: تک «قطعهٔ» موجود در آن فایل شناسهٔ 0 را دریافت می‌کند.
•بیشتر فایل‌های دیگر: شناسه‌های قطعه به ترتیبی که قطعه‌ها در فایل پیدا می‌شوند با شروع از 0 اختصاص می‌یابند.

گزینه‌هایی که از شناسه قطعه استفاده می‌کنند آن‌هایی هستند که توضیحاتشان شامل 'TID' است. گزینه‌های زیر نیز از شناسه‌های قطعه استفاده می‌کنند: --audio-tracks، --video-tracks، --subtitle-tracks، --button-tracks و --track-tags.

چندین شناسه وجود دارند که معنای ویژه‌ای داشته و در خروجی شناسایی ظاهر نمی‌شوند.

شناسه قطعهٔ ویژهٔ '-1' یک نویسه عام (wildcard) است و سوئیچ داده‌شده را بر روی تمام قطعه‌هایی که از یک فایل ورودی خوانده می‌شوند اعمال می‌کند.

شناسه قطعهٔ ویژهٔ '-2' به فصل‌های موجود در یک فایل منبع اشاره دارد. در حال حاضر تنها گزینهٔ --sync از این شناسهٔ ویژه استفاده می‌کند. به عنوان جایگزینی برای --sync -2:... می‌توان از گزینهٔ --chapter-sync ... استفاده کرد.

قالب Matroska(TM) از دو نوع مختلف از عناصر زبان پشتیبانی می‌کند: عنصر قدیمی و منسوخ‌شدهٔ «Language» حاوی کدهای ۳ حرفی ISO 639-2 و برچسب‌های جدید «LanguageIETF» حاوی برچسب‌های زبان IETF BCP 47. تمام گزینه‌های mkvmerge(1) که یک زبان را می‌پذیرند، برچسب زبان BCP 47 را قبول می‌کنند. mkvmerge(1) در هر کجا که ممکن باشد مقدار عنصر منسوخ‌شدهٔ «Language» را از برچسب‌های زبان BCP 47 مشتق می‌کند.

هنگام شناسایی یک فایل در حالت JSON، عناصر سرآیند قطعهٔ موجود از نوع «LanguageIETF» به عنوان ویژگی قطعهٔ language_ietf خروجی داده می‌شوند.

هنگام نوشتن یک فایل، mkvmerge(1) همواره عناصر «LanguageIETF»، «ChapLanguageIETF» و «TagLanguageIETF» را می‌نویسد (دو مورد آخر تنها در صورتی که به ترتیب فصل‌ها یا برچسب‌ها نوشته شوند). علاوه بر این عناصر، عناصر قدیمی متناظر نیز نوشته خواهند شد؛ آن‌ها روی بخش کد ISO 639-2 از برچسب زبان BCP 47 تنظیم می‌شوند. به عنوان مثال، هنگامی که زبان قطعه روی sr-Cyrl-RS تنظیم شده باشد، «LanguageIETF» روی sr-Cyrl-RS و عنصر قدیمی «Language» روی srp تنظیم خواهد شد.

هنگام خواندن فایل‌های موجود (فایل‌های Matroska، فایل‌های XML فصل یا برچسب و غیره) که از قبل حاوی عناصر «...LanguageIETF» هستند، عناصر موجود حفظ خواهند شد. در غیر این صورت عناصر «...LanguageIETF» بر اساس گزینه‌های خط فرمان و سایر عناصر منسوخ‌شدهٔ موجود «...Language» اضافه خواهند شد.

ایجاد عناصر جدید را می‌توان به طور کامل با گزینهٔ خط فرمان --disable-language-ietf که روی هر سه عنصر جدید عمل می‌کند، غیرفعال کرد.

می‌توانید روش نرمال‌سازی اعمال‌شده بر زیربرچسب‌های زبان گسترش‌یافته را با پارامتر --normalize-language-ietf انتخاب کنید.


نکته

این بخش برای تمام برنامه‌های موجود در MKVToolNix صدق می‌کند، حتی اگر تنها به mkvmerge(1) اشاره کرده باشد.

تمام متن‌ها در یک فایل Matroska(TM) با کدگذاری UTF-8 ذخیره می‌شوند. این بدان معناست که mkvmerge(1) باید هر فایل متنی را که می‌خواند و همچنین هر متنی را که در خط فرمان مشخص می‌شود، از یک مجموعه نویسه به UTF-8 تبدیل کند. در مقابل، این امر همچنین بدان معناست که خروجی mkvmerge(1) باید از UTF-8 دوباره به آن مجموعه نویسه تبدیل شود؛ برای نمونه اگر ترجمه‌ای غیرانگلیسی با --ui-language به کار رود، یا برای متنی که از یک فایل Matroska(TM) سرچشمه می‌گیرد.

mkvmerge(1) این تبدیل را به‌طور خودکار بر اساس وجود نشانگر ترتیب بایت (به‌اختصار: BOM) یا لوکال کنونی سیستم انجام می‌دهد. نحوه استخراج مجموعه نویسه از لوکال به سیستم‌عاملی بستگی دارد که mkvmerge(1) روی آن اجرا می‌شود.

فایل‌های متنی که با یک BOM شروع می‌شوند، از پیش در یکی از قالب‌های UTF کدگذاری شده‌اند. mkvmerge(1) از پنج حالت زیر پشتیبانی می‌کند: UTF-8، UTF-16 لیتل و بیگ اندیان (Little and Big Endian)، UTF-32 لیتل و بیگ اندیان (Little and Big Endian). فایل‌های متنی دارای BOM به‌طور خودکار به UTF-8 تبدیل می‌شوند. هر یک از پارامترهایی که در غیر این صورت مجموعه نویسه را برای چنین فایلی تنظیم می‌کردند (مانند --sub-charset) بدون هیچ پیامی نادیده گرفته می‌شوند.

در سیستم‌های شبه‌یونیکس، mkvmerge(1) از فراخوانی سیستمی setlocale(3) استفاده می‌کند که آن هم به نوبه خود متغیرهای محیطی LANG، LC_ALL و LC_CTYPE را به کار می‌گیرد. مجموعه نویسه حاصل اغلب یکی از UTF-8 یا خانواده ISO-8859-* است و برای تمام عملیات‌های فایل متنی، کدگذاری رشته‌ها در خط فرمان و خروجی به کنسول استفاده می‌شود.

در ویندوز، مجموعه نویسه پیش‌فرضی که برای تبدیل فایل‌های متنی استفاده می‌شود، با یک فراخوانی به فراخوانی سیستمی GetACP() تعیین می‌گردد.

خواندن خط فرمان با استفاده از تابع GetCommandLineW() انجام می‌شود که از پیش یک رشته یونیکد (Unicode) برمی‌گرداند. بنابراین گزینه --command-line-charset در ویندوز نادیده گرفته می‌شود.

خروجی به کنسول شامل سه حالت است:

1.اگر خروجی با گزینه --redirect-output هدایت شود، مجموعه نویسه پیش‌فرض UTF-8 خواهد بود. این مورد را می‌توان با --output-charset تغییر داد.
2.اگر خروجی توسط خود cmd.exe هدایت شود، مثلاً با mkvinfo file.mkv > info.txt آن‌گاه مجموعه نویسه همیشه UTF-8 است و قابل تغییر نیست.
3.در غیر این صورت (هنگام نوشتن مستقیم در کنسول) تابع ویندوزی WriteConsoleW() استفاده می‌شود و گزینه --output-charset نادیده گرفته می‌شود. کنسول باید قادر باشد تمام نویسه‌های یونیکدی را که پشتیبانی زبان مربوط به آن‌ها نصب شده است خروجی دهد (برای نمونه نویسه‌های چینی ممکن است در نسخه‌های انگلیسی ویندوز نمایش داده نشوند).

گزینه‌های زیر وجود دارند که امکان تعیین مجموعه‌های نویسه را فراهم می‌کنند:

•--sub-charset برای فایل‌های متنی زیرنویس و ترک‌های متنی زیرنویس ذخیره‌شده در قالب‌های نگه‌دارنده (container) که مجموعه نویسه آن‌ها را نمی‌توان به‌طور نامبهم تعیین کرد (مانند فایل‌های Ogg)،
•--chapter-charset برای فایل‌های متنی فصل‌ها و برای فصل‌ها و عناوین فایلی که در قالب‌های نگه‌دارنده ذخیره شده‌اند و مجموعه نویسه آن‌ها را نمی‌توان به‌طور نامبهم تعیین کرد (مانند فایل‌های Ogg برای اطلاعات فصل، عناوین ترک و فایل و غیره؛ فایل‌های MP4 برای اطلاعات فصل)،
•--command-line-charset برای تمام رشته‌ها در خط فرمان،
•--output-charset برای تمام رشته‌هایی که در کنسول یا در فایلی که خروجی با گزینه --redirect-output به آن هدایت شده نوشته می‌شوند. در سیستم‌های غیرویندوزی، پیش‌فرض برای مجموعه نویسه خروجی، مجموعه نویسه کنونی سیستم است. در ویندوز، هم هنگام تغییر مسیر با --redirect-output و هم با خود cmd.exe، مانند mkvinfo file.mkv > info.txt پیش‌فرض بر روی UTF-8 تنظیم شده است.

فایل گزینه‌ها فایلی است که mkvmerge(1) می‌تواند آرگومان‌های خط فرمان اضافی را از آن بخواند. این قابلیت می‌تواند برای دور زدن برخی محدودیت‌های شل یا سیستم‌عامل هنگام اجرای برنامه‌های خارجی، مانند محدودیت در طول خط فرمان، به کار رود.

یک فایل گزینه‌ها حاوی داده‌های با قالب JSON است. محتوای آن باید یک آرایه معتبر JSON باشد که صرفاً از رشته‌های JSON تشکیل شده است. کدگذاری (encoding) فایل باید UTF-8 باشد. فایل نباید با نشانگر ترتیب بایت (BOM) آغاز شود، اما در صورت وجود، نادیده گرفته خواهد شد.

قواعد گریز (escaping) نویسه‌های خاص درون JSON همان موارد مشخص‌شده در مشخصات رسمی JSON، یعنی RFC 7159[4] هستند.

نام خود فایل گزینه‌ها باید به عنوان یک آرگومان خط فرمان همراه با پیشوند نویسه '@' مشخص شود.

خط فرمان 'mkvmerge -o "my file.mkv" -A "a movie.avi" sound.ogg' می‌تواند به فایل گزینه‌های JSON زیر، برای مثال به نام 'options.json' تبدیل شود:

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

دستور معادل آن در این صورت 'mkvmerge @options.json' خواهد بود.

فرمت Matroska(TM) از پیوند دادن فایل‌ها (file linking) پشتیبانی می‌کند که بیانگر این است که یک فایل خاص، پیشین یا پسین فایل فعلی است. به بیان دقیق‌تر، در واقع این خود فایل‌ها نیستند که پیوند داده می‌شوند، بلکه سگمنت‌های Matroska(TM) هستند. از آن‌جا که احتمالاً بیشتر فایل‌ها فقط حاوی یک سگمنت Matroska(TM) هستند، توضیحات زیر از اصطلاح 'پیوند فایل' استفاده می‌کنند، اگرچه 'پیوند سگمنت' مناسب‌تر است.

هر سگمنت با یک UID سگمنت ۱۲۸ بیتی یکتا شناسایی می‌شود. این UID به طور خودکار توسط mkvmerge(1) تولید می‌شود. پیوند دادن اساساً از طریق قرار دادن UIDهای سگمنت (به اختصار: SID) فایل قبلی/بعدی در اطلاعات سرایند (header) سگمنت انجام می‌پذیرد. mkvinfo(1) در صورت یافتن این SIDها آن‌ها را چاپ می‌کند.

اگر یک فایل به چند فایل کوچک‌تر تقسیم شده و از پیوند استفاده شود، برچسب‌های زمانی دوباره از ۰ شروع نخواهند شد، بلکه از جایی که فایل قبلی متوقف شده است ادامه می‌یابند. به این ترتیب زمان مطلق حتی در صورت در دسترس نبودن فایل‌های قبلی (مثلاً هنگام پخش جریانی/استریم) حفظ می‌شود. در صورتی که از پیوند استفاده نشود، برچسب‌های زمانی برای هر فایل باید از ۰ شروع شوند. به طور پیش‌فرض mkvmerge(1) از پیوند دادن فایل‌ها استفاده نمی‌کند. در صورت نیاز می‌توانید آن را با گزینه --link فعال کنید. این گزینه تنها در صورتی مفید است که تقسیم فایل‌ها (splitting) نیز فعال باشد.

صرف‌نظر از اینکه تقسیم فایل فعال باشد یا خیر، کاربر می‌تواند به mkvmerge(1) دستور دهد تا فایل‌های تولید شده را به SIDهای مشخصی پیوند دهد. این کار با استفاده از گزینه‌های --link-to-previous و --link-to-next انجام می‌شود. این گزینه‌ها یک SID سگمنت را در قالبی که mkvinfo(1) خروجی می‌دهد می‌پذیرند: ۱۶ عدد در مبنای شانزده (هگزادسیمال) بین 0x00 و 0xff که هر کدام با '0x' شروع می‌شوند؛ مانند '0x41 0xda 0x73 0x66 0xd9 0xcf 0xb2 0x1e 0xae 0x78 0xeb 0xb4 0x5e 0xca 0xb3 0x93'. علاوه بر این می‌توان از یک شکل کوتاه‌تر نیز استفاده کرد: ۱۶ عدد هگزادسیمال بین 0x00 و 0xff بدون پیشوند '0x' و بدون فاصله؛ مانند '41da7366d9cfb21eae78ebb45ecab393'.

اگر از تقسیم فایل استفاده شود، نخستین فایل به SID تعیین‌شده با --link-to-previous و آخرین فایل به SID تعیین‌شده با --link-to-next پیوند می‌یابد. اگر از تقسیم استفاده نشود، تک‌فایل خروجی به هر دوی این دو SID پیوند داده خواهد شد.

مشخصات Matroska(TM) بیان می‌کند که برخی از عناصر دارای یک مقدار پیش‌فرض هستند. معمولاً عنصری که مقدار آن با مقدار پیش‌فرض یکسان باشد، جهت صرفه‌جویی در فضا در فایل نوشته نمی‌شود. عناصری که ممکن است کاربر جای آن‌ها را در خروجی mkvinfo(1) خالی ببیند، عناصر language و default track flag هستند. مقدار پیش‌فرض برای language برابر با انگلیسی ('eng') است و مقدار پیش‌فرض برای default track flag برابر با true می‌باشد. بنابراین اگر از --language 0:eng برای یک تِرَک استفاده کنید، در خروجی mkvinfo(1) نمایش داده نخواهد شد.

شاید بخواهید تصاویری را همراه با فایل Matroska(TM) خود نگهداری کنید، یا از زیرنویس‌های SSA استفاده می‌کنید و به یک قلم (فونت) TrueType(TM) خاص و نایاب نیاز دارید. در این موارد می‌توانید آن فایل‌ها را به فایل Matroska(TM) پیوست کنید. آن‌ها تنها به انتهای فایل الحاق نمی‌شوند، بلکه درون آن تعبیه (embed) می‌گردند. پس از آن، یک پخش‌کننده می‌تواند آن فایل‌ها را نمایش دهد (مورد 'تصاویر') یا از آن‌ها برای رندر کردن زیرنویس‌ها استفاده کند (مورد 'قلم‌های 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 تغییر داد..SH "فصل‌ها (CHAPTERS)"

سیستم فصل‌بندی Matroska(TM) بسیار قدرتمندتر از سیستم قدیمی و شناخته‌شده مورد استفاده در فایل‌های OGM است. مشخصات کامل را می‌توان در وبگاه Matroska(TM)[1] یافت.

mkvmerge(1) از دو نوع فایل فصل‌بندی به عنوان ورودی پشتیبانی می‌کند. قالب نخست، که 'قالب فصل‌بندی ساده' ('simple chapter format') نامیده می‌شود، همان قالبی است که ابزارهای OGM انتظار دارند. قالب دوم یک قالب فصل‌بندی مبتنی بر XML است که از تمام قابلیت‌های فصل‌بندی Matroska(TM) پشتیبانی می‌کند.

علاوه بر فایل‌های اختصاصی فصل‌بندی، 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) هر جفت خط را به یک ChapterAtom در Matroska(TM) تبدیل خواهد کرد. این ابزار هیچ ChapterTrackNumber را تنظیم نمی‌کند، به این معنی که تمام فصل‌ها برای همه ترک‌های موجود در فایل اعمال می‌شوند.

از آنجا که این یک فایل متنی است، ممکن است نیاز به تبدیل مجموعه نویسه‌ها (character set) باشد. برای توضیح در مورد چگونگی تبدیل بین مجموعه‌های نویسه توسط mkvmerge(1)، بخش مربوط به فایل‌های متنی و مجموعه‌های نویسه (text files and character sets) را ببینید.

قالب فصل‌بندی مبتنی بر 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.زبان و کشور را می‌توان تعیین کرد.

توزیع mkvtoolnix شامل تعدادی فایل نمونه در زیردایرکتوری 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)

mkvmerge(1) می‌تواند فصل‌ها را از Blu-rayهای رمزگذاری‌نشده بخواند. برای این کار می‌توانید از مسیر یکی از فهرست‌های پخش MPLS به همراه پارامتر --chapters استفاده کنید.

مثال: --chapters /srv/blurays/BigBuckBunny/BDMV/PLAYLIST/00001.mpls

هنگامی که MKVToolNix با کتابخانهٔ libdvdread(TM) کامپایل شده باشد، mkvmerge(1) می‌تواند فصل‌ها را از DVDها بخواند. برای این کار می‌توانید مسیر یکی از پوشه‌ها یا فایل‌های موجود در DVD را به همراه پارامتر --chapters به کار ببرید. از آنجا که DVDها می‌توانند شامل بیش از یک عنوان باشند و هر عنوان مجموعه فصل‌های خود را دارد، می‌توانید یک دونقطه و شمارهٔ عنوان مورد نظر را به انتهای آرگومان نام فایل اضافه کنید. شمارهٔ عنوان به طور پیش‌فرض 1 است.

مثال: --chapters /srv/dvds/BigBuckBunny/VIDEO_TS:2

هنگام تقسیم فایل‌ها، mkvmerge(1) فصل‌ها را نیز به درستی تنظیم می‌کند. این بدان معناست که هر فایل تنها شامل ورودی‌های فصلی است که به آن مربوط می‌شود، و نشانه‌های زمانی (timestamps) برای مطابقت با نشانه‌های زمانی جدید هر فایل خروجی آفست خواهند شد.

mkvmerge(1) قادر است فصل‌ها را از فایل‌های منبع Matroska(TM) کپی کند مگر اینکه این قابلیت صراحتاً با گزینهٔ --no-chapters غیرفعال شده باشد. فصل‌ها از تمام منابع (فایل‌های Matroska(TM)، فایل‌های Ogg، فایل‌های MP4، فایل‌های متنی فصل) معمولاً ادغام نمی‌شوند بلکه در ChapterEditionهای جداگانه قرار می‌گیرند. تنها در صورتی که فصل‌ها از چند فایل Matroska(TM) یا XML خوانده شوند که UIDهای ویرایش (edition UIDs) یکسانی داشته باشند، فصل‌ها در یک ChapterEdition واحد ادغام خواهند شد. چنانچه چنین ادغامی در موقعیت‌های دیگر نیز مورد نیاز باشد، کاربر باید ابتدا فصل‌ها را از تمام منابع با mkvextract(1) استخراج کند، فایل‌های XML را به صورت دستی ادغام کرده و سپس آن‌ها را مالتی‌پلکس (mux) نماید.

سیستم برچسب‌گذاری Matroska(TM) مشابه با سایر قالب‌های نگه‌دارنده است: مجموعه‌ای از جفت‌های KEY=VALUE. با این وجود، در Matroska(TM) این برچسب‌ها می‌توانند تو در تو نیز باشند، و هر دو بخش KEY و VALUE عناصر مستقل خود هستند. فایل نمونهٔ example-tags-2.xml نحوهٔ استفاده از این سیستم را نشان می‌دهد.

برچسب‌های Matroska(TM) به طور خودکار بر کل فایل اعمال نمی‌شوند. آن‌ها می‌توانند اعمال شوند، اما ممکن است بر بخش‌های متفاوتی از فایل نیز اعمال گردند: بر یک یا چند تراک، بر یک یا چند فصل، یا حتی ترکیبی از هر دو. مشخصات Matroska(TM)[5] جزئیات بیشتری در مورد این موضوع ارائه می‌دهد.

یک نکتهٔ مهم این است که برچسب‌ها با استفاده از عنصر برچسب Targets در Matroska(TM) به تراک‌ها یا فصل‌ها پیوند داده می‌شوند، و UIDهای به کار رفته برای این پیوند، شناسه‌های تراکی (track IDs) که mkvmerge(1) در همه‌جا استفاده می‌کند نیستند. در عوض، شماره‌های استفاده‌شده همان UIDهایی هستند که mkvmerge(1) به طور خودکار محاسبه می‌کند (اگر تراک از قالب فایلی به جز Matroska(TM) گرفته شده باشد) یا در صورتی که فایل منبع تراک یک فایل Matroska(TM) باشد، از فایل منبع کپی می‌شوند. بنابراین دشوار است که پیش از تحویل فایل به mkvmerge(1) بدانید از کدام UIDها در فایل برچسب استفاده کنید.

mkvmerge(1) دو گزینه را می‌شناسد که با آن‌ها می‌توانید برچسب‌ها را به فایل‌های Matroska(TM) اضافه کنید: گزینه‌های --global-tags و --tags. تفاوت در این است که گزینهٔ اول، --global-tags، با حذف هر یک از آن عناصر Targets که در بالا ذکر شد، باعث می‌شود برچسب‌ها بر کل فایل اعمال گردند. گزینهٔ دوم، --tags، به طور خودکار UID تولید شده توسط mkvmerge(1) را برای برچسب مشخص‌شده در بخش TID گزینهٔ --tags درج می‌کند.

فرض کنید می‌خواهید برچسب‌هایی را به یک تراک ویدیویی خوانده‌شده از یک AVI اضافه کنید. دستور mkvmerge --identify file.avi به شما می‌گوید که شناسهٔ (ID) تراک ویدیو (این ID را با UID اشتباه نگیرید!) برابر با 0 است. بنابراین فایل برچسب خود را ایجاد می‌کنید، تمام عناصر Targets را حذف می‌کنید و mkvmerge(1) را فراخوانی می‌نمایید:

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

mkvmerge(1) از یک قالب فایل برچسب مبتنی بر XML پشتیبانی می‌کند. این قالب بسیار نزدیک به مشخصات Matroska(TM)[5] طراحی شده است. هم توزیع‌های باینری و هم سورس MKVToolNix همراه با یک فایل نمونه به نام example-tags-2.xml عرضه می‌شوند که صرفاً تمام برچسب‌های شناخته‌شده را فهرست می‌کند و می‌تواند به عنوان پایه‌ای برای فایل‌های برچسب واقعی به کار رود.

اصول اولیه عبارتند از:

•بیرونی‌ترین عنصر باید <Tags> باشد.
•یک برچسب منطقی درون یک جفت از تگ‌های XML به صورت <Tag> قرار می‌گیرد.
•فاصله‌های خالی (White spaces) بلافاصله پیش و پس از محتویات برچسب نادیده گرفته می‌شوند.

سامانهٔ برچسب‌گذاری جدید Matroska(TM) تنها دو نوع داده را می‌شناسد: یک رشتهٔ UTF-8 و یک نوع باینری (دودویی). اولی برای نام برچسب و عنصر <String> به کار می‌رود، در حالی که نوع باینری برای عنصر <Binary> استفاده می‌شود.

از آنجا که داده‌های باینری به خودی خود در یک فایل XML جای نمی‌گیرند، mkvmerge(1) از دو روش دیگر برای ذخیره‌سازی داده‌های باینری پشتیبانی می‌کند. اگر محتوای یک برچسب XML با '@' آغاز شود، متن پس از آن به عنوان نام یک فایل در نظر گرفته می‌شود. محتوای فایل مربوطه درون عنصر Matroska(TM) کپی خواهد شد.

در غیر این صورت، انتظار می‌رود که داده‌ها با کدگذاری Base64 باشند. این یک روش کدگذاری است که داده‌های باینری را به مجموعه‌ای محدود از نویسه‌های ASCII تبدیل می‌کند و برای نمونه در برنامه‌های ایمیل به کار می‌رود. mkvextract(1) برای عناصر باینری، داده‌ها را به صورت کدگذاری‌شده با Base64 خروجی می‌دهد.

سامانهٔ برچسب‌گذاری منسوخ‌شده انواع دادهٔ دیگری را نیز می‌شناسد که در مشخصات رسمی برچسب‌های Matroska(TM) یافت می‌شوند. از آنجا که mkvmerge(1) دیگر از این سامانه پشتیبانی نمی‌کند، این نوع‌ها در اینجا شرح داده نشده‌اند.

فهرست زیر برچسب‌های 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 اطلاعات قطعه (segment info)، تنظیم مقادیر مشخصی در فیلد سرایند «اطلاعات قطعه» (segment information) یک فایل 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)

چیدمان فایل Matroska(TM) بسیار انعطاف‌پذیر است. mkvmerge(1) فایل را به شیوه‌ای از پیش‌تعریف‌شده تولید (رندر) می‌کند. فایل حاصل به این صورت خواهد بود:

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

عناصر درون ابروها اختیاری هستند و به محتوا و گزینه‌های استفاده‌شده بستگی دارند. چند نکته:

•عنصر meta seek #1 تنها شامل تعداد اندکی از عناصر سطح ۱ است، و آن هم تنها در صورتی که واقعاً وجود داشته باشند: پیوست‌ها (attachments)، فصل‌ها (chapters)، نشانه‌ها (cues)، برچسب‌ها (tags) و meta seek #2. نسخه‌های قدیمی‌تر mkvmerge(1) خوشه‌ها (clusters) را نیز در این عنصر meta seek قرار می‌دادند. بنابراین برای رزرو فضای کافی، حدس‌های تقریبی و نادقیقی لازم بود که اغلب نیز با خطا مواجه می‌شد. اکنون تنها خوشه‌ها در meta seek #2 ذخیره می‌شوند و meta seek #1 به عنصر meta seek #2 ارجاع می‌دهد.
•عناصر پیوست (attachment)، فصل (chapter) و برچسب (tag) تنها در صورتی وجود دارند که اضافه شده باشند.

کوتاه‌ترین فایل ممکن Matroska(TM) بدین صورت خواهد بود:

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

این حالت ممکن است برای فایل‌های فقط صوتی (audio-only) رخ دهد..SH "فایل‌های برچسب زمانی خارجی (EXTERNAL TIMESTAMP FILES)"

mkvmerge(1) به کاربر اجازه می‌دهد تا برچسب‌های زمانی را برای یک قطعهٔ مشخص، خودش انتخاب کند. این قابلیت می‌تواند برای ایجاد فایل‌هایی با ویدیوی دارای نرخ فریم متغیر یا گنجاندن وقفه در صدا استفاده شود. فریم در این حالت واحدی است که mkvmerge(1) به‌طور مجزا به ازای هر بلوک Matroska(TM) ایجاد می‌کند. برای ویدیو این دقیقاً یک فریم و برای صدا یک بسته از نوع صوتی مشخص است. برای نمونه برای AC-3 این بسته‌ای حاوی 1536 نمونه خواهد بود.

فایل‌های برچسب زمانی که هنگام الحاق قطعه‌ها به یکدیگر استفاده می‌شوند، باید تنها برای بخش نخست از یک زنجیره از قطعه‌ها مشخص شوند. برای نمونه اگر دو فایل v1.avi و v2.avi را به یکدیگر الحاق می‌کنید و می‌خواهید از برچسب‌های زمانی استفاده کنید، خط فرمان شما باید چیزی شبیه به این باشد:

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

چهار قالب وجود دارد که توسط mkvmerge(1) شناخته می‌شوند. خط نخست همیشه شامل شماره نسخه است. خط‌های خالی، خط‌هایی که تنها حاوی فاصله هستند و خط‌هایی که با '#' آغاز می‌شوند نادیده گرفته می‌شوند.

این قالب با خط نسخه آغاز می‌شود. خط دوم، تعداد پیش‌فرض فریم‌ها بر ثانیه را اعلام می‌کند. تمام خط‌های پس از آن شامل سه عدد هستند که با کاما از هم جدا شده‌اند: فریم آغازین (0 نخستین فریم است)، فریم پایانی و تعداد فریم‌ها در این بازه. مقدار FPS یک عدد ممیز شناور با نقطهٔ '.' به عنوان ممیز اعشاری است. بازه‌ها می‌توانند شامل وقفه‌هایی باشند که برای آن‌ها از FPS پیش‌فرض استفاده می‌شود. یک نمونه:

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

در این قالب هر خط شامل یک برچسب زمانی برای فریم متناظر است. این برچسب زمانی باید با دقت میلی‌ثانیه ارائه شود. می‌تواند یک عدد ممیز شناور باشد، اما الزامی نیست. شما باید دست‌کم به اندازهٔ تعداد فریم‌های موجود در قطعه، خط‌های برچسب زمانی ارائه دهید. برچسب‌های زمانی در این فایل باید مرتب‌شده باشند. نمونه برای 25fps:

# timestamp format v2
0
40
80

در این قالب هر خط شامل مدت زمانی بر حسب ثانیه است که به دنبال آن یک مقدار اختیاری برای تعداد فریم بر ثانیه می‌آید. هر دو می‌توانند اعدادی با ممیز شناور باشند. اگر تعداد فریم بر ثانیه قید نشود، مقدار پیش‌فرض استفاده خواهد شد. برای صدا باید اجازه دهید خود کدک، برچسب‌های زمانی فریم را محاسبه کند. برای این منظور باید از 0.0 به عنوان تعداد فریم بر ثانیه استفاده کنید. همچنین می‌توانید با استفاده از کلیدواژهٔ 'gap' به همراه مدت زمان وقفه، در جریان وقفه ایجاد کنید. نمونه برای یک فایل صوتی:

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

این قالب کاملاً مشابه قالب v2 است. تنها تفاوت این است که برچسب‌های زمانی نیازی نیست مرتب‌شده باشند. از این قالب تقریباً هرگز نباید استفاده شود.

mkvmerge(1) با یکی از این سه کد خروج خارج می‌شود:

•0 -- این کد خروج به این معنی است که muxing با موفقیت به پایان رسیده است.
•1 -- در این حالت mkvmerge(1) دست‌کم یک هشدار خروجی داده است، اما muxing ادامه یافته است. پیشوند یک هشدار با متن 'Warning:' مشخص می‌شود. بسته به ماهیت اشکالات رخ‌داده، فایل حاصل ممکن است درست باشد یا نباشد. اکیداً به کاربر توصیه می‌شود هم هشدار و هم فایل خروجی را بررسی کند.
•2 -- این کد خروج پس از رخ دادن یک خطا استفاده می‌شود. mkvmerge(1) بلافاصله پس از نمایش پیام خطا متوقف می‌شود. پیام‌های خطا گستره‌ای از آرگومان‌های اشتباه خط فرمان گرفته تا خطاهای خواندن/نوشتن و فایل‌های آسیب‌دیده را در بر می‌گیرند.

mkvmerge(1) از متغیرهای پیش‌فرضی که تنظیمات محلی (locale) سیستم را تعیین می‌کنند (مانند LANG و خانوادهٔ LC_*) استفاده می‌کند. متغیرهای اضافی:

MKVMERGE_DEBUG، MKVTOOLNIX_DEBUG و شکل کوتاه آن MTX_DEBUG

با مقدار این متغیرها به گونه‌ای رفتار می‌شود که گویی از طریق گزینهٔ --debug ارسال شده است.

MKVMERGE_ENGAGE، MKVTOOLNIX_ENGAGE و شکل کوتاه آن MTX_ENGAGE

با مقدار این متغیرها به گونه‌ای رفتار می‌شود که گویی از طریق گزینهٔ --engage ارسال شده است.

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

همیشه می‌توان تازه‌ترین نسخه را در وبگاه اصلی MKVToolNix[6] یافت.

Moritz Bunkus <moritz@bunkus.org>

توسعه‌دهنده

1.
وبگاه Matroska(TM)
2.
وبگاه اصلی IANA
3.
mkvmerge-identification-output-schema-v20.json
4.
RFC 7159
5.
مشخصات Matroska(TM)
6.
وبگاه اصلی MKVToolNix
2026-08-24 MKVToolNix 101.0