14
SVEUČILIŠTE U ZAGREBU FAKULTET ELEKTROTEHNIKE I RAČUNARSTVA SEMINAR Format datoteka Matroska Krešimir Ričković Zagreb, siječanj, 2017.

Format datoteka Matroska - lecto-player.lecto.org datoteka Matroska ... spektar tipova audio i video streamova te nudi široku mogućnost dodavanja raznih sadržaja u kontejner. Slika

Embed Size (px)

Citation preview

Page 1: Format datoteka Matroska - lecto-player.lecto.org datoteka Matroska ... spektar tipova audio i video streamova te nudi široku mogućnost dodavanja raznih sadržaja u kontejner. Slika

SVEUČILIŠTE U ZAGREBU

FAKULTET ELEKTROTEHNIKE I RAČUNARSTVA

SEMINAR

Format datoteka Matroska

Krešimir Ričković

Zagreb, siječanj, 2017.

Page 2: Format datoteka Matroska - lecto-player.lecto.org datoteka Matroska ... spektar tipova audio i video streamova te nudi široku mogućnost dodavanja raznih sadržaja u kontejner. Slika

Sadržaj

1. Uvod ..................................................................................................................... 1

2. Mogućnosti, ciljevi i filozofija Matroske ................................................................. 2

3. Programi za upravljanje Matroska datotekama .................................................... 4

3.1 Programi za reprodukciju .............................................................................. 4

3.2 Programi za uređivanje ................................................................................. 4

3.3 Filtri ............................................................................................................... 4

4. Tehničke informacije o Matroski ........................................................................... 5

4.1 Struktura datoteke Matroska formata ............................................................ 5

4.2 Specifikacije Matroska datoteke .................................................................... 7

4.2.1 Header sekcija ....................................................................................... 7

4.2.2 Globalna sekcija ..................................................................................... 7

4.2.3 Segment information sekcija .................................................................. 8

4.2.4 Metaseek sekcija ................................................................................... 8

4.2.5 Cluster sekcija ........................................................................................ 8

4.2.6 Track sekcija .......................................................................................... 9

4.2.7 Cueing sekcija ........................................................................................ 9

4.2.8 Attachment sekcija ............................................................................... 10

4.2.9 Sekcija poglavlja i sekcija tagova ......................................................... 10

4.3 Licence ........................................................................................................ 10

5. Zaključak ............................................................................................................ 11

6. Literatura ............................................................................................................ 12

Page 3: Format datoteka Matroska - lecto-player.lecto.org datoteka Matroska ... spektar tipova audio i video streamova te nudi široku mogućnost dodavanja raznih sadržaja u kontejner. Slika

1

1. Uvod

Matroska (punim imenom Matroska Multimedia Container, poznat i pod

nazivom Matroška i MKV) je kontejnerski tip podataka otvorenog kôda i otvorenog

standarda. Ime Matroska je izvedenica od ruskog pojma matryoshka što je pojam za

šuplje drvene figurice koje se nalaze jedna unutar druge. Simbolika korištenja pojma

matrioške proizlazi iz činjenice da tip podataka Matroska nastoji podržavati širok

spektar tipova audio i video streamova te nudi široku mogućnost dodavanja raznih

sadržaja u kontejner.

Slika 1.: Figurice matrioške

Projekt Matroska je započeo 6. prosinca 2002. godine račvanjem od

Multimedia Container Formata (MCF) nakon razmirica između vodećeg developera

MCF-a Lassea Kärkkäinena i osnivatelja Matroske Stevea Lhommea oko korištenja

EBML-a – što je binarni ekvivalent XML-a, jezika za opis meta-podataka – umjesto

binarnog formata. U to vrijeme je Kärkkäinen bio pozvan na služenje vojnog roka.

Tokom njegovog služenja vojnog roka, zajednica koja je razvijala MCF se prebacila

na novi projekt Matroska zajedno s Lhommeom.

Matroska je u današnje vrijeme postala popularan tip podataka i podržana je

od strane neprofitne francuske organizacije „Association loi de 1901“. Specifikacije

Matroske su resurs dostupan svima bez novčane naknade jer je Matroska projekt

otvorenog kôda.

