MKVEXTRACT(1) User Commands MKVEXTRACT(1)

mkvextract - استخراج قطعه‌ها از فایل‌های ماتروشکا (Matroska(TM)) به فایل‌های دیگر

mkvextract {source-filename} {mode1} [options] [extraction-spec1] [mode2] [options] [extraction-spec2] [...]

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

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

در حال حاضر استخراج موارد زیر پشتیبانی می‌شود: قطعه‌ها (tracks)، برچسب‌ها (tags)، پیوست‌ها (attachments)، فصل‌ها (chapters)، برگه‌های نشانه (CUE sheets)، مهرهای زمانی (timestamps) و نشانه‌ها (cues).

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

-f, --parse-fully

حالت تجزیه را روی 'full' تنظیم می‌کند. حالت پیش‌فرض کل فایل را تجزیه نمی‌کند بلکه از عناصر جستجوی فراداده (meta seek) برای یافتن عناصر مورد نیاز در فایل منبع استفاده می‌کند. در ۹۹٪ موارد این کار کافی است. اما برای فایل‌هایی که فاقد عناصر meta seek هستند یا آسیب دیده‌اند، ممکن است کاربر مجبور به استفاده از این حالت باشد. پویش کامل یک فایل می‌تواند چند دقیقه طول بکشد، در حالی که پویش سریع تنها چند ثانیه زمان می‌برد.

--command-line-charset character-set

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

--output-charset character-set

مجموعه نویسه‌ای را تعیین می‌کند که رشته‌های خروجی به آن تبدیل می‌شوند. پیش‌فرض آن مجموعه نویسه‌ای است که توسط محلی‌سازی فعلی سیستم مشخص شده است.

-r, --redirect-output file-name

تمام پیام‌ها را به جای کنسول در فایل file-name می‌نویسد. هرچند این کار را می‌توان به سادگی با تغییر مسیر خروجی انجام داد، اما در مواردی به این گزینه نیاز است: زمانی که ترمینال خروجی را پیش از نوشتن در فایل دوباره تفسیر می‌کند. مجموعه نویسه‌ای که با --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 خواهد بود.

--debug topic

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

--engage feature

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

--gui-mode

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

-v, --verbose

فعال کردن پرگویی و نمایش تمامی عناصر مهم Matroska(TM) همگام با خوانده شدن آن‌ها.

-h, --help

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

-V, --version

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

@options-file.json

آرگومان‌های اضافی خط فرمان را از فایل options-file می‌خواند. برای توضیحات کامل درباره قالب‌های پشتیبانی‌شده برای این فایل‌ها، بخش «Option files» را در صفحه راهنمای mkvmerge(1) ببینید.

نحو: mkvextract source-filename tracks [options] TID1:dest-filename1 [TID2:dest-filename2 ...]

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

-c character-set

مجموعه نویسه‌ای را تعیین می‌کند که قطعه زیرنویس متنی بعدی به آن تبدیل شود. تنها در صورتی معتبر است که شناسه قطعه بعدی به یک قطعه زیرنویس متنی اشاره داشته باشد. مقدار پیش‌فرض UTF-8 است.

--blockadd level

تنها BlockAdditions را تا این سطح نگه می‌دارد. پیش‌فرض نگه‌داشتن تمامی سطوح است. این گزینه تنها بر انواع خاصی از کدک‌ها مانند WAVPACK4 تأثیر می‌گذارد.

--cuesheet

باعث می‌شود mkvextract(1) یک برگه CUE را از اطلاعات فصل‌ها و داده‌های برچسب مربوط به قطعهٔ بعدی در فایلی استخراج کند که نام آن همان نام خروجی قطعه همراه با '.cue' است.

--raw

داده‌های خام را بدون هیچ‌گونه داده‌های ظرف (container) در یک فایل استخراج می‌کند. بر خلاف فلگ --fullraw، این فلگ باعث نمی‌شود محتویات عنصر CodecPrivate در فایل نوشته شوند. این حالت با تمامی CodecIDها کار می‌کند، حتی مواردی که mkvextract(1) در حالت عادی از آن‌ها پشتیبانی نمی‌کند، اما ممکن است فایل‌های حاصل قابل استفاده نباشند.

--fullraw

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

TID:outname

