Hlavní navigace

Matroska: v řádce i grafice

8. 12. 2009
Doba čtení: 6 minut

Sdílet

Předchozí článek o kontejneru Matroska byl z větší části teoretický. Jestli vás tento kontejner zaujal, bude se vám hodit několik příkladů použití utilitky mkvmerge a grafického nástroje mmg. Ukážeme si jak přidat několik titulků a zvukových stop do jednoho videa v obou nástrojích.

Jak už jsme si řekli minule, nástroje pro práci s Matroskou pouze kopírují obsah videa z nějakého kontejneru do Matrosky. Kvalita je zachována a přitom můžeme využívat výhod, které nám Matroska dává. Nakonec zůstaneme s jediným souborem obsahujícím přesně to, co potřebujeme. Pokud toho umí přehrávač využít, tak můžeme do mkv krom samotného videa, zvuku a titulků přidat i snímky z filmu, popisující text a pokud jsme opravdu důkladní, tak i soundtrack a třeba bonusy. U většiny přehrávačů se ale s takovými funkcemi nesetkáme,–- a bohužel ani u filmů, ať už open či komerčních.

 Nástroje

Debianí/Ubuntí balíčky mkvtoolnix a mkvtoolnix-gui obsahují řádkové i grafické nástroje. Ty nám umožňují dělat téměř všechno, na co si vzpomeneme a co Matroska zvládne. Něco málo jsme si řekli už minule, takže dnes si to rozšíříme.

 mkvmerge

První nástroj, se kterým strávíme nejvíce času, zvlášť pokud se rozhodneme převést více videí najednou, bude mkvmerge. Z názvu vyplývá, že půjde o nástroj pro spojování několika zdrojů. Uživatelům, kteří chtějí uložit jedno velké mkv na optické médium, přijde vhod funkce pro rozdělování. Ta umožňuje napasovat mkv přesně tam, kam je potřeba. Přitom se tohle rozdělení postará o všechny součásti kontejneru. Nemusíte si tak třeba dělat starosti s rozdělováním titulků. Použití je jednoduché a složitější struktury dat jako třeba tagy nebo kapitoly se zadávají přes xml soubory. Pro použití ve skriptech je mkvmerge ideální.

mmg

Pokud si chcete s převodem více vyhrát, přidat nějaké další informace nebo prostě jen usoudíte, že skládat parametry pro mkvmerge není to, co chcete, je tu jeho frontend mmg. Ten umožňuje naklikat vše důležité, co lze udělat v mkvmerge. Velkou výhodou je vytváření fronty úkolů, takže pokud chcete převod většího množství souborů dělat třeba přes noc, mmg v tom bránit nebude.

mkvextract

Nástroj mkvextract není tak užitečný jako předchozí dva, ale svoje uplatnění si najde. Z Matrosky umí oddělit jednotlivé stopy. Není také problém získat pouze video stopu, zvuk nebo titulky. Hodí se to např. pokud se rozhodneme předělat některý z již vytvořených mkv souborů a pouhá úprava by nebyla možná nebo by byla zbytečně složitá.

Jak na film

Cílem následujících několika příkladů bude získat mkv soubor, který bude obsahovat nějaký film. K němu nahrajeme troje titulky ve třech jazycích, druhou zvukovou stopu a nakonec video rozdělíme na kapitoly. Jako příklad si vezmeme film Elephants Dream, který má něco kolem 815 MB. Jednoduše na něj lze najít titulky pro několik jazyků a do druhé audio stopy můžeme dát např. nějakou hudbu. Pokud nemáte inspiraci, tak zkuste jamendo.com. V praxi se spíše setkáte se zvukovou stopou s dabingem.

Máme tedy k dispozici následující soubory:

  • elephants_dre­am_hd.avi
  • hudba.mp3
  • titulky_cz.srt
  • titulky_en.srt
  • titulky_sk.srt
  • kapitoly.xml

Posledního souboru se neděste, bude vysvětlen níže.

Video s jednou audio stopou a titulky

Vytvoření mkv souboru s videem, zvukem a titulky jsme si ukázali minule. Pro pořádek uvádím tento příklad ještě jednou a budeme ho dále rozšiřovat. Tentokrát si to nebudeme komplikovat výchozím výběrem titulků.

mkvmerge -o vystup.mkv elephants_dream_hd.avi --language 0:cze titulky_cz.srt 

Po každém z příkladů nezapomeneme spustit:

mkvmerge -i vystup.mkv 

Tím zjistíme, co všechno se v našem kontejneru usadilo.

Titulky pro více jazyků

U tohoto příkladu si můžeme všimnou větší použití parametru „–language“. Všimneme si také, že má jako parametr číslo a za dvojtečkou kód jazyka a je čas si vysvětlit proč. Jazyk pomocí tohoto parametru nastavujeme vždy před souborem, který do Matrosky vkládáme. Číslo označuje stopu, o kterou se jedná v souboru, který vkládáme. Jelikož srt soubory nemají víc než jednu stopu, tak tam bude vždy nula. Pokud ale nastavujeme jazyk zvukové stopy, která je v nějakém video (tady například náš avi soubor), tak tam jde většinou o stopu jedna. Program mmg tyto čísla při vkládání zobrazí. Pokud byste si nebyli jisti, tak můžete vyzkoušet „mkvmerge -i“ i na .avi soubor.

mkvmerge -o vystup.mkv elephants_dream_hd.avi --language 0:cze titulky_cz.srt --language 0:eng titulky_en.srt --language 0:slo titulky_sk.srt 