Slika 2.: Logo Matroske

Page 4: Format datoteka Matroska - lecto-player.lecto.org datoteka Matroska ... spektar tipova audio i video streamova te nudi široku mogućnost dodavanja raznih sadržaja u kontejner. Slika

2

2. Mogućnosti, ciljevi i filozofija Matroske

Za početak je bitno naglasiti da Matroska nije audio ni video kodek niti nudi

mogućnost audio i video kompresije. Matroska je kontejnerski tip podataka koji nudi

mogućnost skladištenja jednog ili više audio i video streamova u jednoj datoteci.

Postavlja se razumno pitanje – što je to kontejnerski tip podataka? Riječ je o tipu

podataka koji nudi mogućnost skladištenja mnogo različitih tipova podataka u jednoj

datoteci. Najlakše je predočiti si kontejnerski tip podataka na primjeru ZIP tipa

podataka. „Izvana” se nalazi samo jedna „zazipana” datoteka, a unutar nje se može

nalaziti neograničen broj različitih datoteka.

Uzevši u obzir da je Matroska tip podataka koji se koristi za skladištenje

multimedije, nije naodmet objasniti kontejnerski tip podataka za multimediju.

Primjerice, na disku se nalazi neki film, serija ili snimka s vjenčanja. U velikoj većini

slučajeva se radi o jednoj datoteci, primjerice o MKV (Matroska), AVI, MP4 ili o

sličnom (kontejnerskom) tipu podataka. Unutar kontejnera se nalazi video datoteka,

vrlo vjerojatno komprimirana i kodirana – primjerice kodekom x264, x265 (popularniji i

kao HEVC), FFmpeg, Xvid ili DivX – te audio datoteka, također vrlo vjerojatno

komprimirana – primjerice s AAC, MP3, AC3, FLAC, Vorbis, WAV ili WMA.

Osim što kontejnerski tip podataka poput Matroske, AVI ili MP4 mora

podržavati širok spektar audio i video kodeka, također se treba brinuti i o

sinkroniziranoj reprodukciji audio streama i video streama. Osim toga, moderni

multimedijalni kontejner mora imati i podršku za titlove, poglavlja, premotavanje i

slične korisne akcije za multimedijalni sadržaj. Lakoća korištenja, što niži zahtjevi za

hardverskim resursima, brzina rada i slično, utječu na raširenost i prihvaćenost

određenog tipa podataka.

Pri razvoju, tvorci Matroske imaju na umu trenutne i potencijalne buduće

zahtjeve za kontejnerski tip podataka, kao što su:

Brzo „premotavanje” unutar datoteke

Mogućnost dijeljenja multimedije na poglavlja

Podržavanje metapodataka i tagova

Mogućnost odabira željenog streama

Modularna proširivost

Otpornost na oštećene datoteke

Mogućnost streama datoteke putem interneta i lokalnih mreža

Navedeni principi će detaljnije biti opisani kasnije u ovom radu.

Page 5: Format datoteka Matroska - lecto-player.lecto.org datoteka Matroska ... spektar tipova audio i video streamova te nudi široku mogućnost dodavanja raznih sadržaja u kontejner. Slika

3

Glavni cilj projekta Matroske je postati standardni kontejnerski tip podataka za

multimediju, nudeći alternativu otvorenog kôda u odnosu na popularne kontejnerske

tipove podataka poput AVI, MP4, MOV i sl. koji su u vlasništvu neke kompanije ili pod

patentom. Podržavanjem EBML-a (derivata jezika XML), Matroska otvara prostor za

brzo i lagano pružanje podrške budućim audio i video formatima bez da se narušava

mogućnost parsiranja starijih tipova podataka.

Jedan od ciljeva projekta Matroska je i ponuditi alat za izradu, uređivanje i

implementiranje Matroska datoteka. Također je cilj razviti biblioteke i alate kako bi se

softverskim developerima omogućila podrška za korištenje Matroske u aplikacijama.

U suradnji s proizvođačima hardvera, radi se na omogućavanju podrške za

Matrosku, a u današnje vrijeme hardver renomiranih proizvođača uglavnom nudi

podršku za Matrosku.

Matroska trenutno nudi četiri specificirane ekstenzije:

.mkv – služi za video datoteke, s mogućnošću dodavanja i zvučnog zapisa

.mka – služi za audio datoteke, i podržava širok spektar različitih formata

kompresije poput MP2, MP3, Vorbis, AAC, AC3, DTS ili PCM

.mk3d – služi za datoteke sa stereoskopskim 3D video zapisom

.mks – služi za titlove

Page 6: Format datoteka Matroska - lecto-player.lecto.org datoteka Matroska ... spektar tipova audio i video streamova te nudi široku mogućnost dodavanja raznih sadržaja u kontejner. Slika

4

3. Programi za upravljanje Matroska datotekama

Matroska za cilj ima, kao što je već rečeno, omogućiti zajednici da preko

programske podrške može lagano baratati s formatom. Zbog toga u ponudi postoji

širok spektar programa za različite radnje vezane za Matrosku, od kojih će biti

navedeni oni najpoznatiji i najkorišteniji.

3.1 Programi za reprodukciju

Teško je odlučiti se koji je od programa za reprodukciju najkorišteniji jer je

danas u ponudi široka lepeza medijskih playera koji podržavaju Matrosku. Oni

najpoznatiji su:

MediaPlayer Classic

VLC

GOM

foobar2000 – za razliku od ostalih, samo audio player

3.2 Programi za uređivanje

MKVToolNix – najpoznatiji program za izradu i uređivanje Matroska datoteka,

a dolazi i s grafičkim sučeljem

VOB2MKV – alat baziran na DirectShowu1 za konvertiranje VOB datoteka u

MKV

3.3 Filtri

CCCP (Combined Community Codec Pack) – u paketu se nalazi gotovo sve

potrebno za reprodukciju Matroska sadržaja na programima za reprodukciju

koji su bazirani na DirectShowu

Haali Media Splitter – najažuriraniji DirectShow filter koji uz Matrosku

podržava AVI i MP4 formate, ali nije otvorenog kôda

ffdshow – filter za općenitu uporabu baziran na FFMPEG biblioteci koji

podržava puno različitih metoda za kompresiju videa i audia

1 DirectShow – Microsoftov multimedijalni framework i API koji nudi developerima alate za izvođenje operacija nad medijskim zapisima i streamovima

Page 7: Format datoteka Matroska - lecto-player.lecto.org datoteka Matroska ... spektar tipova audio i video streamova te nudi široku mogućnost dodavanja raznih sadržaja u kontejner. Slika

5

4. Tehničke informacije o Matroski

U ovom poglavlju bit će dan prikaz tehničkih detalja o formatu Matroska,

primjerice informacije o strukturi datoteke Matroska formata, specifikacijama formata,

detaljno objašnje mogućnosti formata, informacije o metapodacima, licencama i sl.

4.1 Struktura datoteke Matroska formata

Slika 3.: Grafički prikazana struktura [1]

Slikom 3 je prikazana struktura datoteke Matroska. Bitno je napomenuti da

stvarna veličina koju pojedini elementi zauzimaju nije proporcionalna količini prostora

koje elementi zauzimaju na slici. Također, slika prikazuje pojednostavljeni dijagram

koji bi se dalje račvao na podstrukture. Te podstrukture će biti objašnjene u ovom

poglavlju, ali neće biti prikazane na slici. Krenimo redom:

Header ili zaglavlje sadrži informacije o verziji EBML-a korištenoj za kreiranje

datoteke i tipu podataka EBML-a. U konkretnom slučaju, radi se o Matroska datoteci.

Metaseek sekcija sadrži indeksirane informacije koje govore gdje se u datote-

ci nalaze ostale grupe poput staza, poglavlja, tagova, clustera itd. Metaseek sekcija

Page 8: Format datoteka Matroska - lecto-player.lecto.org datoteka Matroska ... spektar tipova audio i video streamova te nudi široku mogućnost dodavanja raznih sadržaja u kontejner. Slika

6

ne mora nužno postojati u datoteci, ali bez nje bi reprodukcijski uređaj trebao

pretražiti cijelu datoteku da pronađe informacije o drugim sekcijama. To je zato što

