table of contents
- NAME
- Кароткі змест
- Апісанне
- Выкарыстанне
- Парадак параметраў
- Прыклады
- Ідэнтыфікатары трэкаў
- Праца з мовамі
- Канвертацыя тэкставых файлаў і кадзіровак
- Файлы параметраў
- Звязванне файла
- Стандартныя значэнні
- Далучэнні
- Раздзелы
- Тэгі
- Звесткі аб сегментах
- Кампаноўка файла MATROSKA
- Знешнія файлы метак часу
- Коды завяршэння
- Пераменныя асяроддзя
- Глядзіце таксама
- Хатняя старонка
- AUTHOR
- NOTES
MKVMERGE(1) | Карыстальніцкія каманды | MKVMERGE(1) |
NAME¶
mkvmerge - Інструмент зліцця мультымедыйных патокаў у файл Matroska
Кароткі змест¶
mkvmerge [глабальныя параметры] {-o выхад} [параметры1] {файл1} [[параметры2] {файл2}] [@файл-параметраў.json]
Апісанне¶
Гэтая праграма прымае ўваходныя даныя з некалькіх медыяфайлаў і злучае іх патокі (усе або толькі выбраныя) у файл Matroska; глядзіце сайт Matroska[1].
Important
Парадак параметраў у камандным радку вельмі важны. Прачытайце секцыю «Парадак параметраў», калі вы незнаёмыя з праграмай.
Глабальныя параметры¶
-v, --verbose
-q, --quiet
-o, --output імя-файла
-w, --webm
Для раздзелаў і тэгаў дазволеная толькі падгрупа элементаў. mkvmerge(1) аўтаматычна выдаліць усе элементы, недазволеныя спецыфікацыяй.
--title загаловок
--default-language код-мовы
Стандартны код для «нявызначанай» мовы — und.
Апрацоўка звестак аб сегментах (глабальныя параметры)¶
--segmentinfo імя-файла.xml
Глядзіце секцыю XML-файлы звестак аб сегментах ніжэй для падрабязнасцяў.
--segment-uid SID1,SID2,...
Калі SID пачынаецца з =, то астатняе будзе распазнана як імя файла Matroska, чый сегмент UID злічваецца і выкарыстоўваецца.
Кожны створаны файл утрымлівае адзін сегмент, і кожны сегмент мае адзін UID сегмента. Калі зададзена больш UID сегментаў, чым створана сегментаў, то лішнія UID ігнаруюцца. Калі зададзена менш UID, чым створана сегментаў, то для іх будуць створаныя выпадковыя UID.
Праца з раздзеламі і тэгамі (глабальныя параметры)¶
--chapter-language код-мовы
Гэты параметр можа выкарыстоўвацца як для простых файлаў раздзелаў, так і для зыходных файлаў, якія ўтрымліваюць раздзелы без звестак аб іх мове, напр. файлы MP4 і OGM.
Мова, зададзеная ў гэтым параметры, таксама выкарыстоўваецца пры генерацыі раздзелаў празпараметра --generate-chapters.
--chapter-charset кадзіроўка
Гэты пераключальнік таксама ўжываецца да раздзелаў, скапіяваных з пэўных тыпаў кантэйнераў, напрыклад, файлаў Ogg/OGM і MP4. Дадатковыя звесткі глядзіце ніжэй ў секцыі аб раздзелах.
--chapter-sync d[,o[/p]]
o/p: папраўка метак часу праз o/p, каб выправіць лінейныя змяшчэнні. Па змаўчанні ў выпадку пропуску p роўна 1. І o і p могуць быць лікамі з плаваючай коскай.
Па змаўчанні: ручная карэкцыя сінхранізацыя адключаная (што раўнацэнна d = 0 і o/p = 1.0).
Гэты параметр можна выкарыстоўваць некалькі разоў для ўваходнага файла, які прымяняецца да некалькіх трэкаў, з заданнем ідэнтыфікатараў трэкаў.
--generate-chapters рэжым
Гэты рэжым таксама працуе з рэжымамі падзелу «частак:» і «частак-кадраў:». Для гэтых рэжымаў ствараецца адзін раздзел для кожнага дададзенага дыяпазону часавых метак (тых, чыі пачатковыя меткі часу маюць прэфікс «+»).
Note
mkvmerge(1) патрабуе наяўнасці відэа або аўдыятрэка, для вызначэння таго, што будзе дададзены новы файл. Пры зліцці аднаго або некалькіх відэатрэкаў выкарыстоўваецца першы. У іншым выпадку выкарыстоўваецца першы аўдыятрэк.
Прыклад: --generate-chapters interval:45s
Імі новых раздзелаў кіруюцца параметрам --generate-chapters-name-template. Мова задаецца праз --chapter-language, якая павінна быць зададзеная перад --generate-chapters.
--generate-chapters-name-template шаблон
Існуе некалькі пераменных, якія можна выкарыстоўваць у шаблоне, і якія замяняюцца іх фактычнымі значэннямі падчас стварэння раздзела. Радок «<NUM>» будзе заменены нумарам раздзела. Радок «<START>» будзе заменены меткай часу пачатка раздзела.
Радкі «<FILE_NAME>» і «<FILE_NAME_WITH_EXT>» запаўняюцца толькі пры стварэнні раздзелаў для дадавальны файлаў. Яны будуць замененыя імем дадавальнага файла без задання адпаведнага ягонага пашырэння. Звярніце ўвагу, што ўстаўляюцца толькі базавае імя і пашырэнне файла, а не ягоны каталог ці кампаненты дыска.
Вы можаце задаць мінімальную колькасць месцаў для нумара раздзела праз «<NUM:places>'», напрыклад, «<NUM:3>». Атрыманая колькасць будзе дапоўненая вядучымі нулямі, калі колькасць месцаў менш за зададзеную.
Вы можаце кіраваць фарматам, які выкарыстоўваецца пачатковай меткай часу праз <START:format>. Калі фармат не зададзены, то па змаўчанні выкарыстоўваецца '%H:%M:%S'. Дапушчальнымі кодамі фармата з'яўляюцца:
--Сue-chapter-name-format фармат
Калі гэты параметр не зададзены, то mkvmerge(1) па змаўчанні выкарысоўвае фармат "%p - %t" (выканаўца, за якім ідзе прабел, працяжнік, яшчэ адзін прабел і загаловак).
Калі фармат зададзены, то ўсё, выключаючы метасімвалы, капіюецца як ёсць, а самі метасімвалы падмяняюццца наступным чынам:
--chapters імя-файла
--global-tags імя-файла
Асноўныя налады вываду (пашыраныя глабальныя параметры)¶
--track-order FID1:TID1,FID2:TID2,...
Калі гэты параметр не зададзены, трэкі будуць адсартаваныя па іхнім тыпе ў першую чаргу і па парадку іхняга зыходнага файла ў другую чаргу. Першымі ідуць відэатрэкі, затым аўдыятрэкі і трэкі субцітраўю Іншыя рэдкія тыпы трэкаў ідуць апошнмі.
--cluster-length уласцівасць
Калі значэнне не зададзена, то mkvmerge(1) памесціць у кожны кластар не больш за n блокаў даных. Максімальная колькасць блокаў — 65535.
Калі лік d мае постфікс «ms», тады mkvmerge(1) размяшчае максімум d мілісекунд даных у кожны кластар. Дыяпазон для d — ад «100 мс» да «32000 мс».
Па змаўчанні mkvmerge(1) размяшчае не больш за 65535 блокаў і 5000 мс даных у кластар.
Праграмы, якія спрабуюць знайсці пэўны кадр, могуць звяртацца толькі непасрэдна да кластара, а затым павінны прачытаць увесь кластар. Таму стварэнне вялікіх кластараў можа прывесці да недакладнага або павольнага пошуку.
--clusters-in-meta-seek
--timestamp-scale фактар
Звычайна mkvmerge(1) выкарыстоўвае значэнне 1000000, што азначае, што меткі часу і даўжыня маюць дакладнасць 1 мс. Для файлаў, якія не ўтрымліваюць у сабе відэатрэк, але маюць прынамсі адзін аўдыятрэк mkvmerge(1) аўтаматычна выбярэ каэфіцэнт маштабу меткі часу, каб усе меткі часу і даўжыні мелі дакладнасць да аднаго аўдыяўзору. Гэта цягне за сабой вялікія накладныя выдаткі, але забяспечвае дакладны пошук і выманне.
Калі выкарыстоўваецца спецыяльнае значэнне -1, то mkvmerge(1) будзе выкарыстоўваць дакладнасць да аднаго ўзору нават калі відэатрэк адсутнічае.
--enable-durations
--no-Сues
--no-date
--disable-lacing
--disable-track-statistics-tags
Уключэнне гэтага параметра забараняе mkvmerge(1) запісваць гэтыя тэгі і перазапісваць існуючыя тэгі з такімі ж імямі.
--disable-language-ietf
--normalize-language-ietf рэжым
У кананічнай форме ўсе падтэгі, для якіх існуюць пераважныя значэнні, замяняюцца гэтымі пераважнымі значэннямі. Гэта канвертуе, напрыклад, zh-yue-jyutping у yue-jyutping або fr-FX у fr-FR.
Для формы пашыраных моўных падтэгаў першапачаткова будуецца кананічная форма. Пасля гэтага ўсе асноўныя мовы, для якіх існуе пашыраны моўны падтэг, замяняюцца гэтым пашыраным моўным падтэгам і ягоным прэфіксам. Гэта канвертуе, напрыклад, yue-jyutping назад да zh-yue-jyutping, але не ўплывае на fr-FR, таму што fr не з'яўляецца пашыраным моўным падтэгам.
--stop-after-video-ends
Разбіццё, звязванне, злучэнне і склейванне файлаў (іншыя глабальныя параметры)¶
--split спецыфікацыя
На дадзены момант mkvmerge(1) падтрымлівае наступныя рэжымы:
Сінтаксіс: --split [size:]d[k|m|g]
Прыклады: --split size:700m або --split 150000000
Параметр d можа заканчвацца на «k» «m» или «g», каб паказаць, што памер у КБ, МБ або ГБ адпаведна. У іншым выпадку дапускаецца памер у байтах. Пасля таго, як бягучы зыходны файл дасягне гэтага абмежаванне памера, будзе створаны новы.
Прэфікс 'size:' можа быць апушчаны з меркаванняў сумяшчальнасці.
Сінтаксіс: --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:' можа быць апушчаны з меркаванняў сумяшчальнасці.
Сінтаксіс: --split timestamps:A[,B[,C...]]
Прыклад: --split timestamps:00:45:00.000,01:20:00.250,6300s
Параметры A, B, C ды г. д. павінны мець той жа фармат, што і тыя, якія выкарыстоўваюцца для працягласці (гл. вышэй). Спіс метак часу падзяляецца коскамі. Пасля таго, як уваходны паток дасягнуў меткі часу бягучага пункту падзелу, ствараецца новы файл. Затым выкарыстоўваецца наступны пункт падзелу, зададзены ў гэтым спісе.
Прэфікс 'timestamps:' не можа быць апушчаны.
Сінтаксіс: --split parts:start1-end1[,[+]start2-end2[,[+]start3-end3...]]
Прыклады:
Рэжым parts задае mkvmerge(1) захоўваць пэўныя дыяпазоны метак часу і адкідаць іншыя. Дыяпазоны, якія неабзодна захаваць, павінны быць пералічаныя пасля ключавога слова parts: і падзеленыя коскамі. Сам дыяпазон складаецца з меткі часу пачатка і канца ў фармаце аднолькавага выгляду, які прымаецца ў розных варыянтах --split (напрыклад, 00:01:20 і 80s спасылаюцца на тую ж метку часу).
Калі пачатковая метка часу не зададзеная, то па змаўчанні будзе скарыстаная метка часу канца папярэдняга дыяпазону. Калі папярэдняга дыяпазону няма, то будзе выкарыстоўвацца пачатак файла (гл. прыклад 3).
Калі канечная метак часу не зададзеная, то па змаўанні яна задае на канец файла, так што mkvmerge(1) проста захавае астатнія (гл. прыклад 3).
Звычайна кожны дыяпазон запісваецца ў новы файл. Гэта можна змяніць так, каб паслядоўныя дыяпазоны запісваліся ў адзін файл. Для гэтага карыстальнік павінен паставіць перад меткай часу пачатка сімвал +. Гэта задае mkvmerge(1) не ствараць новы файл, а замест гэтага дадаць дыяпазон у той жа файл, у які быў запісаны папярэдні дыяпазон. Меткі часу будуць наладжаныя такім чынам, каб ва ўваходным файле не было прабелаў, нават калі ва ўваходным файле быў прабел у двух дыяпазонах.
У прыкладзе 1 mkvmerge(1) створыць два файлы. Першы будзе змяшчаць даныя з 00:01:20 па 00:02:45. Другі файл будзе змяшчаць даныя з 00:05:50 па 00:10:30.
У прыкладзе mkvmerge(1) створыць адзіны файл. Ён будзе змяшчаць даныя як з 00:01:20 па 00:02:45, так і з 00:05:50 па 00:10:30.
У прыкладзе mkvmerge(1) створыць два файлы. Першы будзе змяшчаць даныя ад пачатку зыходнага файла па 00:02:45. Другі файл будзе змяшчаць даныя з 00:05:50 і да канца зыходнага файла.
Note
Звярніце ўвагу, што mkvmerge(1) выконвае падзел толькі па пазіцыях ключавых кадраў. Гэта датычна як да пачатка, так і да канца кожнага дыяпазону. Таму, нават калі метка часу канца знаходзіцца між двума ключавымі кадрамі, mkvmerge(1) працягне вывад кадраў да наступнага ключавога кадра, але не ўключаючы яго.
Сінтаксіс: --split parts-frames:start1-end1[,[+]start2-end2[,[+]start3-end3...]]
Прыклады:
Рэжым parts-frames задае mkvmerge(1) захаваць пэўныя дыяпазоны нумароў кадраў/палёў, адкідаючы іншыя. Дыяпазоны для захавання павінны быць пералічаныя пасля ключавога слова parts-frames: і падзеленыя коскамі. Сам дыяпазон складаецца з пачатковага і канечнага нумара кадра/поля. Нумарацыя пачынаецца з 1.
Калі пачатковы лік не зададзены, то па змаўчанні будзе скарыстаны лік канца папярэдняга дыяпазону. Калі папярэдняга дыяпазону няма, то будзе выкарыстоўвацца пачатак файла (гл. прыклад 3).
Калі канечны лік не зададзены, то па змаўчанні ён задае на канец файа, так што mkvmerge(1) проста захавае астатнія (гл. прыклад 3).
Звычайна кожны дыяпазон запісваецца ў новы файл. Гэта можна змяніць так, каб паслядоўныя дыяпазоны запісваліся ў адзін файл. Для гэтага карыстальнік павінен паставіць перад нумарам пачатка сімвал +. Гэта задае mkvmerge(1) не ствараць новы файл, а замест гэтага дадаць дыяпазон у той жа файл, у які быў запісаны папярэдні дыяпазон. Меткі часу будуць наладжаныя такім чынам, каб ва ўваходным файле не было прабелаў, нават калі ва ўваходным файле быў прабел у двух дыяпазонах.
Note
Звярніце ўвагу, што mkvmerge(1) выконвае падзел толькі па пазіцыях ключавых кадраў. Гэта датычна як да пачатка, так і да канца кожнага дыяпазону. Таму, нават калі канечны кадр/нумар поля знаходзіцца між двума ключавымі кадрамі, mkvmerge(1) працягне вывад кадраў ажно да наступнага ключавога кадра, выключаючы яго.
У прыкладзе 2 mkvmerge(1) створыць толькі адзін файл. Гэты файл будзе ўключаць змесціва, пачынаючы з 733 да 912, і змесціва, пачынаючы з 1592 да 2730.
У прыкладзе 3 mkvmerge(1) створыць два файлы. Першы будзе змяшчаць даныя ад пачатку зыходнага файла па 430. Другі файл будзе змяшчаць даныя з 2512 і да канца зыходнага файла.
Гэты рэжым бярэ для вываду толькі першы відэатрэк. Калі вывад не з'яўляецца відэатрэкам, разбіццё праведзена не будзе.
Note
Нумары, зададзеныя з гэтым аргументам, інтэрпрэтуюцца на аснове ліку выводных блокаў Matroska. Адзіны блок Matroska змяшчае або поўны кадр (для прагрэсіўнага змесціва) або адно поле (для змесціва з чаргаваннем). mkvmerge не адрознівае іх і проста падлічвае колькасць блокаў. Напрыклад: калі вы хочаце падзяліць пасля 25-га поўнага кадра з чаргавальным змесцівам, вам прыйдзецца ў якасці пункту падзелу задаць 50 (два палі на поўны кадр).
Сінтаксіс: --split frames:A[,B[,C...]]
Прыклад: --split frames:120,237,891
Усе параметры A, B, C і далей павінны быць цэлымі дадатнымі лікамі. Нумарацыя пачынаецца з 1. Спіс нумароў кадраў/палёў падзяляецца коскамі. Пасля таго, як уваходны паток дасягнуў нумара кадра/поля бягучага пункту падзелу, ствараецца новы файл. Затым выкарыстоўваецца наступны пункт падзелу, зададзены ў гэтым спісе.
Прэфікс 'frames:' не можа быць апушчаны.
Гэты рэжым бярэ для вываду толькі першы відэатрэк. Калі вывад не з'яўляецца відэатрэкам, разбіццё праведзена не будзе.
Note
Нумары, зададзеныя з гэтым аргументам, інтэрпрэтуюцца на аснове ліку выводных блокаў Matroska. Адзіны блок Matroska змяшчае або поўны кадр (для прагрэсіўнага змесціва) або адно поле (для змесціва з чаргаваннем). mkvmerge не адрознівае іх і проста падлічвае колькасць блокаў. Напрыклад: калі вы хочаце падзяліць пасля 25-га поўнага кадра з чаргавальным змесцівам, вам прыйдзецца ў якасці пункту падзелу задаць 50 (два палі на поўны кадр).
Сінтаксіс: --split chapters:all or --split chapters:A[,B[,C...]]
Прыклад: --split chapters:5,8
Усе параметры A, B, C ды г.д. павінны быць цэлымі дадатнымі лікамі. Нумарацыя пачынаецца з 1. Спіс нумароў раздзелаў падзяляецца коскамі. Падзел адбудзецца непасрэдна перад першым ключавым кадрам, метка часу якога роўная ябо большая за пачатковую метку часу для раздзелаў, нумары якіх зададзеныя. Раздзел, які пачынаецца з 0s, ніколі не разглядаецца для падзялення і адкідаецца без змен.
Замест задання нумароў усіх раздзелаў, дастаткова выкарыстаць ключавое слова all.
Прэфікс 'chapters:' не можа быць апушчаны.
Note
Фармат файла Matroska падтрымлівае адвольныя глыбока ўкладзеныя структуры раздзелаў, якія называюцца «запісамі выдання» і «атамамі раздзелаў». Аднак гэты рэжым улічвае толькі самы высокі ўзровень раздзелаў ва ўсіх запісах выдання.
Для гэтага рэжыма падзелу імя зыходнага файла апрацоўваецца інакш, чым для звычайнай аперацыі. Ён можа змяшчаць printf, выразы накшталт «%d», уключаючы абавязковую шырыню поля, напр. «%02d». Калі гэта так, то нумар бягучага файла будзе адфармаціраваны адпаведынм чынам і ўстаўлены ў гэтае месца імя файла. Калі такога шаблона няма, то перад пашырэннем файла прадугледжваецца шаблон «-%03d»: «-o output.mkv» прывядзе да «output-001.mkv»' ды г. д. Калі пашырэння няма, да імя будзе дададзена «-%03d».
Іншым магчымым шаблонам з'яўляецца «%c», які будзе заменены назвай першага раздзела ў файле. Звярніцеў ўвагу, што калі прысутнічае «%c», шаблон «-%03d» не будзе дададзены аўтаматычна.
--link
--link-to-previous segment-UID
Калі SID пачынаецца з =, то астатняе будзе распазнана як імя файла Matroska, чый сегмент UID злічваецца і выкарыстоўваецца.
--link-to-next segment-UID
Калі SID пачынаецца з =, то астатняе будзе распазнана як імя файла Matroska, чый сегмент UID злічваецца і выкарыстоўваецца.
--append-mode рэжым
Калі mkvmerge дадае трэк (цяпер называецца 'track2_1') з другога файла (які называецца 'file2') да трэка (які называецца 'track1_1') з першага файла (які называецца 'file1'), то ён павінен зрушваць усе меткі для 'track2_1' на пэўную велічыню. Для рэжыма 'file' гэтая сума з'яўляецца самай высокай меткай часу, якая сустракаецца ў file1', нават калі гэтая метка часу была з трэка, адрозным ад 'track1_1'. У рэжыме трэка зрух — гэта самая высокая метка часу '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 поўны.mkv файл1.mkv + файл2.mkv $ mkvmerge -o поўны.mkv файл1.mkv +файл2.mkv
[ файл1 файл2 ]
Гэта альтэрнатыўны сінтаксіс выкарыстання «+» між двума імямі файлаў. Таму наступныя дзве каманды эквівалентныя:
$ mkvmerge -o поўны.mkv файл1.mkv + файл2.mkv $ mkvmerge -o поўны.mkv '[' файл1.mkv файл2.mkv ']'
=
Таксама можна паставіць «=» перад наступным імем файла. Таму наступныя дзве каманды эквівалентныя:
$ mkvmerge -o поўны.mkv = файл1.vob $ mkvmerge -o поўны.mkv =файл1.vob
( файл1 файл2 )
Гэта можна выкарыстоўваць, напрыклад, для файлаў VOB, якія паступаюць з транспартных патокаў DVD або MPEG. Яго нельга выкарыстоўваць, калі кожны файл змяшчае ўласны набор загалоўкаў, што звычайна бывае з асобнымі файламі, такімі як AVI або MP4.
Увод імя файла ў дужкі таксама перашкаджае пошуку mkvmerge(1) дадатковых файлаў з такім жа базавым значэннем, як апісана ў параметры =. Таму гэтыя два камандныя радкі эквівалентныя:
$ mkvmerge -o выхад.mkv = файл.mkv $ mkvmerge -o выхад.mkv '(' файл.mkv ')'
Варта адзначыць некалькі момантаў:
Падтрымка далучэнняў (іншыя глабальныя параметры)¶
--attachment-description апісанне
--attachment-mime-type тып MIME
Калі для далучэння не зададзены тып MIME, то ягоны тып будзе вызначаны аўтаматычна.
--attachment-name імя
--attach-file імя-файла, --attach-file-once імя-файла
mkvextract(1) можа выкарыстоўвацца для вымання далучэнняў з файла Matroska.
--enable-legacy-font-mime-types
Гэта ўплывае як на новыя далучэнні, калі іх тып MIME выяўлены аўтаматычна, так і на існуючыя далучэнні, чые захаваныя тыпы MIME будуць замененыя састарэлымі.
Закранаюцца тыпы MIME: «font/sfnt», «font/ttf» і «font/collection»; яны супастаўляюцца з «application/x-truetype-fonts» і «font/otf», які супастаўляецца з «application/vnd .ms-opentype».
Параметры, якія могуць быць выкарыстаныя для кожнага ўваходнага файла¶
-a, --audio-tracks [!]n,m,...
Замест ідэнтыфікатараў трэкаў вы таксама можаце задаць коды моў ISO 639-2. Гэта будзе працаваць толькі для зыходных файлаў, якія змяшчаюць моўныя тэгі для сваіх трэкаў.
Па змаўчанні: капіяваць любыя падобныя трэкі.
Калі ідэнтыфікатары маюць прэфікс !, то значэнне мяняецца: капіяваць усе трэкі гэтага тыпа, акрамя тых, якія пералічаныя пасля !.
-d, --video-tracks [!]n,m,...
Замест ідэнтыфікатараў трэкаў вы таксама можаце задаць коды моў ISO 639-2. Гэта будзе працаваць толькі для зыходных файлаў, якія змяшчаюць моўныя тэгі для сваіх трэкаў.
Калі ідэнтыфікатары маюць прэфікс !, то значэнне мяняецца: капіяваць усе трэкі гэтага тыпа, акрамя тых, якія пералічаныя пасля !.
-s, --subtitle-tracks [!]n,m,...
Замест ідэнтыфікатараў трэкаў вы таксама можаце задаць коды моў ISO 639-2. Гэта будзе працаваць толькі для зыходных файлаў, якія змяшчаюць моўныя тэгі для сваіх трэкаў.
Калі ідэнтыфікатары маюць прэфікс !, то значэнне мяняецца: капіяваць усе трэкі гэтага тыпа, акрамя тых, якія пералічаныя пасля !.
-b, --button-tracks [!]n,m,...
Замест ідэнтыфікатараў трэкаў вы таксама можаце задаць коды моў ISO 639-2. Гэта будзе працаваць толькі для зыходных файлаў, якія змяшчаюць моўныя тэгі для сваіх трэкаў.
Калі ідэнтыфікатары маюць прэфікс !, то значэнне мяняецца: капіяваць усе трэкі гэтага тыпа, акрамя тых, якія пералічаныя пасля !.
--track-tags [!]n,m,...
Калі ідэнтыфікатары маюць прэфікс !, то значэнне разварочваецца: капіяваць усё акрамя ідэнтыфікатараў, пералічаных пасля !.
-m, --attachments [!]n[:all|first],m[:all|first],...
Па змаўчанні капіюе ўсе далучэнні ва ўсе выхадныя файлы.
Калі ідэнтыфікатары маюць прэфікс !, то значэнне разварочваецца: капіяваць усё акрамя ідэнтыфікатараў, пералічаных пасля !.
-A, --no-audio
-D, --no-video
-S, --no-subtitles
-B, --no-buttons
-T, --no-track-tags
--no-chapters
-M, --no-attachments
--no-global-tags
--regenerate-track-uids
Гэтыя паводзіны аўтаматычна ўключаюцца для файлаў Matroska, створаных праграмай MakeMKV. Прычына ў тым, што MakeMKV выкарыстоўвае паслядоўныя лікі (1, 2, 3...) у якасці UID замест стварэння выпадковых.
-y, --sync TID:d[,o[/p]]
o/p: папраўка метак часу праз o/p, каб выправіць лінейныя змяшчэнні. Па змаўчанні ў выпадку пропуску p роўна 1. І o і p могуць быць лікамі з плаваючай коскай.
Па змаўчанні: ручная карэкцыя сінхранізацыя адключаная (што раўнацэнна d = 0 і o/p = 1.0).
Гэты параметр можна выкарыстоўваць некалькі разоў для ўваходнага файла, які прымяняецца да некалькіх трэкаў, з заданнем ідэнтыфікатараў трэкаў.
--Сues TID:none|iframes|all
Па змаўчанні — «iframes» для відэатрэкаў і трэкаў субцітраў і «none» для аўдыятрэкаў. Глядзіце таксама параметр --no-сues, які перашкаджае стварэнню запісаў Сue, незалежна ад скарыстаных параметраў --Сues.
Гэты параметр можна выкарыстоўваць некалькі разоў для ўваходнага файла, які прымяняецца да некалькіх трэкаў, з заданнем ідэнтыфікатараў трэкаў.
--default-track-flag TID[:bool]
Калі карыстальнік яўна не выбірае трэк падчас прайгравання, прайгравальнік павінен выбраць адзін з трэказ, для якіх зададзеная пазнака «трэк па змаўанні», улічваючы, напрыклад, такія перавагі карыстальніка, як мова.
Гэты параметр можна выкарыстоўваць некалькі разоў для ўваходнага файла, які прымяняецца да некалькіх трэкаў, з заданнем ідэнтыфікатараў трэкаў.
--track-enabled-flag TID[:bool]
Для прайгравання варта разглядаць толькі трэкі, для якіх зададзеная пазнака «трэк уключаны».
Гэты параметр можна выкарыстоўваць некалькі разоў для ўваходнага файла, які прымяняецца да некалькіх трэкаў, з заданнем ідэнтыфікатараў трэкаў.
--forced-display-flag TID[:bool]
Гэты параметр можна выкарыстоўваць некалькі разоў для ўваходнага файла, які прымяняецца да некалькіх трэкаў, з заданнем ідэнтыфікатараў трэкаў.
--hearing-impaired-flag TID[:bool]
Гэты параметр можна выкарыстоўваць некалькі разоў для ўваходнага файла, які прымяняецца да некалькіх трэкаў, з заданнем ідэнтыфікатараў трэкаў.
--visual-impaired-flag TID[:bool]
Гэты параметр можна выкарыстоўваць некалькі разоў для ўваходнага файла, які прымяняецца да некалькіх трэкаў, з заданнем ідэнтыфікатараў трэкаў.
--text-descriptions-flag TID[:bool]
Гэты параметр можна выкарыстоўваць некалькі разоў для ўваходнага файла, які прымяняецца да некалькіх трэкаў, з заданнем ідэнтыфікатараў трэкаў.
--original-flag TID[:bool]
Гэты параметр можна выкарыстоўваць некалькі разоў для ўваходнага файла, які прымяняецца да некалькіх трэкаў, з заданнем ідэнтыфікатараў трэкаў.
--commentary-flag TID[:bool]
Гэты параметр можна выкарыстоўваць некалькі разоў для ўваходнага файла, які прымяняецца да некалькіх трэкаў, з заданнем ідэнтыфікатараў трэкаў.
--track-name TID:імя
--language TID:язык
Гэты параметр можна выкарыстоўваць некалькі разоў для ўваходнага файла, які прымяняецца да некалькіх трэкаў, з заданнем ідэнтыфікатараў трэкаў.
-t, --tags TID:імя-файла
--aac-is-sbr TID[:0|1]
Калі зыходным файлам з'яўляецца файл Matroska, то CodecID павінна быць дастаткова для выяўлення SBR AAC. Аднак, калі CodecID няправільны, то гэты пераключальнік можна скарыстаць, каб выправіць яго.
Калі mkvmerge няправільна вызначае файл AAC у выглядзе SBR, то вы можаце дадаць ':0' да ідэнтыфікатара трэка.
--audio-emphasis TID:n|symbolic-name
--reduce-to-core TID
У дадзены час гэты параметр уплывае толькі на трэкі DTS. Трэкі TrueHD, якія змяшчаюць убудаванае ядро AC-3, замест гэтага прадстаўленыя як два асобныя трэкі, для якіх карыстальнік можа выбраць, які трэк капіяваць. Для DTS такая схема не будзе працаваць, бо пашырэнні HD не могуць быць дэкадзіраваныя самі па сабе — у адрозненне ад даных TrueHD.
--remove-dialog-normalization-gain TID
На дадзены момант гэты параметр уплывае толькі на трэкі AC-3, DTS і TrueHD.
--timestamps TID:імя-файла
--default-duration TID:x
Калі даўжыня па змаўчанні не з'яздяецца прымусовай, mkvmerge паспрабуе атрымаць даўжыню трэка па змаўчанні з кантэйнера і/або закадзіраванага бітавага патоку для пэўных тыпаў трэкаў, напрыклад AVC/H.264 або MPEG-2.
Гэты параметр таксама можа быць скарыстаны для змянення частаты кадраў відэатрэкаў без неабходнасці выкарыстання знешняга файла метак часу.
--fix-bitstream-timing-information TID[:0|1]
Note
Гэта было рэалізавана толькі для відэатрэкаў AVC/H.264.
--compression TID:n
Метад сціскання «mpeg4_p2»/«mpeg4p2» з'яўляецца спецыяльным метадам сціскання, які называецца «выдаленне загалоўка» і даступны толькі для відэатрэкаў MPEG4 part 2.
Па змаўчанні для некаторых тыпаў субцітраў выкарыстоўваецца сцісканне «zlib». Гэты метад сціскання падтрымлівае большасць, калі не ўсе праграмы прайгравання. Падтрымка іншых метадаў сціскання, акрамя «none», не гарантуецца.
Параметры, якія ўжываюцца толькі для відэатрэкаў¶
-f, --fourcc TID:FourCC
--display-dimensions TID:widthxheight
Іншым спосабам задання значэнняў з'яўляецца выкарыстанне параметра --aspect-ratio або --aspect-ratio-factor (гл. ніжэй). Гэтыя параметры з'яўляюцца ўзаемавыключальнымі.
--aspect-ratio TID:ratio|width/height
Іншым спосабам задаць значэнні з'яўляецца выкарыстанне параметраў --aspect-ratio-factor або --display-dimensions (гл. вышэй і ніжэй). Гэтыя параметры з'яўляюцца ўзаемавыключальнымі.
--aspect-ratio-factor TID:factor|n/d
Іншым спосабам задаць значэнні з'яўляецца выкарыстанне параметраў --aspect-ratio або --display-dimensions (гл. вышэй і ніжэй). Гэтыя параметры з'яўляюцца ўзаемавыключальнымі.
--cropping TID:злева,зверху,справа,знізу
--color-matrix-coefficients TID:n
Дапушчальныя значэнні і іхняя расшыфроўка:
0: GBR, 1: BT709, 2: unspecified, 3: reserved, 4: FCC, 5: BT470BG, 6: SMPTE 170M, 7: SMPTE 240M, 8: YCOCG, 9: BT2020 non-constant luminance, 10: BT2020 constant luminance
--color-bits-per-channel TID:n
--chroma-subsample TID:hori,vert
Прыклад: Для відэа з колеравай субдыскрэтызацыяй 4:2:0 варта задаць параметр TID:1,1.
--cb-subsample TID:hori,vert
Прыклад: Для відэа з колеравай субдыскрэтызацыяй 4:2:1, параметр --chroma-subsample павінен быць зададзены да TID:1,0 і падвыбарка Cb павінна быць зададзеная да TID:1,0.
--chroma-siting TID:hori,vert
--color-range TID:n
--color-transfer-characteristics TID:n
Дапушчальныя значэнні і іхняя расшыфроўка:
0: reserved, 1: ITU-R BT.709, 2: unspecified, 3: reserved, 4: gamma 2.2 curve, 5: gamma 2.8 curve, 6: SMPTE 170M, 7: SMPTE 240M, 8: linear, 9: log, 10: log sqrt, 11: IEC 61966-2-4, 12: ITU-R BT.1361 extended color gamut, 13: IEC 61966-2-1, 14: ITU-R BT.2020 10 bit, 15: ITU-R BT.2020 12 bit, 16: SMPTE ST 2084, 17: SMPTE ST 428-1; 18: ARIB STD-B67 (HLG)
--color-primaries TID:n
Дапушчальныя значэнні і іхняя расшыфроўка:
0: reserved, 1: ITU-R BT.709, 2: unspecified, 3: reserved, 4: ITU-R BT.470M, 5: ITU-R BT.470BG, 6: SMPTE 170M, 7: SMPTE 240M, 8: FILM, 9: ITU-R BT.2020, 10: SMPTE ST 428-1, 22: JEDEC P22 phosphors
--max-content-light TID:n
--max-frame-light TID:n
--chromaticity-coordinates TID:red-x,red-y,green-x,green-y,blue-x,blue-y
--white-color-coordinates TID:x,y
--max-luminance TID:float
--min-luminance TID:float
--projection-type TID:method
--projection-private TID:данные
--projection-pose-yaw TID:float
--projection-pose-pitch TID:float
--projection-pose-roll TID:float
--field-order TID:n
0: прагрэсіўны; 1: празрадковы з паказам верхняга поля першым, першым захоўваецца верхняе поле; 2: нявызначаны парадак палёў; 6: празрадковы з паказам ніжняга поля першым, першым захоўваецца ніжняе поле; 9: празрадковы з паказам ніжняга поля першым, першым захоўваецца верхняе поле; 14: празрадковы з паказам верхняга поля першым, першым захоўваецца ніжняе поле
--stereo-mode TID:n|symbolic-name
Параметры, якія ўжываюцца толькі да тэкставых субцітраў¶
--sub-charset TID:кадзіроўка
Гэты параметр можна выкарыстоўваць некалькі разоў для ўваходнага файла, які прымяняецца да некалькіх трэкаў, з заданнем ідэнтыфікатараў трэкаў.
Іншыя параметры¶
-i, --identify імя-файла
Фармат вываду выніка можа быць зменены параметрам --identification-format.
-J імя-файла
-F, --identification-format формат
Гэты фармат не для аналізу. Выхадныя дадзеныя будуць перакладзеныя на мову, якая выкарыстоўваецца ў mkvmerge(1) (гл. таксама --ui-language).
mkvmerge-identification-output-schema-v20.json[3]
Усе версіі схемы JSON даступныя як анлайн, так і ў выпушчаных архівах зыходнага коду.
--probe-range-percentage адсотак
Калі вядома, што трэкі прысутнічаюць, але не знойдзеныя, то адсотак для праверкі можна змяніць праз гэты параметр. Мінімальны памер 10 МБ з'яўляецца другасным і не можа быць зменены.
--list-audio-emphasis
--list-languages
--list-stereo-modes
-l, --list-types
--priority прыярытэт
Выбар найніжэйшага таксама прыводзіць да таго, што mkvmerge(1) выбірае прыярытэт халастога ўводу-вываду ў дапаўненне да найніжэйшага магчымага прыярытэту працэсу.
--command-line-charset кадзіроўка
--output-charset кадзіроўка
-r, --redirect-output імя-файла
--flush-on-close
--ui-language код
--abort-on-warnings
--deterministic seed
Зерне можа быць адвольным радком і не абавязкова павінна быць лікам.
Вынікам працы байт-ідэнтычных файлаў гарантуецца толькі пры наступных умовах:
Выкарыстанне іншых версій mkvmerge(1) або іншых параметраў каманднага радка можа выдаць той жа файл, ідэнтычны да байта, але гэта не гарантуецца.
--debug тэматыка
--engage функцыя
--gui-mode
@файл-параметраў.json
--capabilities
-h, --help
-V, --version
Выкарыстанне¶
Для каждого файла пользователь может выбрать, какие дорожки mkvmerge(1) должен взять. Все они помещаются в файл, указанный с параметром -o. Список известных (и поддерживаемых) входных форматов можно получить с помощью параметра -l.
Important
Парадак параметраў у камандным радку вельмі важны. Прачытайце секцыю «Парадак параметраў», калі вы незнаёмыя з праграмай.
Парадак параметраў¶
Парадак ўводу параметраў мае значэнне для некаторых параметраў. Варыянты дзеляцца на дзве катэгорыі:
Параметры апрацоўваюцца злева направа. Калі параметр з'яўляецца некалькі разоў у межах адной вобласці, будзе скарыстана апошняе далучэнне. Таму загаловак будзе зададзены на «нешта іншае» ў наступным прыкладзе:
$ mkvmerge -o выхад.mkv --title 'Такі' ўваход.avi --title 'Іншы'
У наступным прыкладзе паказана, што выкарыстанне параметра --language двойчы з'яўляецца нармальным, бо яны выкарыстоўваюцца ў розных абласцях. Нягледзячы на тое, што яны ўжываюцца да аднаго і таго ж ідэнтыфікатара трэка, яны ўжываюцца да розных зыходных файлаў і, адпаведна, маюць розную вобласць дзеяння:
$ mkvmerge -o выхад.mkv --language 0:fre français.ogg --language 0:deu deutsch.ogg
Прыклады¶
Дапусцім, у васё сць файл MyMovie.avi і аўдыятрэк у асобным файле, напрыклад «MyMovie.wav». Спачатку вы хочаце закадзіраваць аўдыя ў OggVorbis:
$ oggenc -q4 -oМаё-відэа.ogg Маё-відэа.wav
Праз некалькі хвілін вы можаце аб'яднаць відэа і аўдыя:
$ mkvmerge -o Маё-відэа-з-гукам.mkv Маё-відэа.avi Маё-відэа.ogg
Калі ваш AVI ўжо змяшчае аўдыятрэк, то ён таксама будзе скапіяваны (калі mkvmerge(1) падтрымлівае яе аўдыяфармат). Каб пазбегнуць гэтага, проста зрабіце наступнае
$ mkvmerge -o Маё-відэа-з-гукам.mkv -A Маё-відэа.avi Маё-відэа.ogg
Пасля некалькіх хвілін роздумаў вы выбіраеце іншы аўдыятрэк, напрыклад, каментарыі або іншамоўны трэк да «MyMovie-add-audio.wav». Кадзіруеце яго яшчэ раз і аб'ядноўваеце з іншым файлам:
$ oggenc -q4 -oМаё-відэа-з-даданнем-аўдыя.ogg Маё-відэа-з-даданнем-аўдыя.wav $ mkvmerge -o МВ-поўнае.mkv Маё-відэа-з-аўдыя.mkv Маё-відэа-з-даданнем-аўдыя.ogg
Такога ж выніку можна дабіцца праз
$ mkvmerge -o МВ-поўнае.mkv -A Маё-відэа.avi Маё-відэа.ogg Маё-відэа-з-даданнем-аўдыя.ogg
Цяпер скарыстайце mplayer і атрымлівайце асалоду. Калі ў вас ёсць некалькі аўдыятрэкаў (або нават відэатрэкаў), вы можаце задаць mplayer'у які трэк прайграваць, выкарыстоўваючы параметры '-vid' і '-aid'. Яны заснаваныя на 0 і не адрозніваюць відэа і аўдыя.
Калі вам патрэбеая сінхранізацыя аўдыятрэка, вы можаце лёгка гэта зрабіць. Спачатку даведайцеся ідэнтыфікатар трэка Vorbis праз
$ mkvmerge --identify рассінхрон.ogg
Цяпер вы можаце выкарыстоўваць гэты ідэнтыфікатар у наступным камандным радку:
$ mkvmerge -o сінхронны.mkv -A крыніца.avi -y 12345:200 рассінхрон.ogg
Гэта дадасць 200 мс цішыні ў пачатку аўдыятрэка з ідэнтыфікатарам 12345, узятым з 'out of sync.ogg'.
Некаторыя фільмы пачынаюць сінхранізавацца правільна, але паступова губляюць сінхранізацыю. Для такіх фільмаў вы можаце задаць каэфіцэнт затрымкі, які будзе ўжывацца да ўсіх метак часу – дадзеныя не дадаюцца і не выдаляюцца. Таму, калі вы зробіце гэтыя суадносіны завялікімі або замаленькімі, вы атрымаеце дрэнныя вынікі. Напрыклад, эпізод мае рассінхранізацыю 0,2 секунды ў канцы фільма даўжынёй 77340 кадраў. Пры частаце кадраў 29,97 к/c 0,2 секунды складаюць прыкладна 6 кадраў. Таму я зрабіў
$ mkvmerge -o сінхронны.mkv -y 23456:0,77346/77340 рассінхрон.mkv
Вынік быў файным.
Параметры сінхранізацыі могуць выкарыстоўвацца для субцітраў такім жа чынам.
Для тэкставых субцітраў можна выкарыстаць праграмнае забеспячэнне Windows (накшталт SubRipper) або пакет subrip, які можна знайсці ў зыходных файлах transcode(1) у каталогу «contrib/subrip». Агульны працэс наступны:
$ tccat -i /path/to/copied/dvd/ -T 1 -L | tcextract -x ps1 -t vob -a 0x20 | subtitle2pgm -o мойфільм
$ pgm2txt маёвідэа
$ ispell -d american *txt
$ srttool -s -w -i мойфільм.srtx -o мойфільм.srt
Выхадны файл можа быць выкарыстаны як уваходны для mkvmerge(1):
$ mkvmerge -o мойфільм.mkv мойфільм.avi мойфільм.srt
Калі вы хочаце задаць мову для пэўнага трэка, гэта лёгка зрабіць. Спачатку даведайцеся код ISO 639-2 для вашай мовы. mkvmerge(1) можа пералічыць усе гэтыя коды для вас:
$ mkvmerge --list-languages
Знайдзіце спіс патрэбных вам моў. Дапусцім, вы памясцілі два аўдыятрэкі ў файл Matroska і хочаце задаць коды сваіх моў, а таксама ідэнтыфікатары трэкаў 2 і 3. Гэта можна зрабіць праз
$ mkvmerge -o з-кодамі-моў.mkv --language 2:ger --language 3:dut без-кодаў-моў.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 без-сжатия.mkv --compression -1:none Мой-фільм.avi --compression -1:none мойфільм.srt
Ідэнтыфікатары трэкаў¶
Звычайныя ідэнтыфікатары трэкаў¶
Некаторыя параметры ў mkvmerge(1) патрабуюць ідэнтыфікатар трэка, каб вызначыць да якога трэка яны павінны быць ужыты. Гэтыя ідэнтыфікатары трэкаў друкуюцца счытвальнікамі пры разбіцці бягучага ўваходнага файла, або калі mkvmerge(1) выконваецца з параметрам --identify. Прыклад такога вываду:
$ mkvmerge -i v.mkv Файл 'v.mkv': кантэйнер Matroska Ідэнтыфікатар трэка 0: video (V_MS/VFW/FOURCC, DIV3) Ідэнтыфікатар трэка 1: audio (A_MPEG/L3)
Не блытайце ідэнтыфікатары трэкаў, якія назначаюцца трэкам ва ўваходным файле MKV, з ідэнтыфікатарамі трэкаў уваходных файлаў. Для параметраў, якія патрабуюць гэтыя значэнні, выкарыстоўваюцца толькі ідэнтыфікатары трэкаў уваходных файлаў.
Таксама звярніце ўвагу, што кожны ўваходны файл мае свой уласны набор ідэнтыфікатараў трэкаў. Таму ідэнтыфікатараў трэкаў для файла 'file1.ext' як паведамляе 'mkvmerge --identify' не змяняюцца незалежна ад таго, колькі там іншых уваходных файлаў і ў якой пазіцыі 'file1.ext' выкарыстоўваюцца.
Ідэнтыфікатараў трэкаў назначаюцца наступным чынам:
Параметры, якія выкарыстоўваюць ідэнтыфікатары трэкаў гэта тыя, апісанне якіх змяшчае 'TID'. Наступныя параметры таксама выкарыстоўваюць ідэнтыфікатары трэкаў: -- audio-tracks, --video-tracks, --subtitle-tracks, --button-tracks і --track-tags.
Спецыяльныя ідэнтыфікатары трэка¶
Ёсць некалькі ідэнтыфікатараў, якія маюць асаблівае значэнне і не сустракаюцца ў выхадных дадзеных ідэнтыфікацыі.
Спецыяльны ідэнтыфікатар трэка «-1» з'яўляецца сімвалам падстаноўкі і ўжывае дадзены пераключальнік да ўсіх трэкаў, якія счытваюцца з уваходнага файла.
Спецыяльны ідэнтыфікатар трэка '-2' спасылаецца на раздзелы ў зыходным файле. На дадзены момант толькі параметр --sync выкарыстоўвае гэты спецыяльны ідэнтыфікатар. У якасці альтэрнатывы --sync -2:... можна выкарыстаць параметр --chapter-sync ....
Праца з мовамі¶
Matroska падтрымлівае два розныя тыпы моўных элементаў: стары, састарэлы элемент «Language», які змяшчае коды ISO 639-2 alpha 3, і новыя тэгі «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 можна выбраць метад нармалізацыі, які ўжываецца да пашыраных моўных падтэгаў.
Канвертацыя тэкставых файлаў і кадзіровак¶
Note
Гэтая секцыя датычная да ўсіх праграм у MKVToolNix, нават калі ў ёй згадваецца толькі mkvmerge(1).
Уводзіны¶
Увесь тэкст у файле Matroska закадзіраваны ў UTF-8. Гэта азначае, што mkvmerge(1) павінен канвертаваць кожны тэкставы файл, які ён чытае, а таксама кожны тэкст, прастаўдены ў камандным радку, з любога набору сімвалаў у UTF-8. У сваю чаргу гэта таксама азначае, што вывад mkvmerge(1) неабходна канвертаваць назад у гэты набор сімвалаў з UTF-8, напрыклад калі неанглійскі пераклад выкарыстоўваецца з --ui-language або для тэкста, які паходзіць з файла Matroska.
mkvmerge(1) выконвае гэтае канвертаванне аўтаматычна на аснове наяўнасці маркера парадку байтаз (каротка: BOM) або бягучай лакалізацыі сістэмы. Тое, як набор сімвалаў выводзіцца з лакалізацыі, залежыць ад аперацыйнай сістэмы, у якой mkvmerge(1) выконваецца.
Маркеры паслядоўнасці байтаў (BOM)¶
Тэкставыя файлы, якія пачынаюцца з BOM, ужо закадзіраваныя ў адным прадстаўленні UTF. mkvmerge(1) падтрымлівае наступныя пяць рэжымаў: UTF-8, UTF-16 Little і Big Endian, UTF-32 Little і Big Endian. Тэкставыя файлы з BOM аўтаматычна канвертуюцца ў UTF-8. Любыя параметры, якія інакш зададуць набор сімвалаў для такога файла (напрыклад, --sub-charset), моўчкі ігнаруецца.
Linux і Unix-падобныя сістэмы, уключаючы macOS¶
У Unix-сістэмах mkvmerge(1) выкарыстоўвае сістэмны выклік setlocale()3, які, у сваю чаргу, выкарыстоўвае пераменныя асяроддзя LANG, LC_ALL і LC_CYPE. Атрыманы набор сімвалаў часта з'яўляецца адным з сямейства UTF-8 або ISO-8859-* і выкарыстоўваецца для ўсіх аперацый з тэкставымі файламі для кадзіравання радкоў у камандным радку і для вываду ў кансоль.
Windows¶
У Windows набор сімвалаў па змаўчанні, які выкарыстоўваецца для канвертавання тэкставых файлаў, вызначаецца выклікам сістэмнага выкліка GetACP().
Чытанне каманднага радка завяршаецца функцыяй GetCommandLineW(), якая вяртае радок Unicode. Таму параметр --command-line-charset ігнаруецца ў Windows.
Вывад кансолі складаецца з трох сцэнарыяў:
Параметры каманднага радка¶
Існуюць наступныя параметры для задання спецыфічных кадзіровак:
Файлы параметраў¶
Файлам параметраў з'яўляецца файл, з якога mkvmerge(1) можа счытаць дадатковыя аргументы каманднага радка. Гэта можна выкарыстаць для таго, каб абысці пэўныя абмежаванні абалонкі або аперацыйнай сістэмы падчас выканання знешніх праграм, напрыклад, пры абмежаванай даўжыні каманднага радка.
Файл параметраў змяшчае дадзеныя ў фармаце JSON. Яго змесціва павінна быць дапушчальным масівам JSON, які складаецца выключна з радкоў JSON. Кадзіроўка файла павінная быць UTF-8. Файл не павінен пачынацца з маркера парадка байтаў (BOM), але калі ён існуе, ён будзе прапушчаны.
Правілы для экранавання спецыяльных сімвалаў унутры JSON прыведзеныя ў афіцыйнай спецыфікацыі JSON, RFC 7159[4].
Само імя файла параметраў павінна быць зададзенае ў выглядзе аргумента каманднага радка з прэфіксам «@».
Камандны радок «mkvmerge -o "my file.mkv" -A "a movie.avi" sound.ogg» можа быць канвертаваны ў наступны файл параметраў JSON пад назвай, напрыклад, «options.json»:
[
"-o",
"c:\\Matroska\\мой файл.mkv",
"--title",
"#65",
"-A",
"фільм.avi",
"гук.ogg" ]
Тады адпаведная каманда будзе «mkvmerge @options.json».
Звязванне файла¶
Matroska падтрымлівае звязванне файлаў, якое проста кажа, што канкрэтны файл з'яўляецца папярэднікам або пераемнікам бягучага файла. Калі быць дакладным, то на самай справе звязаныя не файлы, а сегменты Matroska. Паколькі большасць файлаў, імаверна, будуць змяшчаць толькі адзін сегмент Matroska, у прыведзеных ніжэй тлумачэннях выкарыстоўваецца тэрмін «звязванне файлаў», хаця «звязванне сегментаў» было б больш падыходным.
Кожны сегмент ідэнтыфікуецца ўнікальным 128-бітным UID сегмента. Гэты UID аўтаматычна генеруе mkvmerge(1). Звязванне здзяйсняецца галоўным чынам праз размяшчэнне UID сегментаў (коратка: SID) папярэдняга/наступнага файла ў звесткі загалоўка сегмента. mkvinfo(1) друкуе гэтыя ідэнтыфікатары SID, калі знойдзе іх.
Калі файл разбіты на некалькі меншых і выкарыстоўваецца звязванне, то меткі часу не будуць пачынацца зноў з 0, а будуць працягвацца там, дзе спыніўся апошні файл. Такім чынам захоўваецца абсалютны час, нават калі папярэднія файлы недаступныя (напрыклад, падчас патокавай перадачы). Калі звязванне не выкарыстоўваецца, меткі часу павінны пачынацца з 0 для кожнага файла. Па змаўчанні mkvmerge(1) не выкарыстоўвае звязванне файлаў. Калі вы хочаце, вы можаце ўключыць яго праз параметр --link. Гэты параметр карысны толькі ў тым выпадку, калі таксама актываваны падзел.
Незалежна ад таго, ці актывіваваны падзел або не, карыстальнік можа задаць mkvmerge(1) каб звязваць створаныя файлы з канкрэтнымі SID. Гэта дасягаецца праз параметры --link-to-previous і --link-to-next. Гэтыя параметры прымаюць сегмент SID у фармаце, які выводзіць mkvinfo(1): 16 шаснаццатковых лікаў між 0x00 і 0xff, дзе кожны мае прэфікс '0x', напрыклад, '0x41 0xda 0x73 0x66 0xd9 0xcf 0xb2 0x1e 0xae 0x78 0xeb 0xb4 0x5e 0xca 0xb3 0x93'. У якасці альтэрнатывы можна выкарыстоўваць больш кароткую форму: 16 шаснаццатковых лікаў між 0x00 і 0xff без прэфіксаў '0x' і без прабелаў, напрыклад '41da7366d9cfb21eae78ebb45ecab393'.
Калі падзел выкарыстоўваецца, то першы файл звязваецца з SID, які перадаецца з --link-to-previous, і апошні файл звязваецца з SID, які перадаецца з --link-to-next. Калі падзел не выкарыстоўваецца, то адзін выхадны файл будзе звязаны з абодвума SID.
Стандартныя значэнні¶
Спецыфікацыя Matroska сцвярджае, што некаторыя элементы маюць значэнне па змаўчанні. Звычайна элемент не запісваецца ў файл, калі яго значэнне роўна значэнню па змаўчанні, каб сэканоміць месца. Элементы, якія карыстальнік можа прапусціць у вывадзе mkvinfo(1), — гэта элементы мова і пазнака трэка па змаўчанні. Значэннем па змаўчанні для элемента мова з'яўляецца англійская ('eng'), а значэннем па змаўчанні для элемента пазнака трэка па змаўчанні з'яўляецца так. Таму, калі вы выкарысталі --language 0:eng для трэка, яно не будзе паказвацца ў вывадзе mkvinfo(1).
Далучэнні¶
Магчыма, вы таксама хочаце захаваць некаторыя фатаграфіі разам са сваім файлам Matroska, або вы выкарыстоўваеце субцітры SSA і маеце патрэбу ў спецыяльным шрыфце TrueType, які вельмі рэдка сустракаецца У гэтых выпадках вы можаце прымацаваць гэтыя файлы да файла Matroska. Яны будуць не проста дадазеныя ў файл, а ўбудаваныя ў яго. Затым прайгравальнік зможа паказаць гэтыя файлы (выпадак «фатаграфій») або выкарыстоўваць іх для прайгравання субцітраў (выпадак «шрыфты TrueType»).
Вось прыклад далучэння фатаграфіі і шрыфта TrueType ў выхадны файл:
$ mkvmerge -o output.mkv -A video.avi sound.ogg \
--attachment-description "Me and the band behind the stage in a small get-together" \
--attachment-mime-type image/jpeg \
--attach-file me_and_the_band.jpg \
--attachment-description "The real rare and unbelievably good looking font" \
--attachment-mime-type application/octet-stream \
--attach-file really_cool_font.ttf
Калі ў якасці ўваходнага файла выкарыстоўваецца файл Matroska з далучэннем, то mkvmerge(1) скапіюе далучэнні ў новы файл. Выбар таго, якія далучэнні капіююцца, а якія не, можна змяніць праз параметры --attachments і --no-attachments.
Раздзелы¶
Сістэма раздзелаў Matroska больш шырокая, чым старая вядомая сістэма, якая выкарыстоўваецца ў файлах OGM. Поўная дакументацыя размешчаная на сайце Matroska[1].
mkvmerge(1) падтырмлівае два тыпы файлаў раздзелаў у якасці ўваходных дадзеных. Першы фармат пад назвай «просты фармат раздзела» з'яўляецца тым жа фарматам, які чакаюць інструменты OGM. Другі фармат — гэта фармат раздзелаў на аснове XML, які падтрымлівае ўсе функцыі раздзелаў Matroska.
Акрамя спецыяльных файлаў раздзелаў mkvmerge(1) можа таксама чытаць раздзелы з іншых фарматаў (напрыклад, MP4, Ogg, Blu-rays або 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. Ён не задае ніякі ChapterTrackNumbe, што азначае, што ўсе раздзелы ўжываюцца да ўсіх трэкаў у файле.
Паколькі гэта тэкставы файл, можа спатрэбіцца канвертаванне набора сімвалаў. Глядзіце секцыю аб тэкставых файлах і наборах сімвалаў для тлумачэння, як mkvmerge(1) робіць канвертаванне між наборамі сімвалаў.
Фармат раздзелаў на аснове XML¶
Фармат раздзелаў на аснове XML, выглядае прыкладна так:
<?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE Chapters SYSTEM "matroskachapters.dtd"> <Chapters>
<EditionEntry>
<ChapterAtom>
<ChapterTimeStart>00:00:30.000</ChapterTimeStart>
<ChapterTimeEnd>00:01:20.000</ChapterTimeEnd>
<ChapterDisplay>
<ChapterString>A short chapter</ChapterString>
<ChapterLanguage>eng</ChapterLanguage>
</ChapterDisplay>
<ChapterAtom>
<ChapterTimeStart>00:00:46.000</ChapterTimeStart>
<ChapterTimeEnd>00:01:10.000</ChapterTimeEnd>
<ChapterDisplay>
<ChapterString>A part of that short chapter</ChapterString>
<ChapterLanguage>eng</ChapterLanguage>
</ChapterDisplay>
</ChapterAtom>
</ChapterAtom>
</EditionEntry> </Chapters>
У гэтага фармата ёсць тры магчымасці, якія адсутнічаюць у простым фармаце раздзелаў:
Дыстрыбутыў 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)
Чытанне раздзелаў з Blu-ray¶
mkvmerge(1) можа чыатаць раздзелы з нешзашыфраваных дыскаў Blu-ray. Для гэтага вы можаце выкарыстоўваць шлях да аднаго са спісаў прайгравання MPLS з параметрам --chapters.
Прыклад: --chapters /srv/blurays/BigBuckBunny/BDMV/PLAYLIST/00001.mpls
Чытанне раздзелаў з DVD¶
Калі MKVToolNix сабраны з бібліятэкай libdvdread, mkvmerge(1) можа чытаць раздзелы з DVD. Для гэтага вы можаце выкарыстаць шлях да адной з папак або файлаў на DVD з параметрам --chapters. Паколькі DVD-дыскі могуць змяшчаць больш за адзін загаловак, а кожны загаловак мае свой уласны набор раздзелаў, вы можаце дадаць двухкроп'е і жаданы нумар імя ў канец аргумента імя файла. Нумар імя па змаўчанні роўны 1.
Прыклад: --chapters /srv/dvds/BigBuckBunny/VIDEO_TS:2
Агульныя заўвагі¶
Пры падзеле файлаў mkvmerge(1) таксама правільна карэктуе раздзелы. Гэта азначае, што кожны файл змяшчае толькі запісы раздзелаў, якія да яго датычныя, і што меткі часу будуць зрушаныя ў адпаведнасці з новымі меткамі часу кожнага зыходнага файла.
mkvmerge(1) можа капіяваць раздзелы з уваходных файлаў Matroska, калі яны яўна не адключаныя праз параметр --no-chapters. Раздзелы з усіх крыніц (файлы Matroska, файлы Ogg, файлы MP4, тэкставыя файлы раздзелаў) звычайна не аб'ядноўваюцца, а выходзяць у асобныя ChapterEdition. Толькі калі раздзелы чытаюцца з некалькіх файлаў Matroska або XML, якія маюць аднолькавыя ідэнтыфікатары UID выдання, будуць аб'яднаныя ў адзіны ChapterEdition. Калі такое аб'яднанне пажадана і ў іншых сітуацыях, карыстальнік павінен спачатку выняць раздзелы з усіх крыніц праз mkvextract; затым уручную аб'яднаць файлы XML, а затым зліць іх.
Тэгі¶
Уводзіны¶
Сістэма тэгаў Matroska аналагічная сістэме іншых кантэйнераў: набор пар KEY=VALUE. Аднак у Matroska гэтыя тэгі таксама могуць быць укладзенымі, як KEY, так і VALUE з'яўляюцца ўласнымі элементамі. Прыклад файла example-tags-2.xml паказвае, як выкарыстоўваць гэтую сістэму.
Вобласць ужывання тэгаў¶
Тэгі Matroska не ўжываюцца аўтаматычна да ўсяго файла. Яны могуць ужывацца да розных частак файла: да аданго або некалькіх трэкаў, да аднаго або некалькіх раздзелаў або нават да камбінацыі абодвух. Спецыфікацыя Matroska[5] змяшчае больш падрабязныя звесткі аб гэтым факце.
Адным з важных фактаў з'яўляецца тое, што тэгі звязваюцца з трэкамі або раздзеламі праз элемент тэга Targets Matroska і што, UID, якія выкарыстоўваюцца для гэтага звзвання, не з'яўляюцца ідэнтыфікатарамі трэкаў, якія mkvmerge(1) выкарыстоўвае ўсюды. Замест нумароў выкарыстоўваюцца UID, якія mkvmerge(1) вылічвае аўтаматычна (калі трэк узяты з фармата файла, адрознага Matroska) або якія капіююцца з уваходнага файла, калі ўваходны файл трэка з'яўляецца файлам Matroska. Таму цяжка даведацца, якія UID выкарыстоўваць у файле тэгаў, перш чым файл будзе перададзены ў mkvmerge(1).
mkvmerge(1) ведае два варыянты, з дапамогай якіх вы можаце дадаць тэгі да файлаў Matroska: параметры --global-tags і --tags. Розніца ў тым, што першы параметр, --global-tags, прымусіць тэг ўжывацца да ўсяго файла, выдаліўшы любы са згаданых вышэй элементаў Targets. Другі параметр, --tags, аўтаматычна ўстаўляе UID, які mkvmerge(1) стварае для тэга, зададзенага прах частку TID параметра --tags.
Прыклад¶
Дапусцім, вы хочаце дадаць тэгі да відэатрэка, прачытанага з файла AVI. mkvmerge --identify file.avi паведамляе вам, што ідэнтыфікатары відэатрэка (не блытайце гэты ідэнтыфікатар з UID!) роўны 0. Тады вы ствараеце файл тэгаў, пакінуўшы ўсе элементы Targets і выканаўшы mkvmerge(1):
$ mkvmerge -o файл.mkv --tags 0:тэгі.xml файл.avi
Фармат файла тэгаў¶
mkvmerge(1) падтрымлівае фармат файла тэга на аснове XML. Фармат вельмі дакладна змадэляваны па спецыфікацыі Matroska[5]. Як двайковы, так і дыстрыбутыў зыходнікаў у MKVToolNix пастаўляюцца з узорам файла з імем example-tags-2.xml, які проста пералічае ўсе вядомыя тэгі і можа выкарыстоўвацца ў якасці асновы для рэальных файлаў тэгаў.
Асновы:
Тыпы дадзеных¶
Новая сістэма тэгаў Matroska ведае толькі два тыпы дадзеных: радок UTF-8 і двайковы тып. Першы выкарыстоўваецца для імя тэга і элемента <String>, а двайковы тып выкарыстоўваецца для элемента <Binary>.
Паколькі двайковыя дадзеныя самі па сабе не памяшчаюцца ў файл XML mkvmerge(1) падтрымлівае два іншыя метады захоўвання двайковых дадзеных. Калі змесціва тэга XML пачынаецца з '@', то апошні тэкст разглядаецца як імя файла. Змесціва адпаведнага файла капіюецца ў элемент Matroska.
У адваротным выпадку чакаецца, што дадзеныя будуць закадзіраваныя ў Base64. Гэта кадзіроўка, якая канвертуе двайковыя дадзеныя ў арганічны набор сімвалаў ASCII і выкарыстоўваецца, напрыклад, у праграмах электроннай пошты. mkvextract(1) выведзе дадзеныя, закадзіраваныя ў Base64 для двайковых элементаў.
Састарэлай сістэме тэгаў вядомыя яшчэ некаторыя тыпы дадзеных, якія можна знайсці ў афіцыйнай спецыфікацыі тэгаў Matroska. Паколькі mkvmerge(1) больш не падтрымлівае гэтую сістэму, гэтыя тыпы тут не апісаныя.
Вядомыя тэгі файла фармата XML¶
Далей паказаны спіс падтрымліваных тэгаў XML, іхнія тыпы дадзеных і інтэрвал дапушчальных значэнняў:
Tags (master)
Tag (master)
Targets (master)
TargetTypeValue (unsigned integer)
TargetType (UTF-8 string)
TrackUID (unsigned integer)
EditionUID (unsigned integer)
ChapterUID (unsigned integer)
AttachmentUID (unsigned integer)
Simple (master)
Simple (master)
Name (UTF-8 string)
TagLanguage (UTF-8 string)
DefaultLanguage (unsigned integer)
String (UTF-8 string)
Binary (binary)
Звесткі аб сегментах¶
Праз XML-файл сегментных звестак можна задаць пэўныя значэнні ў полі загалоўка «звесткі аб сегменце» файла Matroska. Усе гэтыя значэнні не могуць быць зададзеныя праз іншыя параметры каманднага радка.
Іншыя палі загалоўка «звестак аб сегменце» можна задаць праз параметры каманднага радка, але не праз XML-файл. Гэта ўключае, напрыклад, параметры --title і --timestamp-scale.
Існуюць і іншыя элементы, якія нельга задаць ні праз параметры каманднага радка, ні праз XML-вайлы. Да іх адносяцца наступныя элементы: DateUTC (таксама вядомы як «дата зліцця»), MuxingApp, WritingApp і Duration. Яны заўжды задаюцца mkvmerge(1) самастойна.
Далей паказаны спіс падтрымліваных тэгаў XML, іхнія тыпы дадзеных і інтэрвал дапушчальных значэнняў:
Info (master)
SegmentUID (binary, valid range: length in bytes == 16)
SegmentFilename (UTF-8 string)
PreviousSegmentUID (binary, valid range: length in bytes == 16)
PreviousSegmentFilename (UTF-8 string)
NextSegmentUID (binary, valid range: length in bytes == 16)
NextSegmentFilename (UTF-8 string)
SegmentFamily (binary, valid range: length in bytes == 16)
ChapterTranslate (master)
ChapterTranslateEditionUID (unsigned integer)
ChapterTranslateCodec (unsigned integer)
ChapterTranslateID (binary)
Кампаноўка файла MATROSKA¶
Кампаноўка файла Matroska дастаткова гібкая. mkvmerge(1) будзе паказваць файл загадзя перадвызначаным чынам. Вынікоўны файл выглядае так:
[Загаловак EBML] [сегмент {метапошук #1} [звесткі аб сегменце] [звесткі аб трэку] {далучэнні} {раздзелы} [кластар 1] {кластар 2} ... {кластар n} {Сue} {метапошук #2} {меткі}]
Элементы ў фігурных дужках неабавязковыя і залежаць ад выкарыстанага змесціва і параметраў. Пара заўваг:
Найкарацейшы файл Matroska выглядае так:
[Загаловак EBML] [сегмент [звесткі аб сегменце] [звесткі аб трэку] [кластар 1]]
Гэта прыклад файла, які змяшчае толькі аўдыя.
Знешнія файлы метак часу¶
mkvmerge(1) дазваляе карыстальніку самастойна выбіраць меткі часу для пэўнага трэка. Гэта можна выкарыстоўваць для стварэння файлаў з пераменнай частатой кадраў або для ўключэння цішыні ў аўдыя. У гэтым выпадку кадр з'яўляецца элементам, які стварае асобна для блока Matroska. Для відэа гэта роўна адзін кадр, для аўдыя гэта адзін пакет пэўнага тыпу аўдыя. Напрыклад, для AC-3 гэта будзе пакет, які змяшчае 1536 ўзораў.
Файлы метак часу, якія выкарыстоўваюцца пры даданні трэкаў адзін да аднаго, павінны задавацца толькі для першай часткі ланцуга трээкаў. Напрыклад, калі вы дадаяце два файлы, v1.avi і v2.avi, і хочаце выкарыстаць меткі часу, ваш камандны радок павінен выглядаць прыкладна так:
$ mkvmerge ... --timestamps 0:мае_меткі_часу.txt v1.avi +v2.avi
Існуюць чатыры фарматы, якія распазнае mkvmerge(1). Першы радок заўжды змяшчае нумар версіі. Пустыя радкі, радкі, якія змяшчаюць толькі прабелы і радкі, якія пачынаюцца з «#», ігнаруюцца.
Фармат файла метак часу v1¶
Гэты фармат пачынаецца з радка версіі. Другі радок аб'яўляе колькасць кадраў у секунду па змаўчанні. Усе наступныя радкі змяшчаюць тры лікі, падзеленыя коскамі: пачатковы кадр (0 — першы кадр), канечны кадр і колькасць кадраў у гэтым дыяпазоне. FPS — гэта лік з плаваючай коскай і з кропкай '.' у якасці дзесятковай коскі. Дыяпазоны могуць змяшчаць разрывы, для якіх выкарыстоўваецца стандартнае значэнне FPS. Напрыклад:
# timestamp format v1 assume 27.930 800,1000,25 1500,1700,30
Фармат файла метак часу v2¶
У гэтым фармаце кожны радок змяшчае метку часу для адпаведнага кадра. Гэтая метка часу павінна быць зададзеная з дакладнасцю да мілісекунд. Гэта можа быць лік з плаваючай коскай, але гэта не абавязкова. Вы павінны падаць як мінімум столькі радкоў метак часу, колькі кадраў у трэку. Меткі часу ў гэтым файле павінны быць адсартаваныя. Прыклад для 25 кадраў у секунду:
# timestamp format v2 0 40 80
Фармат файла метак часу v3¶
У гэтым фармаце кожны радок змяшчае даўжыню ў секундах, за якой ідзе дадатковая колькасць кадраў у секунду. Абодва могуць быць лікамі з плаваючай коскай. Калі колькасць кадраў у секунду адсутнічае, выкарыстоўваецца значэнне па змаўчанні. Для аўдыя вы павінны дазволіць кадзіроўшчыку самастойна вылічыць меткі часу кадра. Для гэтага вы павінны выкарыстаць 0,0 у якасці колькасці кадраў у секунду. Вы таксама можаце стварыць разрывы ў патоку, выкарыстоўваючы ключавое слова 'gap', за якім ідзе даўжыня разрыву. Прыклад аўдыяфайла:
# timestamp format v3 assume 0.0 25.325 7.530,38.236 gap, 10.050 2.000,38.236
Фармат файла метак часу v4¶
Фармат ідэнтычны фармату v2. Адзінае адрозненне ў тым, што меткі часу не павінны быць адсартаваныя. Гэты фармат не варта калі-небудзь выкарыстоўваць.
Коды завяршэння¶
mkvmerge(1) завяршаецца з адным з трох кодаў:
Пераменныя асяроддзя¶
mkvmerge(1) выкарыстоўвае стандартныя пераменныя, якія вызначаюць сістэмную мову (напрыклад: LANG і сямейства LC_*). Дадатковыя пераменныя:
MKVMERGE_DEBUG, MKVTOOLNIX_DEBUG і яго кароткая форма MTX_DEBUG
MKVMERGE_ENGAGE, MKVTOOLNIX_ENGAGE і яго кароткая форма MTX_ENGAGE
Глядзіце таксама¶
mkvinfo(1), mkvextract(1), mkvpropedit(1), mkvtoolnix-gui(1)
Хатняя старонка¶
Апошняя версія праграмы заўсёды даступная на хатняй старонцы MKVToolNix[6].
AUTHOR¶
Морыц Бункус <moritz@bunkus.org>
NOTES¶
- 1.
- сайт Matroska
- 2.
- хатняй старонцы IANA
- 3.
- mkvmerge-identification-output-schema-v20.json
- 4.
- RFC 7159
- 5.
- Спецыфікацыя Matroska
- 6.
- хатняй старонцы MKVToolNix
2024-09-07 | MKVToolNix 87.0 |