در صورتی که چنین قطعه‌ای در فایل منبع وجود داشته باشد، باعث استخراج قطعه با شناسه TID در فایل outname می‌شود. این گزینه می‌تواند چندین بار مشخص شود. شناسه‌های قطعه همان شناسه‌هایی هستند که توسط گزینه --identify در mkvmerge(1) خروجی داده می‌شوند.

هر نام خروجی باید تنها یک بار استفاده شود. استثنا در این مورد، قطعه‌های RealAudio و RealVideo هستند. اگر از یک نام یکسان برای قطعه‌های مختلف استفاده کنید، آن قطعه‌ها در همان فایل ذخیره خواهند شد. مثال:

$ mkvextract input.mkv tracks 0:video.h264 2:output-two-vobsub-tracks.idx 3:output-two-vobsub-tracks.idx

نحو: mkvextract source-filename attachments [options] AID1:outname1 [AID2:outname2 ...]

AID:outname

در صورتی که چنین پیوستی در فایل منبع وجود داشته باشد، باعث استخراج پیوست با شناسه AID در فایل outname می‌شود. اگر outname خالی رها شود، نام خود پیوست در داخل فایل منبع Matroska(TM) به جای آن استفاده خواهد شد. این گزینه می‌تواند چندین بار مشخص شود. شناسه‌های پیوست همان شناسه‌هایی هستند که توسط گزینه --identify در mkvmerge(1) خروجی داده می‌شوند.

نحو: mkvextract source-filename chapters [options] output-filename.xml

-s, --simple

اطلاعات فصل را در قالب ساده مورد استفاده در ابزارهای OGM (مانند CHAPTER01=..., CHAPTER01NAME=...) صادر می‌کند. در این حالت برخی اطلاعات باید نادیده گرفته شوند. حالت پیش‌فرض خروجی دادن فصل‌ها در قالب XML است.

--simple-language language

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

استفاده از این گزینه به کاربر امکان می‌دهد تعیین کند که در صورت وجود بیش از یک نام برای هر اتم فصل، کدام نام‌های فصل خروجی داده شوند. پارامتر language باید یک کد ISO 639-1 یا ISO 639-2 باشد.

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

نحو: mkvextract source-filename tags [options] output-filename.xml

-T, --no-track-tags

تنها برچسب‌هایی را صادر می‌کند که مختص به قطعه نیستند.

برچسب‌ها در قالب XML قابل فهم برای mkvmerge(1) در فایل خروجی مشخص‌شده نوشته می‌شوند. اگر هیچ برچسبی در فایل یافت نشود، فایل خروجی ایجاد نخواهد شد.

نحو: mkvextract source-filename cuesheet [options] output-filename.cue

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

نحو: mkvextract source-filename timestamps_v2 [options] TID1:dest-filename1 [TID2:dest-filename2 ...]

TID:outname

در صورتی که چنین قطعه‌ای در فایل منبع وجود داشته باشد، باعث استخراج مهرهای زمانی برای قطعه با شناسه TID در فایل outname می‌شود. این گزینه می‌تواند چندین بار مشخص شود. شناسه‌های قطعه همان شناسه‌هایی هستند که توسط گزینه --identify در mkvmerge(1) خروجی داده می‌شوند.

مثال:

$ mkvextract input.mkv timestamps_v2 1:ts-track1.txt 2:ts-track2.txt

نحو: mkvextract source-filename cues [options] TID1:dest-filename1 [TID2:dest-filename2 ...]

TID:dest-filename

در صورتی که چنین قطعه‌ای در فایل منبع وجود داشته باشد، باعث استخراج نشانه‌ها برای قطعه با شناسه TID در فایل outname می‌شود. این گزینه می‌تواند چندین بار مشخص شود. شناسه‌های قطعه همان شناسه‌هایی هستند که توسط گزینه --identify در mkvmerge(1) خروجی داده می‌شوند و نه اعدادی که در عنصر CueTrack قرار دارند.

قالب خروجی یک قالب متنی ساده است: یک خط به ازای هر عنصر CuePoint با جفت‌های key=value (کلید=مقدار). اگر یک عنصر اختیاری در یک CuePoint وجود نداشته باشد (مانند CueDuration)، یک خط تیره به عنوان مقدار خروجی داده خواهد شد.

مثال:

timestamp=00:00:13.305000000 duration=- cluster_position=757741 relative_position=11

کلیدهای ممکن عبارتند از:

timestamp

مهر زمانی نقطه نشانه با دقت نانوثانیه. قالب آن HH:MM:SS.nnnnnnnnn است. این عنصر همیشه تنظیم شده است.

duration

مدت زمان نقطه نشانه با دقت نانوثانیه. قالب آن HH:MM:SS.nnnnnnnnn است.

cluster_position

موقعیت مطلق بر حسب بایت در داخل فایل Matroska(TM) که خوشه‌ای (cluster) که حاوی عنصر ارجاع‌شده است از آنجا آغاز می‌شود.

نکته
در داخل فایل Matroska(TM)، عنصر CueClusterPosition نسبت به آفست شروع داده‌های قطعه (segment) محاسبه می‌شود. با این حال، مقدار خروجی حالت استخراج نشانه در mkvextract(1) از قبل شامل آن آفست بوده و یک آفست مطلق از ابتدای فایل است.

relative_position

موقعیت نسبی بر حسب بایت در داخل خوشه که عنصر BlockGroup یا SimpleBlock مورد ارجاع نقطه نشانه از آنجا آغاز می‌شود.

نکته
در داخل فایل Matroska(TM)، عنصر CueRelativePosition نسبت به آفست شروع داده‌های خوشه است. با این حال، مقدار خروجی حالت استخراج نشانه در mkvextract(1) نسبت به شناسه خوشه است. موقعیت مطلق در داخل فایل را می‌توان با جمع زدن cluster_position و relative_position محاسبه کرد.

مثال:

$ mkvextract input.mkv cues 1:cues-track1.txt 2:cues-track2.txt

استخراج همزمان فصل‌ها و برچسب‌ها در قالب‌های XML مربوطه:

$ mkvextract movie.mkv chapters movie-chapters.xml tags movie-tags.xml

استخراج همزمان چند قطعه و مهرهای زمانی مربوط به آن‌ها:

$ mkvextract "Another Movie.mkv" tracks 0:video.h265 "1:main audio.aac" "2:director's comments.aac" timestamps_v2 "0:timestamps video.txt" "1:timestamps main audio.txt" "2:timestamps director's comments.txt"

استخراج فصل‌ها در قالب Ogg/OGM و تبدیل مجدد کدگذاری یک قطعه زیرنویس متنی به یک مجموعه نویسه دیگر:

$ mkvextract "My Movie.mkv" chapters --simple "My Chapters.txt" tracks -c MS-ANSI "2:My Subtitles.srt"

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

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