raspored sekcija nije fiksno određen pa je moguće da se jedna sekcija nalazi u

sredini druge sekcije ili su sekcije na pozicijama različitima nego što je to prikazano

na dijagramu.

Informacije o segmentima su osnovne informacije o cijeloj datoteci. Tu je

zapisano ime datoteke, jedinstveni identifikacijski broj i, ako je datoteka dio serije

datoteka, identifikacijski broj sljedeće datoteke.

Track ili staza je sekcija u kojoj su zapisane informacije o tome radi li se o

video zapisu, glazbenom zapisu ili titlovima. Potom slijede informacije o primjerice

rezoluciji videa ili brzini uzorkovanja audio zapisa. U ovoj sekciji su također zapisani

podaci o korištenim kodecima.

Chapters ili poglavlja predstavljaju listu svih poglavlja. U njima su definirane

točke za skokove u video i/ili audio zapisu.

Sekcija Clusters sadrži sve clustere podataka. U clusterima su pohranjeni sve

sličice za video i audio za svaku stazu.

Cueing data sadrži indeksirane podatke za svaku od traka. Ova sekcija je

slična sekciji Metaseek, ali ima specifičnu svrhu a to je skakanje na specifično

vrijeme tokom reprodukcije datoteke. Bez ove sekcije je skakanje također moguće,

ali je otežano jer reprodukcijski uređaj mora ručno tražiti točan vremenski trenutak za

skok.

Attachment sekcija služi za dodavanje sadržaja bilokojeg tipa Matroska

datoteci. Sadržaj može biti doslovno bilokakav – od slika, web-stranica, programa pa

čak i kodeka potrebnog za reprodukciju datoteke. Ova sekcija bi mogla služiti

primjerice za dodavanje pozadinske slike albuma za pjesmu i sl. namjene.

Sekcija s Tagovima sadrži informacije o primjerice, izvođačima pjesme, imenu

albuma, godini snimanja, žanru (za glazbeni zapis) ili primjerice o redatelju filma,

glumcima, filmskom studiju (za filmove).

Iako EBML dopušta da redoslijed (pojedinih) sekcija bude proizvoljan, za bržu

reprodukciju je poželjno držati se predefiniranih smjernica. Sekcija Header nužno

mora biti na početku pošto na taj način biblioteka zaključuje može li reproducirati

datoteku. Više o sadržaju zaglavlja i „magičnom broju” za Matroska datoteke biti će

rečeno u poglavlju o specifikacijama.

Page 9: Format datoteka Matroska - lecto-player.lecto.org datoteka Matroska ... spektar tipova audio i video streamova te nudi široku mogućnost dodavanja raznih sadržaja u kontejner. Slika

7

4.2 Specifikacije Matroska datoteke

4.2.1 Header sekcija

Svaka datoteka tipa Matroska mora započeti s headerom u kojem je na

početku zapisan „magični broj” [1A][45][DF][A3] u heksadekadskom obliku. „Magični

broj” je tipa master-element koji označava vršni element u EBML-u. Master-element

sadrži sve ostale elemente koji su okarakterizirani svojim identifikatorom, deskripto-

rom veličine tog elementa i samim podacima. Slijed bitova [42][86] označava početak

informacije o verziji EBML parsera korištenog za kreiranje datoteke, a nakon toga

slijede još neke dodatne informacije o EBML-u.

Sljedeći zanimljivi podatak je takozvani „DocType” koji označava tip podataka

u datoteci. On započinje slijedom bitova [42][82] a za matrosku je nakon tog slijeda

bitova zapisana riječ „matroska” tipa string. Moguće je da, ukoliko je tip podataka

WebM2, u DocType-u piše string „webm”. Slijedi verzija prevodioca korištenog za

kreiranje datoteke označena slijedom bitova [42][87] i informacija o najstarijoj verziji

prevodioca s kojim se može čitati datoteka označena slijedom bitova [42][85].

4.2.2 Globalna sekcija

Globalna sekcija nije definirana u poglavlju 4.1 zato što ona nije posebno

odjeljena struktura već se može nalaziti posvuda u datoteci.

Detekcija grešaka u Matroski se vrši CRC-32 algoritmom i njegova pozicija u

