Matroska: multimédia v úhledném balíčku

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

Sdílet

Multimediální kontejner Matroska je vyzdvihován snad každým článkem, který se o ní jenom zmíní. Realita se může zdát mnoha uživatelům malinko jiná. Přesto, že toho umí Matroška spoustu, nástrojů pro využití všech jejích možností je málo a některé chybí. V Linuxu na tom je nejlépe řádkový MKVToolnix.

Pojmy

Začátečníkům nemusí pojem „kontejner“ být zcela jasný, takže začneme s vysvětlením několika pojmů.

Kontejner

Multimediální kontejner je něco, co každý den používáme a ani o tom nemusíme vědět. Pro představu jde o krabici, do které se složí další data. Nejčastěji jde o video nebo audio, ale najdou se i jiné typy dat. Existuje jich mnoho, ale nejrozšířenější je AVI (Audio Video Interleave). Je to klasický, 17 let starý kontejner, který se používá prakticky dodnes. I když má nepříjemné vlastnosti, které znemožňují použití některých kodeků bez nehezkých hacků, tak ho mají výrobci i „piráti“ vcelku v oblibě. Další zástupci kontejnerů jsou třeba MPEG-TS(PS), QuickTime, Ogg, 3GP atd.

Kodek

Video a audio data samotná musí být v nějakém formátu, který se může umístit do kontejneru. Můžeme ukládat jednotlivé snímky nebo použít nějaký sofistikovanější způsob, jako třeba kodek H.264 nebo stále populární MPEG-4. Tento balík dat vložíme do kontejneru, který jim dá tvar a přehrávače s nimi budou moci pracovat. Kontejner může zpravidla obsahovat více balíků. Cílem kodeku je uložit data za nějakým účelem, u multimédií nejčastěji snížit velikost a zachovat co největší kvalitu. Kodek ale nemusí pracovat jen s multimédii, ale i s obecnými daty, které má schovat před zraky ostatních nebo se snaží snížit jejich velikost aniž by se ztratil jediný bit. To nás v kontextu s Matroskou moc zajímat nemusí.

Stopa

Stopa obsahuje nějaká data s videem, audiem či textem. Např. do Matrosky si můžeme vložit stop kolik chceme. Tahle vlastnost umožňuje do kontejneru přidat titulky a audio několika jazyků. Aby toho nebylo málo, můžeme do kontejneru přidat i několik video stop. To znamená, že v jednom mkv souboru najdeme třeba celou sezónu jednoho seriálu nebo film s bonusy. V případě Matrosky je ve stopě uložen vždy jeden typ dat, tedy titulky, audio nebo video.

Menu

Když si koupíte DVD, najdete na něm hromadu souborů, mezi kterými se dá najít i tzv. menu. Jde o vlastnost, díky které si může uživatel pohodlně navolit zvukovou stopu, případně titulky s několika tlačítky na ovladači a v neposlední řadě spustit přesně to video, které chce. Jde prakticky jen o formu podání obsahu, na kterou nás často představitelé filmových společností lákají, samotný film si pustíme i bez menu. U Matrosky si můžete vytvořit také takové menu. Bohužel se mi nepodařilo najít nástroj, který by to opravdu dokázal. MKVToolnix, který si ukážeme v druhé polovině článku, to bohužel neumí a jiné linuxové nástroje jsou rády, že Matrosku vůbec správně otevřou.

 Kapitola

Kapitolou se rozumí rozdělení jednoho videa na několik části. V podání Matrosky jde o textovou informaci (může být i XML), která obsahuje čas začátku této části a její název. Slouží pro jednodušší orientaci ve filmu. Obdobu najdeme i na DVD médiích. Video v tomto případě není rozděleno na kapitoly fyzicky, ale jde jen o značky.

Matroska

Když známe základní pojmy, můžeme si říci něco bližšího o Matrosce. Jak už bylo řečeno, jde o kontejner na multimediální data. Je otevřený a snaží se vyhovět požadavkům moderní doby. Je navržen tak, aby budoucí změny nezničily kompatibilitu se staršími verzemi. Na druhou stranu tu je jedna vlastnost, kvůli které se dnes Matroska nedostane tam, kde bychom ji chtěli, a to absence DRM. I když nejsem zastáncem této technologie, tak je pravda, že tlak je jiný. Bohužel ne od uživatelů. Dokud budou filmové společnosti cítit potřebu omezovat práva uživatele na stažené soubory např. z nějaké online videopůjčovny, nebude zde prostor ani pro Matrosku. Kde se Matroska hodně používá, jsou různé TV a Blue-ray ripy. Většinu ale nevyužívají nic jiného než jednu audio a jednu video stopu.