V přehrávači se pak titulky objeví s popiskem správného jazyka. Pro lepší pochopení číslování snad pomůže toto schéma:

0:0 elephants_dream_hd.avi - video
0:1 elephants_dream_hd.avi - zvuk
1:0 titulky_en.srt
2:0 titulky_sk.srt
3:0 titulky_cz.srt
4:0 hudba.mp3 

První číslo je importovaný soubor, resp. jeho pořadí. Druhé číslo je pořadí stopy v tomto importovaném souboru.

Další audio stopa

Případ popisovaný v minulé části si ukážeme tady jenom na zvukové stopě. Pokud máme k dispozici druhou audio, tak ji přidáme stejně jako přidáváme titulky a nastavíme i správný jazyk.

mkvmerge -o vystup.mkv --language 1:eng elephants_dream_hd.avi --language 0:cze titulky_cz.srt --language 0:eng titulky_en.srt --language 0:slo titulky_sk.srt --language 0:cze hudba.mp3 

Přidáváme kapitoly

Kapitoly mohou být použity třeba pro rozdělení filmu. Nejlepší příklad bude „Kill Bill“ nebo jemu podobné filmy, který je rozdělený na kapitoly už ve scénáři. Další možnost je nahrát nějaký seriál do jednoho celistvého videa a jednotlivé díly pak oddělovat pomocí kapitol.

Jednotlivé kapitoly s popisky se zapisují do xml souboru. Ten jde jednoduše naeditovat v mmg, ale pokud si ho chcete napsat ručně, pomůže vám v tom tento příklad:

<?xml version="1.0" encoding="UTF-8"?>

<!-- <!DOCTYPE Tags SYSTEM "matroskatags.dtd"> -->

<Chapters>
    <EditionEntry>
        <ChapterAtom>
            <ChapterDisplay>
                <ChapterString>Moje první kapitola</ChapterString>
                <ChapterLanguage>cze</ChapterLanguage>
            </ChapterDisplay>
            <ChapterTimeStart>00:01:00.000000000</ChapterTimeStart>
        </ChapterAtom>
    </EditionEntry>
    <EditionEntry>
        <ChapterAtom>
            <ChapterDisplay>
                <ChapterString>Moje druhá kapitola</ChapterString>
                <ChapterLanguage>cze</ChapterLanguage>
            </ChapterDisplay>
            <ChapterTimeStart>00:02:00.000000000</ChapterTimeStart>
        </ChapterAtom>
    </EditionEntry>
</Chapters> 

V příkladu je nastavený pouze čas začátku, jazyk a název kapitoly. Jazykových mutací může být více.

Nakonec zbývá už jen přidat kapitoly do našeho mkv souboru.

mkvmerge -o vystup.mkv --chapters kapitoly.xml --language 1:eng elephants_dream_hd.avi --language 0:cze titulky_cz.srt --language 0:eng titulky_en.srt --language 0:slo titulky_sk.srt --language 0:cze hudba.mp3 

 mmg

Ne všechno je v Matrosce pouze o příkazové řádce. Všechny dnes popsané příklady jdou relativně pohodlně naklikat pomocí již zmíněného nástroje mmg. Ten sice nevypadá jako ze soutěže o nejlepší uživatelské rozhraní, ale svoji práci zastane. Po spuštění na nás vykoukne dialog pro přidání video, audio i titulkových souborů. Můžeme upravit i nastavení výstupního souboru. Uprostřed najdeme parametry jednotlivých stop, dalších záložek si zatím všímat nemusíme. Po přidání jednotlivých souborů uvidíme zmiňovaná ID jednotlivých stop.

Matroška 2

Po kliknutí na stopy s titulky, zvukem a i videem můžeme nastavit jazyk, který nastavujeme v příkladech výše.

Matroška 2

Mnohem jednodušší je i přidávání kapitol. Stačí kliknout na „Chapter editor“, v menu vybrat „Chapter Editor->New chapters“ a postupně přidat a nastavit jednotlivé kapitoly. Stačí název a čas začátku, ale dalšími parametry také nic nezkazíte.

Matroška 2

Nakonec je potřeba kapitoly uložit do xml.

Matroška 2

Po uložení tento xml soubor nastavíme jako soubor s kapitolami pro náš mkv v nabídce „Global“. Pokud tak neučiníme, mmg nás na to upozorní.

Matroška 2

Nakonec zbývá kliknout na „Start muxing“. Další možnost je zkopírovat si vygenerované parametry pro mkvmerge do schránky a zařadit akci do fronty. Provádění úkolů ve frontě pak můžeme kdykoli odstartovat.

Matroška 2

Fronta je velmi jednoduchá a trochu chybí funkce pro časování. K dialogu fronty se dostaneme přes menu „Muxing->Manage jobs“.

CS24_early

Matroška 2

Ať už spustíme muxování jakkoli, objeví se nám okno s výstupem mkvmerge a po dokončení je hotovo. Okno má velmi pěkně oddělené chyby a varování.

Matroška 2

 Závěr

Téma Matrosky rozhodně ještě není u konce. Neukázali jsme si další zajímavé vlastnosti jako jsou třeba tagy, přílohy nebo rozdělování podle velikosti či času na menší soubory. Za týden budeme pokračovat.

Odkazy

Byl pro vás článek přínosný?

Autor článku

Adam Štrauch je redaktorem serveru Root.cz a svobodný software nasazuje jak na desktopech tak i na routerech a serverech. Ve svém volném čase se stará o komunitní síť, ve které je již přes 100 členů.