datoteci je označena prefiksom [BF]. Detekcija grešaka se računa za sav sadržaj

unutar master-elementa u kojem se nalazi. CRC algoritam koji se koristi je IEEE

CRC32 Little Endian.

Element naziva Void se koristi za poništavanje oštećenih podataka i

izbjegavanje neočekivanog ponašanja reproduciranjem oštećenih podataka. Ošteće-

ni sadržaj se odbacuje. Void započinje heksadekadskim slijedom [EC].

Signature ili potpisi služe za enkripciju elemenata u sadržaju. Njihov slijed

započinje s [1B][53][86][67], algoritmi koji se mogu koristiti su RSA ili eliptični, hash

algoritmi koji se mogu koristiti su SHA1-160 ili MD5.

2 Projekt WebM ili kolokvijalno WebM je tip podataka za video. Razvoj WebM-a je sponzoriran od strane Google-a, a WebM kontejner je baziran na Matroski

Page 10: Format datoteka Matroska - lecto-player.lecto.org datoteka Matroska ... spektar tipova audio i video streamova te nudi široku mogućnost dodavanja raznih sadržaja u kontejner. Slika

8

4.2.3 Segment information sekcija

Započinje heksadekadskim slijedom [18][53][80][67], master-element je tipa i

nulte (najviše) razine. Sadrži sve ostale elemente prve razine (i to samo prve razine).

Ovaj zapis (zvan Segment – refereiranje na Segment u toku ovog rada se odnosi na

ovaj segment) se pojavljuje samo jednom u Matroska datoteci.

Na prvoj razini u ovoj sekciji se nalazi element Info koji započinje s [15][49]

[A9][66] i sadrži razne općenite informacije i statistike o samoj datoteci. Primjer

podataka u Info elementu je dan slikom 4.

Slika 4.: Info element

Informacije koje se nalaze pod Info elementom su primjerice korištena biblioteka

EBML zapisa, korištena biblioteka za izradu Matroska datoteke, verzija programa

korištena za izradu datoteke, datum izrade datoteke, ime datoteke, načini enkodira-

nja video i audio zapisa, komentari i sl.

4.2.4 Metaseek sekcija

Ova sekcija započinje s [11][4D][9B][74] što označava SeekHead koja sadrži

početnu poziciju ostalih elemenata s prve razine. Uz SeekHead, tu se nalaze i

element imena Seek koji sadrži jedan seek entry na EBML element. Slijedi SeekID u

kojem je zapisan binarni identifikator tog elementa i pozicija elementa u segmentu

zapisana kao unsigned integer.

4.2.5 Cluster sekcija

Cluster sekcija započinje s elementom prve razine označenim [1F][43][B6][75].

Neki od elemenata unutar clustera su primjerice Timecode [E7] koji označava

Page 11: Format datoteka Matroska - lecto-player.lecto.org datoteka Matroska ... spektar tipova audio i video streamova te nudi široku mogućnost dodavanja raznih sadržaja u kontejner. Slika

9

apsolutni vremenski žig clustera. Jedan od važnijih elemenata je i Position [A7] koji

označava poziciju clustera u Segmentu. Pozicija je označena s 0 kad se radi o

prijenosu uživo. Podaci se nalaze u Block [A1] elementima uz vremenski žig koji

sadrži informacije o vremenu bloka u odnosu na Timecode.

4.2.6 Track sekcija

Track sekcija započinje heksadekadskim slijedom [16][54][AE][6B], dok je na

drugoj razini element TrackEntry s oznakom [AE] koji opisuje stazu sa svim pripad-

nim elementima. Track sekcija sadrži sve informacije o samom zapisu.

Jedna od informacije je sam broj staze, unikatan identifikator staze i tip staze

(0x01 je video, 0x02 je audio, 0x03 je kompleksan zapis, 0x10 je logo, 0x11 titlovi

itd.). U track sekciji su zapisane svakakve zastavice, primjerice koristi li se određena

staza. Postoji i zapis imena staze u formi čitljivoj ljudima te jezik staze u formi po

standardu Matroska jezika.

Slijede informacije o video zapisima: radi li se o interlaced videu ili je korišten