Matroska může v jednom souboru nést data, které známe z klasických DVD, a přitom si drží navíc výhody jako:

  • Podpora velkého množství kodeků
  • Bezztrátová editace
  • Rychlé řešení chybných snímků
  • Rychlé přetáčení
  • Streamování po síti
  • O kousek menší soubory než třeba u AVI

Nemusíte narazit pouze na video soubory, ale může se vám dostat do ruky i soubor s koncovkou .mka, který obsahuje pouze zvukové stopy. Někteří čtenáři již pravděpodobně pochopili, že v tomto souboru může být rovnou celé album. Další variantou (kromě klasického .mkv s video stopou) je soubor s koncovkou .mks. Jde pouze o titulky, které jsou připraveny ve „správném“ formátu pro další práci. Smysl tohoto převodu pochopíte u příkladů v příštím článku.

I když povídání o Matrosce zní jak rajská hudba, kromě absence DRM ji chybí ještě jedna velmi důležitá strategická věc. Výrobci nejrůznějších stolních přehrávačů se do implementace nehrnou. Podporu všech vlastností Matrosky nenajdeme pomalu ani u přehrávačů, které používáme běžně v Linuxu nebo i ve Windows. Matroska není dostatečně komerčně zajímavá a touhu uživatelů ukazuje třeba množství návodů na převod Matrosky do AVI.

MKVToolnix

Pro příznivce Linuxu je Matroska ideální. Je vyvíjena otevřeně a nabízí všechno, co může uživatel od kontejneru chtít. Když už se rozhodneme Matrosku použít, bude to pravděpodobně k tomu, abychom naše videa převedli z „ošklivého“ .avi do nablýskaného .mkv. Jako bonus si můžeme přidat titulky, s trochou štěstí i další zvukové stopy, prostě co zdroj dá. Odvážnější si mohou nashromážděné seriály rozdělit po sezónách a doufat, že to jejich oblíbený přehrávač nějak přehraje a umožní přepínat. Nicméně i běžné spojení jednoho dílu s titulky bude dobrý výsledek.

Matroska za nás totiž vyřeší jednu velmi nepříjemnou záležitost u titulků, a to je kódování. V Matrosce jsou všechny titulky uchovávané v utf-8 a jiné kódování bychom jí ani neměli strkat. Když zajdeme až do extrémů, můžeme k titulkům přibalit i opravdu hezký font, který se pak při přehrávání použije. Důležitou poznámkou je, že titulky nejsou pevnou součástí videa, a i když je možné nastavit, aby je přehrávač automaticky použil, vždycky jdou vypnout, stejně jako lze zvolit jiný jazyk.

Jedním z cílů projektu Matroska je i přinést nástroje, které s tímto kontejnerem umí pracovat. Sběhlejší linuxáci budou jako doma, protože tímto nástrojem je řádkový balík MKVToolnix. S ním lze prakticky z jakéhokoli kontejneru dostat data a uložit je do Matrosky. Převod lze naskriptovat a aplikovat na celý souborový systém. K výsledku můžeme přidat již zmíněné titulky a třeba ještě seznam kapitol. Když máme takovýchto .mkv souborů více, můžeme je opět spojit do jednoho a tím uložit několik videí do jednoho .mkv souboru rozděleného na jednotlivé stopy.

Tady ve vylepšování naší sbírky malinko narazíme. Nepodařilo se mi najít způsob, jak dostat menu do .mkv. MKVToolnix žádnou volbu nemá a např. Avidemux neumožňuje ani přidat titulky, natož pracovat s menu.

 Instalace

Instalace je jednoduchá, protože jde o natolik známý balík, že ho najdeme snad v každé distribuci. Na Ubuntu vypadá instalace takto:

sudo aptitude install mkvtoolnix mkvtoolnix-gui 