A_AAC/MPEG2/*, A_AAC/MPEG4/*, A_AAC

تمامی فایل‌های AAC در یک فایل AAC همراه با سرایندهای ADTS پیش از هر بسته نوشته می‌شوند. سرایندهای ADTS شامل فیلد منسوخ‌شده emphasis نخواهند بود.

A_AC3, A_EAC3

این موارد به صورت فایل‌های خام AC-3 استخراج خواهند شد.

A_ALAC

قطعه‌های ALAC در فایل‌های CAF نوشته می‌شوند.

A_DTS

این موارد به صورت فایل‌های خام DTS استخراج خواهند شد.

A_FLAC

قطعه‌های FLAC در فایل‌های خام FLAC نوشته می‌شوند.

A_MPEG/L2

جریان‌های صوتی MPEG-1 Audio Layer II به صورت فایل‌های خام MP2 استخراج می‌شوند.

A_MPEG/L3

این موارد به صورت فایل‌های خام MP3 استخراج می‌شوند.

A_OPUS

قطعه‌های Opus(TM) در فایل‌های OggOpus(TM) نوشته می‌شوند.

A_PCM/INT/LIT, A_PCM/INT/BIG

داده‌های خام PCM در یک فایل WAV نوشته می‌شوند. داده‌های عددی صحیح با ترتیب بایت big-endian در این فرآیند به little-endian تبدیل خواهند شد.

A_REAL/*

قطعه‌های RealAudio(TM) در فایل‌های RealMedia(TM) نوشته می‌شوند.

A_TRUEHD, A_MLP

این موارد به صورت فایل‌های خام TrueHD/MLP استخراج خواهند شد.

A_TTA1

قطعه‌های TrueAudio(TM) در فایل‌های TTA نوشته می‌شوند. لطفاً توجه داشته باشید که به دلیل دقت محدود مهر زمانی در Matroska(TM)، سرایند فایل استخراج‌شده در دو فیلد متفاوت خواهد بود: data_length (تعداد کل نمونه‌ها در فایل) و CRC.

A_VORBIS

صدای Vorbis در یک فایل OggVorbis(TM) نوشته خواهد شد.

A_WAVPACK4

قطعه‌های WavPack(TM) در فایل‌های WV نوشته می‌شوند.

S_HDMV/PGS

زیرنویس‌های PGS به صورت فایل‌های SUP نوشته می‌شوند.

S_HDMV/TEXTST

زیرنویس‌های TextST به عنوان یک قالب فایل ویژه که برای mkvmerge(1) و mkvextract(1) ابداع شده نوشته خواهند شد.

S_KATE

جریان‌های Kate(TM) درون یک ظرف Ogg(TM) نوشته می‌شوند.

S_TEXT/SSA, S_TEXT/ASS, S_SSA, S_ASS

زیرنویس‌های متنی SSA و ASS به ترتیب به عنوان فایل‌های SSA/ASS نوشته می‌شوند.

S_TEXT/UTF8, S_TEXT/ASCII

زیرنویس‌های متنی ساده به صورت فایل‌های SRT نوشته می‌شوند.

S_VOBSUB

زیرنویس‌های VobSub(TM) به صورت فایل‌های SUB به همراه فایل‌های نمایه مربوطه، به عنوان فایل‌های IDX نوشته می‌شوند.

S_TEXT/USF

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

S_TEXT/WEBVTT

زیرنویس‌های متنی WebVTT به صورت فایل‌های WebVTT نوشته می‌شوند.

V_MPEG1, V_MPEG2

قطعه‌های ویدیویی MPEG-1 و MPEG-2 به صورت جریان‌های ابتدایی MPEG نوشته خواهند شد.

V_MPEG4/ISO/AVC

قطعه‌های ویدیویی H.264 / AVC در جریان‌های ابتدایی H.264 نوشته می‌شوند که می‌توان آن‌ها را مثلاً با MP4Box(TM) از بسته GPAC(TM) بیشتر پردازش کرد.

V_MPEG4/ISO/HEVC

قطعه‌های ویدیویی H.265 / HEVC در جریان‌های ابتدایی H.265 نوشته می‌شوند که می‌توان آن‌ها را مثلاً با MP4Box(TM) از بسته GPAC(TM) بیشتر پردازش کرد.

V_MS/VFW/FOURCC

قطعه‌های ویدیویی با نرخ فریم ثابت (Fixed FPS) دارای این CodecID در فایل‌های AVI نوشته می‌شوند.

V_REAL/*

قطعه‌های RealVideo(TM) در فایل‌های RealMedia(TM) نوشته می‌شوند.

V_THEORA

جریان‌های Theora(TM) درون یک ظرف Ogg(TM) نوشته می‌شوند.

V_VP8, V_VP9

قطعه‌های VP8 / VP9 در فایل‌های IVF نوشته می‌شوند.

برچسب‌ها (Tags)

برچسب‌ها به یک قالب XML تبدیل می‌شوند. این قالب همان قالبی است که mkvmerge(1) برای خواندن برچسب‌ها پشتیبانی می‌کند.

پیوست‌ها (Attachments)

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

فصل‌ها (Chapters)

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

مهرهای زمانی (Timestamps)

مهرهای زمانی ابتدا مرتب شده و سپس به عنوان فایلی سازگار با قالب timestamp v2 آماده برای ارائه به mkvmerge(1) خروجی داده می‌شوند. استخراج به سایر قالب‌ها (v1، v3 و v4) پشتیبانی نمی‌شود.

دستور mkvextract(1) با یکی از سه کد خروج زیر به کار خود پایان می‌دهد:

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

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

MKVEXTRACT_DEBUG, MKVTOOLNIX_DEBUG و شکل کوتاه آن MTX_DEBUG

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

MKVEXTRACT_ENGAGE, MKVTOOLNIX_ENGAGE و شکل کوتاه آن MTX_ENGAGE

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

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

همیشه می‌توانید جدیدترین نسخه را در وبگاه MKVToolNix[1] پیدا کنید.

Moritz Bunkus <moritz@bunkus.org>

توسعه‌دهنده

1.
وبگاه MKVToolNix
2026-08-24 MKVToolNix 101.0