progressive scan ili je riječ o neodređenom zapisu. Pošto Matroska podržava 3D

video, postoji i StereoMode [53][B8] element u kojem se nalazi informacija kakav tip

stereoskopskog 3D videa je zapisan u stazi. U track sekciji se nalaze i informacije o

visini [BA] i širini [B0] video zapisa u pikselima, informacije o gami i informacije o

broju reproduciranih sličica u sekundi što je isključivo informativni zapis jer se ne

koristi primjerice za osvježavanje slike pri reprodukciji sadržaja.

Osim informacija o video zapisu, u track sekciji se nalazi i mnoštvo informacija

o audio zapisima. Od poznatijih informacija, tu su frekvencija uzorkovanja [B5],

frekvencija uzorkovanja na izlazu [78][B5] za audio zapis sa statičkim bitrate-om

(SBR). Postoje i informacije o broju audio kanala (primjerice mono, stereo, 5.1, 7.1

itd.) [9F] i broj bitova po uzorku (BitDepth [62][64]).

Za kraj valja spomenuti i da se u track sekciji nalaze informacije o enkodiranju,

kompresiji i enkriptiranju sadržaja.

4.2.7 Cueing sekcija

Ova sekcija bi trebala biti obavezna za sav sadržaj koji se ne prenosi izravno

jer sadrži sve informacije vezano za seek točke u Segmentu.

Page 12: Format datoteka Matroska - lecto-player.lecto.org datoteka Matroska ... spektar tipova audio i video streamova te nudi široku mogućnost dodavanja raznih sadržaja u kontejner. Slika

10

4.2.8 Attachment sekcija

Sadrži sve dodatke Matroska datoteci. Za svaki dodatak je definirano ime

[46][6E], opis [46][7E], jedinstveni identifikacijski broj [46][AE], sami podaci dodatka

[46][5C] i MIME tip3 [46][60].

4.2.9 Sekcija poglavlja i sekcija tagova

Sekcija poglavlja započinje nizom [10][43][A7][70], a sekcija tagova započinje

nizom [12][54][C3][67]. Imena sekcija su samopojašnjavajuća i mogu se koristiti i za

video i za audio sadržaj.

4.3 Licence

Nekoliko komponenata Matroske je pod licencama kako bi se maksimizirala

softverska i hardverska adaptacija formata.

Tako su primjerice LibEBML – pojednostavljena binarna ekstenzija XML jezika

za skladištenje i upravljanje podacima u hijerarhijskoj formi i s promjenjivim

veličinama polja – i LibMatroska – C++ biblioteka za parsiranje Matroska datoteka –

pod LGPL licencom.

LibEBML2 – druga verzija LibEBML pisana u C-u – i Core C – API niske

razine za programski jezik C – su komponente pod BSD licencom.

Valja napomenuti da su sve komponente dostupne besplatno sve dok se

korisnik pridržava svih uvjeta postavljenih u licenci.

3 MIME tip – identifikator za datotečne tipove i tipove sadržaja prenosivih internetom, definiranih IANA-om

Page 13: Format datoteka Matroska - lecto-player.lecto.org datoteka Matroska ... spektar tipova audio i video streamova te nudi široku mogućnost dodavanja raznih sadržaja u kontejner. Slika

11

5. Zaključak

Projekt Matroska označava novu eru razvoja softvera. Besplatan format

otvorenog kôda koji je ujedno fleksibilan i otvoren za promjene je stvar koju svaki

softverski developer želi, stoga nije čudo da je Matroska stekla toliku slavu i postavila

se kao realni konkurent postojećim kontejnerskim formatima poput AVI-a ili MP4.

Svakim danom se razvijajući, želi postati standardni kontejnerski format za multimedi-

ju; i video i audio sadržaj. S postojećim tehničkim mogućnostima i otvorenosti prema

novim tehnologijama, budućnost izgleda svjetla za Matrosku.

Page 14: Format datoteka Matroska - lecto-player.lecto.org datoteka Matroska ... spektar tipova audio i video streamova te nudi široku mogućnost dodavanja raznih sadržaja u kontejner. Slika

12

6. Literatura

[1] - https://www.matroska.org/ - glavna web-stranica projekta Matroska