To nejdůležitější, tedy utilitku mkvmerge, najdeme v balíčku mkvtoolnix. Balíček mkvtoolnix-gui obsahuje grafickou utilitku mkvinfo-gui, která nám zobrazí nějaké informace o .mk* souborech v okně a frontend mmg pro mkvmerge.

 .avi do .mkv

Program mkvmerge pracuje pouze s kontejnerem, neprovádí žádné de/kódování a žádnými níže popsanými postupy se tedy neztratí kvalita původního zdroje. Pouze se soubor vylepší o vlastnosti Matrosky. Nebudu vás dále napínat, takto se převede .avi na .mkv:

mkvmerge -o video.mkv video.avi 

Ani to nebolelo a můžeme se rovnou podívat, co všechno v našem novém kontejneru najdeme:

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

Parametr -i je důležitý, protože díky němu zjistíme, co všechno jsme do kontejneru nahráli. V prvním příkladu jsme použili parametr -o, kterým říkáme, kam má jít výstup mkvmerge. Dalším parametrem je již název samotného .avi kontejneru s videem a audiem. Po spuštění se dozvíme, co přesně mkvmerge dělá, a procentuální splnění úkolu. Jde prakticky jen nakopírování dat z původní krabice do nové. Délka procesu závisí na rychlost vašeho disku.

Detailnější informace získáme buď pomocí grafické utilitky mkvinfo-gui nebo mkvinfo.

Přidáváme titulky

Jelikož souborů s titulky můžeme přidat několik, sluší se jim dát i nějakou cedulku s názvem jazyka. Nejdříve ale zkusíme vytvořit video s titulky.

mkvmerge -o video.mkv video.avi video.srt 

Program mkvmerge bere pouze srt titulky, pokud mu vnutíte jiné, oznámí vám, že není spokojený s formátem. Teď zkusíme dát titulkům cedulku s tím, že jsou české, a řekneme přehrávači, aby je spustil společně se zvukem a videem.

mkvmerge -o video.mkv video.avi --default-track 0 --language 0:cze video.srt 

Volba –default-track zařídí, aby se naše titulky spustily ve výchozím stavu. To může být ovlivněno mnoha faktory, závisející na přehrávači. Některé přehrávače třeba vyberou titulky v závislosti na nastavení jazyka lokálního systému. Označené titulky vložíme pomocí parametru –language, kde část před dvojtečkou označuje číslo stopy a část za je kód země či jazyka. Ten získáme takto:

$ mkvmerge --list-languages 

Je jedno, jestli použijeme jeden či druhý kód.

Titulky jsou převáděny vždy do utf-8 a to buď z kódování, které předáváme parametrem –sub-charset nebo se použije kódování nastavené v locale. Osobně nejdříve titulky převedu do utf8 pomocí iconv:

iconv -f cp1250 -t utf8 video.srt > video.utf8.srt 

Většina českých titulků pocházejících z internetu, používá kódování cp1250.

Nakonec se můžeme podívat na informace o videu:

bitcoin_skoleni

$ mkvmerge -i video.mkv
File 'video.mkv': container: Matroska
Track ID 1: video (V_MS/VFW/FOURCC, XVID)
Track ID 2: audio (A_MPEG/L3)
Track ID 3: subtitles (S_TEXT/UTF8) 

Závěr

I když je tu Matroska již sedm let a tolik se neprosazovala, zatím není na čase ji odepisovat a je pravděpodobné, že ji čeká ještě hezká budoucnost. Podpora .avi souborů v běžných DVD přehrávačích se také neobjevila hned. Lépe na tom jsou přehrávače v Linuxu nebo ve Windows, kde si většinou uživatel takto uložený film přehraje. Matroska je často spojována s kodekem H.264. Je to víceméně její nejčastější použití. Většinou jde o velmi kvalitní videa nebo videa určená třeba pro mobilní telefony s Androidem.

Jelikož se mi začal článek nafukovat, tak jsem se rozhodl ho rozdělit na dva. Budeme se tak moci podrobněji podívat na problematiku přehrávání Matrosky v Linuxu a hlavně rozebrat mnohem více příkladů s mkvmerge a zatím neznámý nástroj mkvextract.

Odkazy

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