Upload
nguyennga
View
221
Download
1
Embed Size (px)
Citation preview
SVEUČILIŠTE U ZAGREBU
FAKULTET ELEKTROTEHNIKE I RAČUNARSTVA
SEMINAR
Format datoteka Matroska
Krešimir Ričković
Zagreb, siječanj, 2017.
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
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
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.
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
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
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
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.
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
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
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.
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
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.
12
6. Literatura
[1] - https://www.matroska.org/ - glavna web-stranica projekta Matroska