Genesis - Knihovna pro zpracování a p°ehrávání videa

Transkript

Genesis - Knihovna pro zpracování a p°ehrávání videa
ƒeské vysoké u£ení technické v Praze
Fakulta elektrotechnická
Katedra po£. graky a interakce
Bakalá°ská práce
Genesis - Knihovna pro zpracování a p°ehrávání videa
Ale² Zavadský
Vedoucí práce: Ing. Sloup Jaroslav
Studijní program: Softwarové technologie a management, Bakalá°ský
Obor: Web a multimedia
11. £ervna 2009
IV
V
Pod¥kování
D¥kuji Ing. Jaroslavu Sloupovi za hodnotné rady a odborné vedení mé práce.
VI
VII
Prohlá²ení
Prohla²uji, ºe jsem práci vypracoval samostatn¥ a pouºil jsem pouze podklady uvedené
v p°iloºeném seznamu.
Nemám závaºný d·vod proti uºití tohoto ²kolního díla ve smyslu Ÿ60 Zákona £. 121/2000
Sb., o právu autorském, o právech souvisejících s právem autorským a o zm¥n¥ n¥kterých
zákon· (autorský zákon).
V Praze dne 11. 6. 2009
.............................................................
VIII
Abstract
The work deals with the proposal for a multimedia container video sequence to be used
in the Genesis project. Multimedia container is used for the video track and audio tracks,
which are further supplemented by multijazy£né subtitles. For the production of container
is created fullscreen players. Furthermore, the implementation part deals with the editor,
which is necessary for the creation of the proposed container. Conclusion The work deals
with possibilities of expansion and other uses.
Abstrakt
Práce pojednává o návrhu multimediálního kontejneru pro video sekvence, který bude
pouºit v projektu Genesis. Multimediální kontejner je vyuºit pro video stopy a audio
stopy, které jsou dále dopln¥ny o multijazy£né titulky. Pro p°ehrávání tohoto kontejneru
je vytvo°en fullscreen p°ehráva£. Implementa£ní £ást práce se zabývá editorem, který
je pot°ebný pro vytvo°ení navrºeného kontejneru. Záv¥r práce pojednává o moºnostech
roz²í°ení a dal²ího vyuºití.
IX
X
Obsah
1
2
Úvod
1
1.1
1.2
1
2
Analýza a návrh °e²ení
2.1
2.2
2.3
2.4
2.5
2.6
3
3.4
Video . . . . . . . . . . . . . . . . . . . . .
2.1.1 Poºadavky na video stopu . . . . . .
2.1.2 P°ehled kodek· a formát· pro video
2.1.3 Shrnutí . . . . . . . . . . . . . . . .
Zvuk . . . . . . . . . . . . . . . . . . . . . .
2.2.1 Poºadavky na audio stopu . . . . . .
2.2.2 P°ehled kodek· a formát· pro audio
2.2.3 Shrnutí . . . . . . . . . . . . . . . .
Kontejner . . . . . . . . . . . . . . . . . . .
2.3.1 Poºadavky na kontejner . . . . . . .
2.3.2 P°ehled existujících kontejner· . . .
Titulky . . . . . . . . . . . . . . . . . . . .
2.4.1 P°ehled existujících formát· . . . . .
P°ehráva£e . . . . . . . . . . . . . . . . . .
Návrh °e²ení . . . . . . . . . . . . . . . . . .
2.6.1 Formát souboru pro video . . . . . .
2.6.2 Editor . . . . . . . . . . . . . . . . .
2.6.3 P°ehráva£ . . . . . . . . . . . . . . .
Vývojové prost°edí . . . .
Pouºité knihovny . . . . .
Implementace - p°ehráva£
3.3.1 Vlákna . . . . . . .
3.3.2 Synchronizace . . .
Implementace - Editor . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
3
4
4
5
6
6
6
7
8
8
8
12
12
14
14
14
15
15
17
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Testování
4.1
4.2
5
3
Programátorská dokumentace
3.1
3.2
3.3
4
Základní pojmy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Cíle projektu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
17
17
18
19
20
22
23
Test editoru . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
Test p°ehráva£e . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
Záv¥r
25
XI
XII
OBSAH
Literatura
27
A Uºivatelská dokumentace
29
B Obsah CD
31
A.1 Instalace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
A.2 Vlastní pouºití . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
Seznam obrázk·
2.1
2.2
2.3
2.4
2.5
Výsledný graf testu kodek· . . . . . . . .
Struktura kontejneru ASF . . . . . . . . .
Struktura kontejneru Matroska . . . . . .
Navrh GUI programu Editor . . . . . . . .
Základní pr·b¥h zpracování videosekvence
3.1
3.2
3.3
Info o na£teném kontejneru a výb¥r stop . . . . . . . . . . . . . . . . . . . 18
Schéma vláken pro dekódování videa . . . . . . . . . . . . . . . . . . . . . 19
Gracké rozhraní Editoru . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
4.1
P°ehráva£ s výstupem pro titulky . . . . . . . . . . . . . . . . . . . . . . . 24
XIII
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
. 5
. 9
. 11
. 15
. 16
XIV
SEZNAM OBRÁZK—
Seznam tabulek
2.1
2.2
P°ehled kodek· pro video . . . . . . . . . . . . . . . . . . . . . . . . . . .
P°ehled kodek· pro zvuk . . . . . . . . . . . . . . . . . . . . . . . . . . . .
XV
5
7
XVI
SEZNAM TABULEK
Kapitola 1
Úvod
V úvodu bych cht¥l zmínit, ºe tato práce si bere za cíl vytvo°it p°ehráva£, který bude
pouºit v po£íta£ové h°e projektu Genesis. Bude pouºívat nejnov¥j²í obrazový kodek a
p°ehrávat video sekvence ve vysokém rozli²ení. Video sekvencí v po£íta£ových hrách není
tolik a pokud n¥jaké v pr·b¥hu hry jsou, tak kvalita nebývá nejlep²í. Dále u t¥chto video
sekvencí zpravidla chybí podpora titulk·. Dal²ím nedostatkem po£íta£ových her je fakt,
ºe video sekvence v po£íta£ových hrách mají pouze jednu zvukovou stopu (nej£ast¥jí v
p·vodním jazyce). Hrᣠtak není pln¥ vtaºen do d¥je a nechápe souvislosti ve videu.
Proto tento p°ehráva£ bude aplikovat titulky ve více jazycích ve vztahu k p·vodnímu
videu. Vedle volby jazyka titulk· bude mít hrᣠmoºnost zm¥nit i zvukovou stopu dle
vlastní volby jazyka. Pro vývojá°e po£íta£ové hry bude k dispozici Editor, který pom·ºe
s vytvo°ením video sekvence.
1.1
Základní pojmy
Zde si vysv¥tlíme n¥kolik základních pojm·, se kterými se m·ºeme setkat v oblastech
kódování videa a je d·leºité si je na za£átku této práce p°iblíºit.
Komprese dat
Kompresí dat ozna£ujeme ukládání nebo p°evod dat pro pot°eby zmen²ení datového
toku nebo zmen²ení datových zdroj· p°i ukládání. Snahou komprese dat je zmen²ení
velikosti datového souboru za ú£elem archivace, p°enosu dat po sí´i nebo také pro pot°eby
p°enosných p°ehráva£·.
Komprese dat se také vyuºívá v GSM síti, kdy mobilní telefon komprimuje hovor.
Základním principem kódování v kompresních algoritmech je odstran¥ní redundantních
(tzn. nadbyte£ných) informací ze souboru. Tuto kompresi dat lze rozd¥lit do dvou skupin:
Ztrátové a bezztrátová komprese dat jak popisuje tento zdroj [4].
Kodek
Tento výraz pochází ze slov "kodér a dekodér", respektiv¥ komprese a dekomprese
jak uvádí Wikipedie [2]. Kodek je hardwarové za°ízení nebo softwarový program, který
se zabývá p°em¥nou datových proud· (tzv. stream·) do zakódované formy, nej£ast¥ji
z d·vodu p°enosu, ukládání nebo ²ifrování dat. Nej£ast¥j²í vyuºití je p°i editaci multimediálních soubor· (lmy, hudba) a poskytování t¥chto soubor· v po£íta£ové síti a na
internetu.
1
2
KAPITOLA 1. ÚVOD
Kodeky m·ºeme rozd¥lit na ztrátové a bezztrátové. Výhoda prvního typu kodek·
je skute£nost, ºe se p°i jejich pouºití neztrácejí ºádné informace z videa, ale mají tu
nevýhodu, ºe dosahují pouze kompresního pom¥ru 1:2. Tento typ kodek· se spí²e hodí
pro dal²í zpracování videa. U ztrátových kodek· se n¥které informace z obrazu vypou²t¥jí,
protoºe lidské oko není tak dokonalé a tato ztráta nemá na výsledný dojem z obrazu aº
takový vliv. Tato metoda komprese dosahuje hodnot 1:4 - 1:100. Záleºí v²ak na zvoleném
kodeku a nastavení. Obecn¥ platí, ºe £ím v¥t²í komprese, tím v¥t²í zkreslení obrazu.
Kompresi nejvíce ovliv¬uje datový tok, který m·ºe být bu¤ konstantní, nebo prom¥nlivý.
Formát
Kodek se n¥kdy chybn¥ zam¥¬uje za formát. Formátem se myslí specikace, se kterou
pak pracuje kodek, který je naprogramován nebo implementován do hardwaru. P°íkladem
m·ºe být specikace MPEG Layer 3, pro kterou pak existují kodeky jako t°eba LAME,
Blade, Xing. K tomuto zam¥¬ování vede zejména shodný název formátu s kodekem.
Pokud kodek umí pracovat s n¥jakým formátem, tak by m¥l um¥t tento formát rozkódovat, i kdyº bylo k zakódování pouºito jiného kodeku. Toho se vyuºívá u dvou nejznám¥j²ích kodek· - DivX a Xvid, které pracují se stejným formátem MPEG-4 ASP.
Pokud je video zakódováno Xvid kodekem, lze ho p°ehrát i ve stolním p°ehráva£i s podporou DivX.
Multimediální kontejner
Multimediální kontejner (angl. containers ) je souborový, nebo také streamovací formát, jak je uvedeno ve Wikipedii [3]. Takto navrºený kontejner efektivn¥ ukládá datové
streamy do jednoho souboru a zaji²´uje jejich synchronizaci. Video ani audio stopy nekóduje ani jinak neupravuje. Kódování a dekodování zaji²´ují aº kodeky. Jeden soubor tak
m·ºe obsahovat video stopu, n¥kolik audio stop které jsou dopln¥ny o multijazy£né titulky. Mimo to m·ºou n¥které pokro£ilé kontejnery obsahovat informace o kapitolách a
meta-datech (tzv. tagy). Pro p°ehrátí takového kontejneru je pot°eba tzv. demuxer, nebo
tzv. splitter, které separují jednotlivé datové streamy do pot°ebných vstup· pro jejich
dekodování.
Kontejner sám o sob¥ datové stopy neumí dekódovat a n¥které kontejnery jsou vázané
na pouºití kodek·, nap°. MPEG obsahuje jen datové stopy zakódované MPEG kodeky,
ale existují i takové kontejnery, které podporují ²irokou ²kálu kodek·, jako nap°íklad
otev°ený formát Matroska. Více informací o tomto novém a zcela otev°eném formátu
lze najít na ociálních stránkách [5]. Základní £ásti kontejnerového formátu se nazývají
"chunks"(kousky), £ast¥ji ale pakety. Hlavním obsahem paket· jsou data nebo payloady.
Výhodou n¥kterých kontejner· je, ºe mají u kaºdého paketu hlavi£ku, která zaji²´uje
obnovu jiného paketu v p°ípad¥ po²kození framu nebo bitu.
1.2
Cíle projektu
Cílem práce je zanalyzovat dosavadní formáty a kodeky jak pro obraz tak i pro zvuk,
vybrat nejvhodn¥j²í a ty pouºít v souborovém formátu spolu s multijazy£nými titulky.
Práce se dále zabývá vytvo°ením dvou program·. Prvním programem je Editor, který je
pot°eba pro vytvo°ení jednoho souboru z n¥kolika samostatných video a audio stream·
a p°ípadné p°ipojení titulk·. Druhým programem je p°ehráva£, který p°ehraje navrºený
souborový formát ve fullscreenu a zobrazí titulky.
Kapitola 2
Analýza a návrh °e²ení
V této kapitole se seznámíme se sou£asným stavem v oblasti ukládání videa, audia a
jakým zp·sobem se dají uloºit titulky k videu. Vybereme nejlep²í formáty pro uloºení
videa a audia a také jak uloºit titulky. Dále se tato kapitola bude zabývat jakým zp·sobem se dají ukládat video a audio sekvence do jediného souboru, pop°ípad¥ zda se do
n¥j dají p°idat i dal²í datové soubory, jako nap°íklad titulky. Na konci najdeme návrh
°e²ení, které se bude zabývat otázku návrhu vlastního souborového formátu, pop°ípad¥
implementací stávající °e²ení.
2.1
Video
Kvalita videa závisí na n¥kolika parametrech ??. Prvním parametrem videa je datový tok
neboli bitrate. Je to mnoºství digitálních dat p°enesených za ur£itou £asovou jednotku.
Nej£ast¥ji se udává v Kilobitech za sekundu (Kbit/s). Obecn¥ lze °íci, ºe £ím vy²²í
hodnota, tím je obraz videa kvalitn¥j²í.
Dále u videa sledujeme, zda je prokládané nebo progresivní. Prokládané video znamená, ºe kaºdý snímek obsahuje jen polovinu °ádk· neº má celé video. T¥mito °ádky
jsou bu¤to sudé nebo liché, které trvají polovinu doby celého snímku. Kdeºto progresivní
video není rozd¥leno na p·lsnímky, ale jsou zobrazeny celé. Nevýhodou takového videa
je, ºe bývá technicky náro£n¥j²í, ale pro lidské oko p°íjemn¥j²í.
Frame rate je dal²ím parametrem videa a udává po£et zobrazených snímk· za jednotku £asu (frames per second, fps). Standardními hodnotami jsou 25fps pro PAL1 nebo
29,97fps pro NTSC2 . Pro dosaºení iluze plynulého pohybu je t°eba zobrazit alespo¬ 10
snímk· za sekundu. V po£íta£ových hrách je pot°eba 30 aº 60 snímk· za sekundu, jinak
obraz p·sobí trhaným dojmem.
Dal²ími parametry videa jsou rozli²ení a pom¥r stran. Rozli²ení se udává v pixelech a
v poslední dob¥ se nej£ast¥ji uºívá nový formát HDTV3 . Pom¥r stran u tohoto formátu
PAL (phase alternating line) je jeden ze standard· kódování barevného signálu pro televizní vysílání.
NTSC (National Television System(s) Committee) je standard kódování analogového televizního
signálu, který vznikl v USA.
3
HDTV (High-denition television) ozna£uje formát vysílání televizního signálu, který má rozli²ení
videa 1280x720, respektiv¥ 1920x1080
1
2
3
4
KAPITOLA 2. ANALÝZA A NÁVRH E’ENÍ
je 16:9 neboli 1,778:1. D°íve se pouºíval pom¥r stran 4:3. Tento údaj vypovídá o pom¥ru
mezi vodorovnou a svislou stranou videa.
Barevnou reprezentaci videa popisuje barevný model. Barva je sm¥sí sv¥tla a r·zných
vlnových délek a r·zné barevné modely se snaºí napodobit barvu co nejv¥rn¥ji. P°íkladem
barevných model· je RGB4 , CMYK5 nebo také YUV6
2.1.1
Poºadavky na video stopu
Obsahem videa pro °e²ený p°ehráva£ je scéna z po£íta£ové hry, která m·ºe mít rychlé
i pomalé scény. V dne²ní dob¥ se p°edpokládá rozli²ení videa 1920x1080, tedy ve Full
HD (High Denition). Pro video v takovém rozli²ení je pot°eba vybrat kodek, který bude
podporovat takové rozli²ení, ale také nebude tolik náro£né jeho p°ehrávání na doporu£ení
konguraci PC.
2.1.2
P°ehled kodek· a formát· pro video
V následujícím textu je popsáno n¥kolik známých formát· a kodek· pro video [2], které
by bylo vhodné pouºít pro uloºení videa. MPEG-1 je dnes uº nepouºívaný, MPEG-2
je dnes nejroz²í°en¥j²í, ale vhodný jen pro uloºení videa na DVD. My se zam¥°íme na
klasický MPEG-4 (coº je DivX nebo Xvid) a nastupující MPEG-4 AVC, neboli téº H.264,
který je nástupcem v²ech vý²e zmi¬ovaných formát·.
M¥li bychom vybrat takový kodek £i formát, který vyhovuje poºadavk·m na p°ehrávané video. Komprese by m¥la být nastavena tak, aby m¥la minimální ztrátu v kvalit¥
obrazu a musí zvládat vysoké rozli²ení 1920x1080. Komprese by m¥la mít minimální
náro£nost na výkon po£íta£e za v²ech uvedených podmínek, protoºe není vhodné pouºít
kodek (dekodér), který vytíºí celý výkon po£íta£e a video tak m·ºe mít místy trhaný
obraz £i zvuk p°i scénách s vy²²ím datovým tokem.
DivX
DivX je asi nejznám¥j²í kodek od spole£nosti DivX, Inc., který vyniká velkou kompresí p°i zachování dobré obrazové kvality. První DivX s ozna£ením DivX ;-) 3.11 se
objevil jiº v roce 1998 jako pirátská verze MPEG-4 Part 2 od spole£nosti Microsoft. Pro
kódování obrazu DivX pouºívá ztrátovou kompresi a implementuje MPEG-4/ASP. DivX
byl komer£ní projekt a to se n¥kterým vývojá°·m nelíbilo a odd¥lili se od projektu a
zaloºili sv·j, který pojmenovali Xvid. DivX v dne²ní dob¥ není jen kodek ale balík aplikací pro práci s videem. Zdarma je k dispozici pouze DivX kodek a player. Díky jeho
popularit¥ existuje spousta DVD p°ehráva£· s DivX podporou.
Xvid (d°íve XviD)
Xvid je konkurentem kodeku DivX, ale narozdíl od n¥j, je tento kodek ²í°en i se
zdrojovými kódy pod licencí GPL. Projekt byl zaloºen na OpenDivXu, který skon£il v
roce 2001. Video zakódované tímto kodekem je kompatibilní s MPEG-4 Advenced Simple
4
RGB (£ervená-zelená-modrá) je aditivní zp·sob míchání barev pouºívaný ve v²ech monitorech a
projektorech
5
CMYK (Cyan Magenta Yellow blacK) je barevný model zaloºený na subtraktivním míchání barev,
která se pouºívá p°edev²ím u reproduk£ních za°ízení
6
YUV je barevný model pouºívaný v televizním vysílání v norm¥ PAL i HDTV, (Y udává jas, U a
V jsou barevné sloºky).
5
2.1. VIDEO
název kodeku
DivX
verze
max. rozli²ení
zajímavost
7
1920x1080x30fps
Xvid
1.2.1
1920x1080x30fps
WMV9
9
1920x1080x30fps
x.264
5.1
4096x2048x30fps
podporuje kompresi H.264 a kontejner
MKV
open-source, pouºívá kompresi MPEG4 ASP
znám pod jménem VC-1, sou£ástí Windows, standard pro Blu-ray videa
formát je roz²í°ením p·vodního formátu MPEG-4 ASP
Tabulka 2.1: P°ehled kodek· pro video
Obrázek 2.1: Výsledný graf testu kodek·
(více bod· znamená celkov¥ lep²í kvalitu) p°evzato z [7]
Prole a lze ho dekodovat v²emi podobn¥ zaloºenými dekodéry na knihovn¥ libavcodec.
Oproti DivX lze tento kodek vyuºívat na r·zných opera£ních systémech a platformách.
WMV9
Kodek WMV9 vytvo°ený spole£ností Microsoft je znám spí²e pod jménem VC-1.
Vedle kodeku H.264 je i tento kodek standardem pro uchování videa na Blu-ray. Verze 7
byla zaloºena na nestandardní MPEG-4 part XX od Microsoftu, ale verze 9 se odli²uje od
MPEG-4 a jde svojí cestou. Tento kodek m·ºe být jak v kontejneru AVI, tak v Matrosce
ale i v ASF. Hojn¥ se pouºívá pro ²í°ení videa p°es Internet.
x264
Zcela od základ· vytvo°ený nový formát, zaloºený na standardu MPEG-4 AVC
(H.264), známém také jako MPEG-4 part 10, který nenavazuje na ºádný projekt, jako
tomu bylo nap°íklad u Xvidu. Tento formát dosahuje skv¥lých výsledk· p°i kódování
videí, lm· atp. I kdyº je kodek pom¥rn¥ mladý, zaºívá rychlý vývoj a je hojn¥ vyuºíván
na Internetu. Formát je ²í°en pod licencí GNU GPL a vyuºívá jej spousta projekt·, jako
je FFMPEG, VLC player a dal²í. Vlastnostmi tohoto nového formátu jsou nap°íklad
CAVLC kódování, paralelní kódování více £ástí, mnohonásobné referen£ní snímky a jiné.
I kdyº je vývoj zatím v po£átcích, dosahuje mnohdy lep²ích výsledk· neº komer£ní kodek
DivX.
2.1.3
Shrnutí
Výb¥r vhodného formátu pro video není v·bec jednoduché. My se zam¥°íme na takové,
které mají ²irokou podporu a dále nabízí otev°ené zdrojové kódy, protoºe by nem¥l
být takový problém s jejich implementací v p°ipravovaném p°ehráva£i. Testovat kvalitu
jednotlivých kodek· je dosti obtíºné. Záleºí dosti na subjektivním pocitu výsledné kvality
videa. P°i výb¥ru vhodného kodeku vycházíme z testu, který je uveden na tomto webu
6
KAPITOLA 2. ANALÝZA A NÁVRH E’ENÍ
[7]. Co se tý£e obrazové kvality u v²ech vý²e p°edstavených kodek· a formát· si nejlépe
vede formát x.264, jak je patrné z grafu na obrázku 2.1. Bohuºel ºádný kodek nemá
integrovanou podporu titulk·, tudíº je nutné pouºívat multimediální kontejnery.
2.2
Zvuk
Zvuk je nedílnou sou£ástí videa. Základní reprezentace audio signálu v digitální podob¥
se jmenuje pulzní kódová modulace, zkratka PCM (pulse code modulation). Principem
je pravidelné ode£ítání hodnoty signálu pomocí A/D p°evodníku a následné její ukládání
do binární podoby.
Prvním parametrem u zvuku je vzorkovací frekvence, v praxi se nej£ast¥ji pouºívá
hodnota 44,1 kHz. Toto £íslo vychází z rozsahu který poºadujeme, ten je 20 Hz aº 20kHz,
zajímá nás ta vy²²í hodnota a vzorkovat musíme minimáln¥ dvojnásobnou frekvencí,
tedy 40kHz. Také se pouºivá vzorkovací frekvence 48 kHz, která vychází z násobku 8
kHz pouºívaných v telekomunikacích.
D·leºitým parametrem pro uloºení komprimovaného zvuku je bitrate, stejn¥ tak jako
u videa. U zvuku se rozli²ují CBR (constant bitrate), ABR (average bitrate) a VBR
(variable bitrate). CBR je datový konstatní tok, typický pro PCM. ABR se m·ºe v
pr·b¥hu okna m¥nit, ale jinak v ur£itém £asovém okn¥ je konstatní a VBR je datový
tok, který se m¥ní a denují se u n¥j jen limity a maximum celkového pr·m¥ru.
2.2.1
Poºadavky na audio stopu
Videa v po£íta£ové h°e zpravidla doprovází zvuk, který bohuºel u her nebývá ve více
jazykových mutacích. Obsahem zvuku bývá hudba s mluveným slovem. Pokud budeme
chtít dosáhnout prostorového zvuku, musí se doplnit dal²í zvukové kanály a bohuºel ne
kaºdý formát má tuto podporu. U prostorového zvuku naroste celkový objem dat o po£et
kanál·. V následující podkapitole jsou vypsány n¥které nejpouºívan¥j²í kodeky a formáty
pro komprimaci zvuku.
Vybraný kodek by m¥l poskytovat co nejlep²í kvalitu za pouºití co moºná nejmen²ího
datového toku, protoºe £ím men²í datový tok, tím v¥t²í datová úspora, ale nem¥l by být
niº²í neº je kvalita blízká CD, tedy NCDQ, který platí pro stereo zvuk. Dále je moºné
pouºít variabilní bitrate.
2.2.2
P°ehled kodek· a formát· pro audio
Zde jsou popsány kodeky a formáty, které jsou ur£ené pro zvuk.
MP3
MP3 je zkrácený výraz pro kodek MPEG-1 Audio Layer 3. Asi nejznám¥j²í formát,
který vyvinula v roce 1991 spole£nost Fraunhofer Society a vychází z formátu MP2.
Kodek vyuºívá psychoakustického modelu, aby sníºil velikost datového toku aº 11x oproti
souboru na CD). Spolu s audio stopou jsou uloºeny informace o autorovi, albu atd. Jedná
se o metadata ve formátu ID3. Datové toky se pohybují od 8 kbit/s aº do 320 kbit/s.
Pro kvalitu ozna£ovanou jako NCDQ je pot°eba datový tok 128 kbit/s.
7
2.2. ZVUK
název kodeku
MP3
AAC
Vorbis
WMA
Dolby Digital
bitrate pro NCDQ (v kbit/s)
Podpora 5.1
otev°ený formát
128
96
112
64
neuvedeno
NE
ANO
ANO
NE
ANO
NE
ANO (FAAD2)
ANO
NE
NE
Tabulka 2.2: P°ehled kodek· pro zvuk
AAC
Vylep²ený formát kodeku MP3, roz²í°en o vzorkovací frekvenci aº na 96 KHz. Moºnosti
pouºít aº 48 kanál· a 15 nízkofrekven£ních kanál· pro subwoofer (LFE). NCDQ je
stanovena pro 96 kbit/s a pro 5.1 kanál· na 320 kbit/s. AAC je jeden z nejpokro£ilej²ích kodek· a má velmi dobré vyhlídky do budoucna. Pro tento kodek existuje mnoho
enkodér·, jako t°eba FAAC, Nero Digital nebo profesionální enkodér od rmy Apple.
Bohuºel softwarová podpora není nejlep²í.
Vorbis
Vorbis je otev°ený formát pro jakékoliv pouºítí, coº by mohla být výhoda. Pouºívá
variabilní bitrate a také má podporu pro vícekanálové kódování s moºností provázaností
kanál·, které se ozna£uje jako coupling a redukuje mnoºství komprimovaných dat. U
komprese se nenastavuje bitrate ale pouze kvalita v rozsahu 0-1, kde 0,3 odpovídá NCDQ.
Výhodou je skute£nost, ºe p°i p°ekódování na niº²í datový tok se data nemusí dekomprimovat. NCDQ je v¥t²inou udáváno jako 112 kbit/s a tím p°ekonává MP3 a kvalitou je
stejný jako AAC.
Windows Media Audio (WMA)
Kodek vyvinutý rmou Microsoft. Pouºívá stejné metody jako MP3, AAC a Vorbis.
Maximální vzorkovací frekvence je 48 kHz. Microsoft uvádí, ºe u WMA dosáhne NCDQ
jiº p°i 64 kbit/s, reálný datový tok je kolem 112 kbit/s s o n¥co lep²í kvalitou neº u
MP3. Od verze 9.1 °adí tento kodek k t¥m nejlep²ím (Vorbis, AAC) ale existuje pro
n¥j pouze jeden enkodér a ten je integrovaný ve Windows Media Playeru (WMP). Je o
dost rychlej²í neº Vorbis ale má pouze nastavení Variabilního Bitratu a to jen n¥které
pevn¥ danné hodnoty. Pro star²í verzi 8 a níºe existuje implementace v rámci FFmpeg
projektu. Bohuºel pro tento kodek neexistuje otev°ená specikace, tudíº nelze pouºít pro
enkódování v jiných aplikací neº je WMP.
Dolby Digital
P·vodn¥ ozna£ován jako AC-3 byl vyvinutý rmou Dolby Laboratories. Navazuje na
p°edch·dce Dolby Stereo a Dolby Surround. Tento kodek má podoru sterea a 5.1 reºimu.
Pouºívá svázání více kanál· podobné joint-stereu. P·vodní pouºití tohoto formátu byl v
kinech, následn¥ na²el vyuºití pro kódování zvuku na discích DVD. Soubor zakódovaný
v tomto formátu poznáme podle p°ípony .ac3. Tento formát má podporu v kontejnerech
AVI, OGM nebo MKV. Konkurencí tomuto formátu je Sony Dynamic Digital Sound a
Digital Theatre System.
2.2.3
Shrnutí
P°i výsledné komprimaci je vºdy hlavní otázkou volba formátu. Ta záleºí na tom, kde,
kdo a kdy chce zvuk vyuºívat. Volba pro video je závislá na poºadavku kompatibility.
8
KAPITOLA 2. ANALÝZA A NÁVRH E’ENÍ
Na DVD se ve v¥t²í mí°e pouºívá Dolby Digital. Kontejnery mají obecn¥ ²irokou podoru
zvukových formát·, takºe u Matrosky m·ºe být zvuk ve formátu Vorbis, AAC nebo
MP3.
Kdyº je zvolený formát, tak dal²í volba je na konguraci enkodéru. Nejzásadn¥j²ím
parametrem je bitrate nebo-li datový tok, který by nem¥l být niº²í, neº je kvalita blízká
CD, tedy NCDQ, pro stereo zvuk. U vícekanálového zvuku samoz°ejm¥ nárok na datový
tok roste. Dále je ur£it¥ dobré zvolit variabilní datový tok, který maximalizuje kvalitu
zvuku p°i snaze o co nejmen²í mnoºství p°eneseních dat.
2.3
Kontejner
Multimediální kontejner je formát uloºení n¥kolika proud· multimediálních dat (stop,
stream·) do jednoho souboru (obecn¥ datového toku). V jednom soubor· m·ºeme tak
mít nap°íklad uloºenou jednu video stopu, n¥kolik zvukových stop v r·zných jazycích a
n¥kolik multijazy£ných titulk· a je zaji²t¥na jejich synchronizace. Více v úvodní kapitole.
2.3.1
Poºadavky na kontejner
Multimediální kontejner pro navrhovaný p°ehráva£ by m¥l spl¬ovat n¥kolik poºadavk·.
První z nich je, ºe musí mít podporu vybraných formát· videa, audia a titulk·, spojit
je do jediného datového souboru. Nem¥la by ani být omezena moºnost p°idat více jak
jednu stopu audia a videa. Titulk· musí být také více neº jen jedny.
Co asi nebude spl¬ovat ºádný z kontejner· je moºnost uzav°ení pro p°ehrání jen
v jednom p°ehráva£i, který si pro tento kontejner vytvo°íme. Tato vlastnost by byla
pot°eba proto, ºe videa, která budou obsaºena v kontejneru, budou sou£ástí po£íta£ové
hry a není vhodné, aby byly p°ístupné z jiného prost°edí, £i p°ehráva£e, neº je samotná
hra. Na druhou stranu by bylo ale velmi náro£né vytvo°it si vlastní kontejner, který bude
tak propracovaný jako jiº existující navrºené kontejnery.
2.3.2
P°ehled existujících kontejner·
V následujících odstavcích si p°edstavíme nejznám¥j²í kontejnery pro spole£né uchování
videa a zvuku a p°edstavíme si i ty, které mohou obsahovat i n¥co víc neº jen tyto dva
druhy dat.
AVI
Nejstar²í formát rmy Microsoft, pouºil ho jiº ve Windows 3.11. Poslední verze 2.0
má neomezenou velikost souboru, ale FAT32 omezuje maximální velikost na 4GB, na
NTFS je (tém¥°) neomezeno (velikost disku). Na za£átku souboru je hlavi£ka, která obsahuje informace o videu (framerate, rozli²ení, kodek,...) a o zvuku (samplovací frekvence,
kvantizace, kodek,...) Na konci je tabulka, ve které jsou informace o po°adovém £ísle jednotlivých snímk· videa resp. audio paketu a jejich pozici v souboru. Soubor nelze p°ehrát,
pokud není celý k dispozici (nelze streamovat po internetu) ƒas snímku není ur£en absolutn¥, ale lze ho spo£ítat pouze z framerate videa a jeho indexu. Do tohoto kontejneru
není moºné uloºit titulky ani jiné informace (kapitoly). AVI je zvlá²tní p°ípad formátu
RIFF (Resource Interchange File Format) rozd¥luje data souboru do blok·.
9
2.3. KONTEJNER
Obrázek 2.2: Struktura kontejneru ASF
MPEG stream
MPEG je ISO/IEC standard, vyuºití najde p°edev²ím pro MPEG video a zvuk.
MPEG umoºnuje jak lokální uloºení souboru na disku, tak streamování po internetu
Advanced Systems Format (ASF) Tento formát má p°ípony .ASF, pozd¥ji p°ibylo
i .WMV a .WMA. Ur£en p°edev²ím pro pouºití MPEG-4 a Windows Media Video a Audio formát·. Nejv¥t²í vyuºití najde pro streamování po internetu. Nevýhodou je jeho
uzav°enost pouze na kodeky, které Microsoft dovolí. Struktura ASF v aktuální verzi
1.2 je zaloºena na objektech, který je základní sloºkou, je identikován pomocí GUI.
Struktura tohoto formátu je na obrázku 2.2.
• File Properties Object - základní statistika o souboru jako délka, velikost, datum
vytvo°ení, jedine£né ID souboru atd.
• Stream Properties Object - je zde povinn¥ pro kaºdý stream v souboru a obsahuje
informace typu streamu a formátu
• Header Extension Object - je zde pro dal²í moºné roz²í°ení specikace
10
KAPITOLA 2. ANALÝZA A NÁVRH E’ENÍ
• Codec List Object - zobrazitelné informace o kodecích, které jsou pouºity pro
p°ehrání souboru
• Script Command Object - seznam p°íkaz· synchronizovaných na ur£itý £as, obsahuje bu¤ URL adresu nebo soubor
• Marker Object - jde o £asové zna£ky pro rychlý p°esun v souboru, obdoba kapitol
u DVD
• Bitrate Mutual Exclusion Object - identikuje streamy, které jsou v·£i sob¥ vylu£ující, nap°. video stopa v ur£itém £ase nem·ºe být p°ehrávaná zárove¬ s jinou,
umoº¬uje uºivateli vybrat nap°íklad video s r·zným bitrate apod.
• Error Correction Object - identikuje metodu korekce chyb
• Content Description Object - popis obsahu jako autor, titul, copyright, apod.,
obdoba ID3 tagu u MP3
• Extended Content Description Object - roz²í°ení Content Description o dal²í informace
• Stream Bitrate Properties Object - informace o pr·m¥rném bitrate kaºdého streamu
• Content Branding Object - je moºné p°ipojit zna£ku/banner, který se bude zobrazovat p°i pouºití souboru, lze i pomocí URL
R
• Content Encryption Object - informace o pouºitém DRM (Microsoft
Digital
Rights Manager)
• Extended Content Encryption Object - moºnost chránit soubor pomocí Windows
Media Rights Manager 7
• Digital Signature Object - podpis, který chrání informace v hlavi£ce
• Padding Object - umoº¬uje zv¥t²it velikost hlavi£ky o libovolnou velikost, nenese
ºádná uºite£ná data
Matro²ka
Matroska (MKV) je otev°ený formát, vycházející z jazyka XML, resp. jeho binární
verze Extensible Binary Meta Language (EBML). MKV kontejner podporuje nejen videa
a audia, ale i pro titulky, menu, kapitoly, tituly, lze p°iloºit i soubory. P°ípona video
soubor· je .MKV, u zvukových .MKA a u samotných titulk· .MKS. Kontejneru bohuºel chybí ²ir²í podpora tohoto kontejneru, zejména pro editaci. Video kódováno nap°.:
MPEG-4 ASP nebo MPEG-4 AVC. Audio je kódováno nej£ast¥ji v open-source Vorbis,
v komer£ním MPEG-4 AAC ale i AC3, MP3 a DTS. Podle obsahu se pouºívá i rozdílná
p°ípona, u video soubor· je to .MKV, u zvukových .MKA a u samotných titulk· .MKS.
Vnit°ní uspo°ádání tohoto formátu je zobrazeno na obrázku 2.3
Na za£átku je hlavi£ka, která identikuje typ EBML souboru a verzi, následuje segkterý tvo°í datovou funk£ní £ást, typicky je jen jeden, ale m·ºe jich být i více.
Segment se dále d¥lí na men²í £ásti (sekce), kaºdá obsahuje jiný typ informace. Metaseek
udává pozici t¥chto sekcí uvnit° segmentu. Segment Information obsahuje základní informace o souboru jako název titulu, dále unikátní ID a pokud je sou£ástí více soubor·,
ment(y),
11
2.3. KONTEJNER
Obrázek 2.3: Struktura kontejneru Matroska
12
KAPITOLA 2. ANALÝZA A NÁVRH E’ENÍ
tak i ID dal²ího souboru. Sekce Tracks je seznam stop, tedy video, audio, titulky a také
informace o nich, Chapters pak seznam kapitol a jejich umíst¥ní. V sekci Clusters jsou
jiº samotná data - video snímky, zvukové pakety atd. Jejich pozice je vºdy jako £as,
coº zabra¬uje rozsynchronizování v²ech stop. Pro urychlení hledání pozice v souboru je
zde je²t¥ sekce Cueing Data, která slouºí podobn¥ jako index u AVI souboru, není v²ak
nezbytná, pouze urychluje vyhledávání. Do sekce Attachment lze p°iloºit jakýkoliv soubor. Poslední sekcí je Tagging, která nese související informace k titulu nebo jednotlivým
stopám jako autor, ú£inkující a podobn¥, je to obdoba ID3 tagu u MP3.
2.4
Titulky
Formát pro titulky musí spl¬ovat poºadavky, jako je jednoduché formátování písma (
tu£né, kurzíva, atp.), pozicování jednotlivých £ástí titulk· na monitoru. V praxi se nej£ast¥ji vyskytují dva druhy formát·:
ƒasový formát
Je zaloºen na £asové informaci titulku (p°íklad formát SubRip). Titulky jsou zobrazovány a schovávány v konkrétním £ase. Výhoda tohoto formátu je, ºe není t°eba se
ohlíºet na frekvenci lmu (PAL, NTSC).
Snímkový formát
Je zaloºen na snímkové informaci titulk· (MicroDVD). Titulky jsou zobrazovány v
závislosti na po£tu ub¥hlých snímk·. Nevýhoda tohoto formátu je, ºe pro stejný lm ve
dvou verzích (PAL, NTSC) musí existovat dvoje titulky. Po£et snímk· je totiº jiný pro
PAL a jiný pro NTSC.
2.4.1
P°ehled existujících formát·
MicroDVD
• P°ípona .sub nebo .txt
Ukázka titulk· 12301302Pellentesque id turpis congue nisl volutpat commodo 13401422Lorem
ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse non. 14471512Nam imperdiet turpis sed enim. Donec posuere suscipit diam.
SubRIP
• P°ípona .srt
Ukázka titulk·
1
00:00:21,960 --> 00:00:24,760
Pellentesque id turpis congue nisl volutpat commodo
2
00:00:25,760 --> 00:00:30,160
2.4. TITULKY
13
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
Suspendisse non.
3
00:00:32,160 --> 00:00:35,960
Nam imperdiet turpis sed enim. Donec posuere suscipit diam.
Sami
• P°ípona .sami
• Podpora ve Windows Media Playeru
• HTML- formát titulk·
Ukázka titulk·
<SAMI>
<HEAD>
<TITLE>Whatever</TITLE>
<STYLE TYPE="text/css">
<!-P {margin-left:8pt; margin-right:8pt; margin-bottom:2pt; margin-top:2pt;
text-align:center; font-size:20pt; font-family:egal, sans-serif;
font-weight:normal; color:white;}
.KRCC {Name:Korean; lang:kr-KR; SAMIType:CC;}
#STDPrn {Name:Standard Print;}
#LargePrn {Name:Large Print; font-size:24pt;}
#SmallPrn {Name:Small Print; font-size:16pt;}
-->
<SYNC Start=30886><P Class=KRCC>
The Age of Gods was closing.
<SYNC Start=34037><P Class=KRCC>
The heavens shook as the armies of Falis,
SubViewer 2.0
• p°ípona .sub
Ukázka titulk·
[INFORMATION]
[TITLE]xxxxxxxxxx
[AUTHOR]xxxxxxxxxx
[SOURCE]xxxxxxxxxx
[PRG]
[FILEPATH]
[DELAY]0
14
KAPITOLA 2. ANALÝZA A NÁVRH E’ENÍ
[CD TRACK]0
[COMMENT]
[END INFORMATION]
[SUBTITLE]
[COLF]&H00FFFF,[STYLE]no,[SIZE]12,[FONT]Courier New
00:00:07.00,00:00:11.91
THERE IS A PLACE ON EARTH WHERE IT[br]IS STILL THE MORNING OF LIFE...
00:00:12.48,00:00:15.17
AND THE GREAT HERDS RUN FREE.[br]SO WHAT?!
2.5
P°ehráva£e
V sou£asné dob¥ existuje n¥kolik program·, které se zabývají p°ehráváním video sekvencí.
Tyto programy mají ²irokou podporu formátu, od t¥ch nejstar²ích aº po ty nejnov¥j²í.
Zam¥°ují se spí²e na v²eobecné pouºití, zejména pro p°ehrávání lm·, video klip·, pop°ípad¥ hudebních soubor·. Jedni z nejuniverzáln¥j²ích p°ehráva£· je Media Player Classic
nebo t°eba VLC Media Player.
P°ehráva£, kterým se zabývá tato práce, se nemá snahu vyrovnat t¥mto p°ehráva£·m,
ale implementovat n¥kolik funkcí, které budou pot°eba pro jeho vyuºití v projektu Genesis a následn¥ v po£íta£ové h°e.
2.6
Návrh °e²ení
Tato kapitola pojednává o návrhu °e²ení souborového formátu pro video sekvence, který
vychází z p°edchozí studie. Zabývat se také budeme otázkou, jak bude vypadat program
pro vytvá°ení t¥chto video sekvencí a následn¥ jak a v £em je p°ehrávat.
2.6.1
Formát souboru pro video
V souborovém formátu bude zapot°ebí nejmén¥ jedna video stopa, více jak jedna audio
stopa s n¥kolika jazykovými verzemi titulk·. D·vodem pro£ do budoucna zavést více
video stop je pro vyuºití stereoskopie nebo pro systém CAVE, kde m·ºe být jeden obraz
zobrazen na n projektorech. To znamená, ºe je pot°eba n*2 video stream·, pro kaºdý
projektor je zapot°ebí dvou video stream·.
Nejvhodn¥j²í kodek pro kompresi videa je formát x264, jak je patrné z vý²e uvedeného
rozboru. Je to standart pro kompresi videa ekvivalentní s MPEG-4 Part 10 (AVC Advanced Video Coding). Tento kodek obsahuje celou °adu nových funkcí, které umoº¬ují
komprimovat video mnohem ú£inn¥ji neº star²í normy. Zvládá video ve vysokém rozli²ení aº 4096x2048x30fps nebo 1920x1080x120fps. Kodek je navrºen tak, aby spl¬oval
poºadavky pro r·zné pot°eby. Má mnoho prol· a úrovní, které umoº¬uji r·zné úrovn¥
komprese, kvality a zatíºení CPU, tudíº se hodí jak pro p°enosné za°ízení, které mají
nízký výkon, tak pro po£íta£e, kde je pot°eba vysoká kvalita a efektivita komprese.
Zvuk by bylo nejlep²í komprimovat do otev°eného formátu Vorbis a nebo do AAC,
který je bohuºel komer£ní a nebude tak velká podpora pro jeho implementaci. Dosta£ující
by byl kodek MP3, který je zatím jeden z nejroz²í°en¥j²í formát· pro zvuk.
2.6. NÁVRH E’ENÍ
15
Obrázek 2.4: Navrh GUI programu Editor
Titulky se budou ukládat ve formátu SubRIP s koncovkou .srt. Jde o nejroz²í°en¥j²í
formát a také je podporován v kontejneru Matroska. Titulky uloºené v tomto formátu
jsou p°ehledné a jednodu²e editovatelné. U jednotlivých titulk· je pouze za£átek a
konec zobrazení a m·ºou být dopln¥ny o html zna£ky pro formátování písma (nap°.:
<i>kurzíva </i>)
Poslední volbou v návrhu souboru je kontejner, který bude obsahovat v²echny streamy.
Navrh vlastního kontejneru není z hlediska efektivity výhodný a navíc by se nevyrovnal
kvalit¥ jiº hotových kontejner·. Z p°edstavených kontejner· nejvíc vyhovuje Matroska,
který spl¬uje v²echny poºadavky na video, audio i titulky. Je to otev°ený formát ²í°ený
pod licencí GNU L-GPL. Bohuºel je tento formát pom¥rn¥ nový a jeho podpora není
tak ²iroká jako nap°íklad u AVI kontejneru a nebude snadné ho implementovat.
2.6.2
Editor
Sou£ástí projektu je editor s konvertorem. Je to program, který vytvá°í nální kontejner
pro p°ehráva£. Základní funkce tohoto editoru je slou£ení videostop s audio stopami,
moºnost p°i°adit k nim n¥kolik jazykových titulk·. Konvertor by m¥l um¥t p°evést audio
nebo video z libovolného formátu námi zvolených. Návrh Editoru je vid¥t na obrázku
2.4.
2.6.3
P°ehráva£
Na obrázku 2.5 je znázorn¥no schéma, jak asi bude p°ehráva£ postupovat p°i otevírání
video sekvence. Vstupem bude kontejner, který jsme si nadenovali v p°edchozím textu.
Tento kontejner bude zapot°ebí p°e£íst tzv. demuxorem, který p°e£te vnit°ní strukturu
datového souboru na jednotlivé streamy (datové proudy). Dále se tyto streamy musí
rozkódovat. Aby bylo moºno toto u£init, musíme znát jejich dekodér, který dokáºe zakódovaná data p°e£íst, abychom s nimi mohli dále pracovat. V poslední fázi se budeme
16
KAPITOLA 2. ANALÝZA A NÁVRH E’ENÍ
Obrázek 2.5: Základní pr·b¥h zpracování videosekvence
snaºit rozkódovaná data prezentovat, coº znamená ºe video zobrazíme na obrazovku,
zvuk p°ehrajeme a titulky se vypí²ou bu¤ to p°ímo do videa nebo do výstupu programu
(system out). Pokud bude mít vstupní soubor více stream· stejného typu, musíme si
p°edem zvolit, který z nich bude pouºit pro p°ehrávání. Dále bude na výb¥r zda p°ehrát
video v celoobrazovkovém módu nebo v okn¥.
Kapitola 3
Programátorská dokumentace
Popis implementace / realizace se zam¥°ením na nestandardní £ásti °e²ení.
3.1
Vývojové prost°edí
K naprogramování celé práce bylo pouºito vývojové prost°edí Visual Studio 2008 od
spole£nosti Microsoft. Je to komplexní nástroj pro vytvá°ení aplikací a´ uº v jazyce C++
nebo C. C++ bylo zvoleno proto, ºe knihovna pro p°ehrávání bude pouºita v projektu
Genesis, který pouºívá vykreslovací engine na platform¥ OpenGL a C++ a také proto,
ºe se v práci implementují knihovny, které jsou psány v jazyce C a není takový problém
je pouºít i v C++.
3.2
Pouºité knihovny
První pokus, jak implementovat kontejner Matroska, byl p°es knihovny libmatroska a
libebml z ociálních stránek Matrosky. Bohuºel zde byl první problém a knihovnu se
neda°ilo implementovat, p°estoºe u knihovny byly p°iloºeny ukázky pouºití knihoven.
Druhý a úsp¥²ný pokus byl u pouºití knihoven libavcodec a libavformat, které jsou
vyvíjeny v projektu FFmpeg.
FFmpeg je °e²ení pro p°ehrávání, nahrávání, p°evod a streamování audia a videa
nezávislé na pouºité platform¥. Její pouºití by m¥lo být jednodu²í neº knihovny libmatroska a libebml. Knihovna libavcodec obsahuje dekodery a enkodery pro video/audio
kodeky a knihovna libavformat obsahuje demuxory a muxory pro multimediální kontejnery. Knihovny jsou psány v C a umí pracovat s jakýmkoliv kodekem, který se v dne²ní
dob¥ pouºívá. Dále je zapot°ebí knihovna pro správné zobrazení obrazu, pro toto je v
projektu FFmpeg také knihovna s názvem libswscale.
Pro zobrazení výsledného videa na obrazovku a p°ehrávání zvuku se pouºije knihovna
SDL (Simple DirectMedia Layer), která je, tak jako knihovny FFmpeg, nezávislá na
platform¥. Tato knihovna také nabízí p°ístup ke klávesnici, my²i, 3D grace p°es OpenGL
a k 2D video framebueru. V²echny knihovny jsou nabízeny pod licencí GNU LGPL,
která umoºnuje pouºití t¥chto knihoven v komer£ních projektech, pokud jsou linkovány
jako dynamické.
17
18
KAPITOLA 3. PROGRAMÁTORSKÁ DOKUMENTACE
Obrázek 3.1: Info o na£teném kontejneru a výb¥r stop
3.3
Implementace - p°ehráva£
V první °ad¥ je pot°eba popsat co obsahuje video jako celek, °iká se tomu kontejner, a
m·ºe obsahovat r·zná data. Matroska kontejner umoºnuje ukládat nejen video a audio,
ale i titulky, kapitoly a dokonce i soubory. Jednotlivé stopy jsou streamy, neboli data,
která jsou postupn¥ dodávána v pr·b¥hu £asu a jsou sloºena z element·, které se nazývají
framy a kaºdý stream je pot°eba dekodovat na zmín¥né framy, ale k tomu je pot°eba
odpovídající kodek. Ze streamu se £tou pakety, které obsahují £ásti dat, které musí být
dekódovány. Tyto data se pak musí dále zpracovat, podle toho, jestli se jedná o obraz,
zvuk, nebo titulky. Kdyº se jedná o obraz, tak paket obsahuje jeden frame, u audia je to
více fram·. Paket s titulkama obsahuje aktuální v¥tu. Takto jednodu²e lze popsat postup
[8], jak zpracovat datový soubor s multimediálním obsahem.
P°ehráva£ pouºívá pro na£tení souboru strukturu, která obsahuje v²echna data z
na£teného/p°ehrávaného souboru. Pro rozd¥lení na£teného kontejneru na jednotlivé streamy
je zapot°ebí demuxor, který musí znát strukturu kontejneru a musí s ním um¥t pracovat.
Výpis obsahu kontejneru vypadá jako na obrázku 3.1.
O audio stream se stará knihovna SDL, která má v sob¥ funkce pro p°ehrávání zvuku.
Nejd°íve ale musíme vytvo°it strukturu SDL_AudioSpec, ve které nastavíme ve²keré informace pro audio, viz níºe.
wanted_spec.freq = codecCtx->sample_rate; \\vzorkovaci frekvence
wanted_spec.format = AUDIO_S16SYS; \\formát zvuku
wanted_spec.channels = codecCtx->channels; \\pocet kanál·
wanted_spec.silence = 0; \\hodnota pro ticho
wanted_spec.samples = SDL_AUDIO_BUFFER_SIZE;\\velikost audio bufferu
wanted_spec.callback = audio_callback; \\funkce pro p°enos paket·
wanted_spec.userdata = is; \\datova struktura s audio streamem
P°ehrávání zvuku je realizováno tak, ºe se £tou pakety informací ze zvukového streamu,
které se ukládají do fronty. Z fronty se pakety dostávají k dekódovací funkci. Pokud je
3.3. IMPLEMENTACE - PEHRÁVAƒ
19
Obrázek 3.2: Schéma vláken pro dekódování videa
audio frame rozloºen do více paket·, tak se musí na£íst v²echny pakety a aº poté se
dekódují.
Dekódování videa probíhá obdobn¥. K zobrazení fram· také pouºijeme knihovnu
SDL. Tato knihovna má n¥kolik funkcí pro zobrazení obrázk· na obrazovku, zejména
pak pro zobrazení videa. K tomu je pot°eba znát pojem YUV (nebo také YCbCr). Je to
zp·sob ukládání obrazových dat podobn¥ jako RGB, jak je popsáno v kapitole o videu.
SDL pouºívá YUV formát, který se nazývá YUV420P s pom¥rem jasové sloºky v·£i
barevné v pom¥ru 4:2:0 s parametrem "P", který odd¥lí sloºky do jednotlivých polí.
Pro vytvo°ení okna pouºijeme funkci SDL_SetVideoMode, která je sou£ástí jiº zmín¥né
knihovny a m·ºeme zobrazit získaný frame tak, ºe ho p°ekonvertujeme do YUV formátu
a zobrazíme do vytvo°eného okna. Takto se zpracovávají v²echny snímky videa.
3.3.1
Vlákna
Rozd¥lení programu do více vláken zajistí v¥t²í modularitu a také jednodu²í práci s tímto
programem p°i provád¥ní synchronizace videa se zvukem. P°ehráva£ musí obstarávat
n¥kolik úkol·, které rozd¥líme do samostatných vláken. Jedno z vláken bude zodpov¥dné
za dekodování paket·, které se za°adí do fronty. Z fronty si je dále budou p°ebírat vlákna,
která mají na starosti zpracování videa nebo audia. Vlákno pro audio se vytvo°í p°i
dekódování knihovonou SDL. Zobrazení fram· videa se bude nacházet v hlavním cyklu
main funkce, kde je událostní smy£ku. V p°ípad¥ pot°eby snímku se na£te nový z fronty,
kde jsou uloºeny dekódované framy. Pro lep²í orientaci ve vláknech slouºí schéma na
obrázku 3.2.
Ovládání videa je zaji²´ováno pomocí vlákna SDL_Delay, kterým m·ºeme kontrolovat
zobrazení dal²ího snímku. P°i synchronizaci jen ur£íme p°esný £as, kdy se má zobrazit
dal²í snímek. Poté, co vytvo°íme vlákno pro dekódování videa, o to se postará funkce
SDL_CreateThread (), m·ºe toto vlákno £íst pakety z video fronty a dekódvat je do
20
KAPITOLA 3. PROGRAMÁTORSKÁ DOKUMENTACE
snímk·, za p°edpokladu ºe na²lo pot°ebný dekodér. Dekódované snímky ukládá do fronty
obrázk·, které dále budou zobrazeny na obrazovku.
3.3.2
Synchronizace
Nejd·leºit¥j²í vlastností p°ehráva£e videí je bezesporu bezchybná synchronizace audia s
videem, to znamená ºe zvuk bude odpovídat zobrazovanému snímku. Pro tento problém
mají video a audio streamy v sob¥ informace, podle kterých se dají spolu synchronizovat.
U videa to jsou framy za sekundu a audia vzorkovací frekvence. Bohuºel ale nesta£í pouhé
vynásobení po£tu snímk· s jejich rychlostí zobrazení, tzv. frame rate. Je dost moºné, ºe
obraz stále nebude pln¥ synchronizovaný se zvukem. Proto jsou u videa hodnoty jako
DTS (decoding time stamp) a PTS (presentation time stamp). PTS p°edstavuje £as,
kdy je snímek z paketu zobrazen a DTS je £as, kdy je snímek z paketu dekódován. DTS
je pot°ebný k tomu, abychom v¥d¥li, kdy n¥co dekódovat, a PTS údaj nám °íká kdy je
pot°eba n¥co zobrazit.
P°i dekódování MPEG videa dostáváme n¥kolik druh· snímk· neboli fram·. I-frame
(Intraframe) je klí£ovým snímkem, který obsahuje kompletní obraz a je komprimován do
JPEGu. P-frame (Predictive frame) vychází z p°edchozího snímku a jsou v n¥m uloºeny
zm¥ny v obraze. B-framy (Bi-directional) mají ze v²ech nejmen²í velikost a vycházejí z
p°edchozích, ale i následujících snímk·. Snímky se p°ená²í v po°adí I P B B atd., ale my
je pot°ebujeme zobrazit v po°adí I B B P. Obecn¥ PTS a DTS budou rozdílné pouze
tehdy, kdyº se budou p°ehrávat B-snímky. Podrobn¥ popsáno v knize [1].
PTS:
1 4 2 3
DTS:
1 2 3 4
stream: I P P B
Kdyº dostaneme paket z funkce av_read_frame(), bude obsahovat PTS a DTS údaj.
Proto, abychom v¥d¥li, kdy zobrazit dekódovaný frame, musíme znát PTS údaj. Ne vºdy
ale dostaneme z paketu údaj PTS, protoºe frame m·ºe být rozd¥len na n¥kolik paket·.
Musíme si jej zjistit jinou cestou, která je ve vloºené ukázce kódu. Uloºíme PTS z prvního
paketu framu, který dostaneme a který bude zároven nální PTS pro celý frame. Pokud
ze stream· nedostaneme DTS hodnotu, pouºijeme tuto PTS uloºenou hodnotu. Jsou t°i
moºnosti jak synchronizovat: synchronizovat zvuk s video sekvencí, synchronizovat video
se zvukem, nebo synchronizovat audio a video s externími hodinami (systémový £as).
double pts;
for(;;) {
if(packet_queue_get(&is->videoq, packet, 1) < 0) {
// means we quit getting packets
break;
}
pts = 0;
// dekodovani framu videa
len1 = avcodec_decode_video(is->video_st->codec,
pFrame, &frameFinished,
3.3. IMPLEMENTACE - PEHRÁVAƒ
21
packet->data, packet->size);
if(packet->dts != AV_NOPTS_VALUE) {
pts = packet->dts;
} else {
pts = 0;
}
pts *= av_q2d(is->video_st->time_base);
Denujeme funkci synchronize_video(), která bude °e²it synchronizaci videa, pokud
nebudeme mít PTS hodnotu pro nální snímek. Zárove¬ musí sledovat, kdy se o£ekává
dal²í snímek, abychom mohla nastavit správnou obnovovací frekvenci. To se nastaví u
hodin - video_clock, které sledují, kolik £asu ub¥hlo v závislosti na videu a tuto hodnotu
nastavíme do hlavní struktury. P°i p°ehrávání se PTS bude vypo£ítávat z p°edchozích
dvou hodnot a tato hodnota bude pouºita pro p°í²tí frame. Dále je pot°eba synchronizovat video se zvukem.
Pro zvuk jsme si také vytvo°ili hodiny, které budou mít za úkol sledovat, orientaci
v p°ehrávaném zvuku. Tato hodnota se pouºije pokud by byl velký rozdíl mezi videem,
jinak ji nepot°ebujeme, protoºe synchronizujeme video na zvuk.
Pokud nastane ta situace, ºe je video a audio mimo synchronizaci, tak se PTS pro
p°í²tí synchronizaci zdvojnásobí, v p°ípad¥ ºe by byl obraz opoºd¥n za zvukem. Pokud
naopak, zvuk by byl opoºd¥n v·£i obrazu, tak se se co nejd°ív obnoví obraz. Obnovovací
£as, neboli zpoºd¥ní se je²t¥ bude korigovat s po£íta£ovými hodiny. Kaºddé vypo£tené
zpoºd¥ní se bude je²t¥ srovnávat s tímto systémovým £asem (frame_timer) a pouºije se
tato hodnota pro dal²í snímek. Tento princip je vypsán v následujícím kódu.
delay = vp->pts - is->frame_last_pts; // pts z posledniho casu
//ulozi se pro dalsi pouziti
is->frame_last_delay = delay;
is->frame_last_pts = vp->pts;
//aktualizace zpozdeni k synchronizaci audia
if(is->av_sync_type != AV_SYNC_VIDEO_MASTER) {
// aktualizace zpozdeni pro synchronizaci audia
ref_clock = get_master_clock(is);
diff = vp->pts - ref_clock;
// preskoci nebo zopakuje frame
sync_threshold = (delay > AV_SYNC_THRESHOLD) ? delay : AV_SYNC_THRESHOLD;
if(fabs(diff) < AV_NOSYNC_THRESHOLD) {
if(diff <= -sync_threshold) {
delay = 0;
} else if(diff >= sync_threshold) {
delay = 2 * delay;
/*...
...*/
is->frame_timer += delay;
22
KAPITOLA 3. PROGRAMÁTORSKÁ DOKUMENTACE
Obrázek 3.3: Gracké rozhraní Editoru
// vypocet realneho zpozdeni
actual_delay = is->frame_timer - (av_gettime() / 1000000.0);
if(actual_delay < 0.010) {
actual_delay = 0.010;
}
schedule_refresh(is, (int)(actual_delay * 1000 + 0.5));
3.4
Implementace - Editor
Editor, který má konvertovat z libovolného formátu do vybraných, tedy video do x264 a
zvuk do formátu MP3, je °e²en p°es externí program, který se jmenuje FFMpeg, vyvýjen ve stejnojmeném projektu FFMpeg. Po prostudování n¥kolika program·, které se
zabývají touto problematikou (FFmpeg, MKVmerge), není v·bec jednoduché vytvo°it
si vlastní program, který by toto °e²il. Výhoda pouºití externího programu je, ºe umí
konvertovat z mnoha formát· a nejen to, umí nastavit mnoho parametr· jak uvidea
(nap°íklad rozli²ení), tak audia (bitrate atp.) a zastane i funkci slou£ení v²ech multimediálních stop do jednoho nálního kontejneru Matroska.
K programu FFmpeg bylo pot°eba dod¥lat gracké rozhraní, které je uºivatelsky
p°ív¥tiv¥j²í neº pracovat s p°íkazovou °ádkou. Gracké rozhraní bylo navrºeno a naprogramováno ve Visual Studiu 2008, které má designový nástroj pro vytvá°ení formulá°·.
V n¥m bylo sestaveno gracké rozhraní a dopsány funkce pro otev°ení a uloºení souboru
a hlavní funkce pro zavolání externího programu FFMpeg.
Kapitola 4
Testování
V kone£né fázi se oba programy, jak editor pro vytvá°ení multimediálního kontejneru,
tak p°ehráva£ t¥chto soubor·, otestovali na datech, která jsou podobná t¥m, pro které
byly tyto dva programy naprogramovány.
4.1
Test editoru
Testování p°ehráva£e probíhalo tak, ºe se nejprve musel vytvo°it v Editoru kontejner
s multimediálním obsahem. P°i spu²t¥ní Editoru se do p°ipravených seznam· ne£etly:
video stopa, audio stop. Titulky se nemohly otestovat, konvertor nem¥l podporu formátu
.srt pro titulky. Video a audio stopy byly uloºeny v podporovaných formátech p°ehráva£e.
Z takto zadaných vstupních dat se vytvo°il jediný multimediální kontejner, který bylo
pot°eba otestovat v p°ehráva£i. 3.3.
4.2
Test p°ehráva£e
V p°ehráva£i se multimediální kontejner otev°el a postupn¥ se zkou²ely kombinace s
r·znými zvukovými stopami v doprovodu s r·zn¥ zvolenými titulkami. Dále se vyzkou²elo p°ehrávání ve fullscreen módu, které také nevykazolo ºádné problém. Titulky
se zobrazujou do systémového výstupu, kde se bohuºel £eské znaky nezobrazovaly a je
pot°eba dod¥lat pat°i£nou konverzi do znakové sady výstupu. 4.1
23
24
KAPITOLA 4. TESTOVÁNÍ
Obrázek 4.1: P°ehráva£ s výstupem pro titulky
Kapitola 5
Záv¥r
Kódování videa a audia je dost exaktní záleºitost a jeho následné jeho p°ehrávání je
závislé na tom, s jakými knihovnami pro audio a video pracujeme. Vytvo°it si vlastní
souborový formát pro tyto dva multimediální streamy vyºaduje znalost problematiky
programování a je £asov¥ velmi náro£ná. Tato bakalá°ská práce se v¥nuje problematice
synchronizace audia a videa sekvencí pouze z hlediska implementace do ²ir²ího herního
softwaru s moºností dal²ího rozvoje této problematiky. Na základ¥ vý²e uvedeného textu
dosp¥jeme k záv¥ru ºe je výhodn¥j²í pouºívat jiº hotové knihovny k n¥jakému známému
formátu, které ale ne vºdy jsou srozumiteln¥ napsané a dostate£n¥ zdokumentované pro
dal²í pouºití v jiných projektech, neº pro které p·vodn¥ byly napsány. V takovém p°ípad¥
je lep²í pouºít projekty, které vyuºívají pot°ebné knihovny a mají lep²í dokumentaci ke
zdrojovým kód·m.
Co se tý£e kodek·, je vývoj v této oblasti velmi dynamický a je jedním z d·vod·
masivního roz²í°ení videa ve vysokém rozli²ení (high-denition). Kodeky, které byly
vytvo°eny p°ed n¥kolika lety, nebyly na takto rozm¥rné video v·bec p°ipraveny. Nové
kodeky, jakým je nap°íklad x264 a jiné H.264 kodeky, které pracují s lep²ími algoritmy
komprese, se rychle rozvíjejí a je doporu£eno sledovat nové verze, které p°ijdou s je²t¥
lep²ím pom¥rem komprese, p°i zachování kvality videa.
U kodek· pro zvuk je situace obdobná jako u vý²e zmi¬ovaných kodek· pro video
sekvence. Nov¥ vytvá°ené formáty pro zvuk, mají podporu více kanálového zvuku. D°íve
pouºívaný formát MP3 pro video se v budoucnu bude pravd¥podobn¥ vztahovat pouze
na hudební soubory. U lm· jsou dnes nejpouºívan¥j²ími formáty Dolby Digital, DTS
nebo bezztrátový formát PCM.
Samotný p°ehráva£, který by m¥l být sou£ástí po£íta£ové hry, spl¬uje poºadavky,
které jsme si zadali na za£átku práce. Formát zvolený pro audio by m¥l do budoucna
nahradit modern¥j²í, který bude mít podporu pro více kanálové audio, neº je stereo.
Prostorový zvuk ur£it¥ p°idá videu lep²í pocitový záºitek pokud jde o po£íta£ové hry,
neº pouhý stereo zvuk.
Nejen zm¥na kodeku pro zvuk, ale i spousta dal²ích vlastností tohoto p°ehráva£e bude
dále vylep²ována s nástupem nových kodek·, formát· a kontejner·. P°ehráva£ by se dále
pouºít nejen pro video sekvence v po£íta£ových hrách, ale i jako klasický multimediální
p°ehráva£ lm· na po£íta£i, jakým je nap°íklad Media Player Classic.
Editor spl¬uje jen základní poºadavky pro vytvo°ení multimediálního kontejneru s
moºností dal²ího roz²í°ení. V sou£asné fázi editor umoº¬uje dal²í detailn¥j²í nastavení pro
25
26
KAPITOLA 5. ZÁV…R
konverzi audia a videa. U jednotlivých vloºených stop je moºnost dal²ích úprav (u videa
rozli²ení, nastavení enkodování; u zvuku jeho posunutí v·£i stop¥, zm¥na z prostorového
zvuku na stereo atp), pop°ípad¥ n¥jakou jednoduchou editaci £i st°ih.
Tento program je alternativou do budoucna, jakým zp·sobem tvo°it program nejenom
v oblasti po£íta£ových her se zam¥°ením na synchronizaci obrazu, zvuku a textu.
Literatura
[1] Iain E. G. Richardson: H.264 and MPEG-4 Video Compression.
Wiley, 2003, ISBN 978-0-470-87837-5
[2] Wikipedie: Codec
http://en.wikipedia.org/wiki/Codec
Ke dni: 11. £ervna 2009
[3] Wikipedie: Container format
http://en.wikipedia.org/wiki/Container_format_(digital)
Ke dni: 11. £ervna 2009
[4] Wikipedie: Komprese dat
http://cs.wikipedia.org/wiki/Komprese_dat
Ke dni: 11. £ervna 2009
[5] Matroska.org: Homepage of Matroska
http://matroska.org/
Ke dni: 11. £ervna 2009
[6] TVFreak: Není kontejner jako kontejner
http://www.tvfreak.cz/art_doc-7336C842E0DDDE25C125727C0059416E.html?lotus=1&Highlight=0,
kontejner,jako,kontejner
Ke dni: 11. £ervna 2009
[7] TVFreak: Test MPEG-4 kodek·
http://www.tvfreak.cz/art_doc-B6A4B465D8C16859C12573C5006E1ED4.html
http://www.tvfreak.cz/art_doc-03BE07EC21AA7EB7C12573CA006A0E96.html
http://www.tvfreak.cz/art_doc-9A4DA058433AE797C12573F1004EF30D.html
Ke dni: 11. £ervna 2009
[8] FFmpeg: An ffmpeg and SDL Tutorial
http://www.dranger.com/ffmpeg/ffmpeg.html
Ke dni: 11. £ervna 2009
[9] FFMpeg: Homepage of FFMpeg project
http://ffmpeg.org/
Ke dni: 11. £ervna 2009
27
28
LITERATURA
P°íloha A
Uºivatelská dokumentace
A.1
Instalace
Program Editor ani program P°ehráva£ se nijak neinstalují, jen se zkopírují z adresá°e
Bakalarka do libovolného adresá°e na lokálním disku.
A.2
Vlastní pouºití
Program Editor se spou²tí z následujícího umíst¥ní:
..\Program\Bakalarka\Debug\Editor.exe <nazev souboru>
Po spou²t¥ní se nám zobrazí formulá°, kde máme moºnost p°idat video stopy, audio
stopy. Po skon£ení výb¥ru si je²t¥ musíme vybrat, kam umístíme výstupní soubor a
klikneme na tla£ítko Vytvo°it. Program za£ne enkódovat kontejner do jednotného video
formátu x264 a audio formátu mp3. Po skon£ení konverze si m·ºeme kontejner spustit
v P°ehráva£i. Podpora formátu titulk· .srt není u externího konvertoru podporovaná,
musel by se zvolit jiný externí program, jako je t°eba MkvMerge.
P°ehráva£ se spou²tí z p°íkazové °ádky a to tak, ºe za názvem programu se vloºí
název souboru, který chceme p°ehrát.
..\Program\Bakalarka\Debug\Player.exe <nazev souboru>
Spustí se program a zobrazí se seznam stop, které jsou obsaºeny v souboru. Vyberu
poºadované stopy, které chceme p°ehrát. Poslední volba je, zda chceme video p°ehrát ve
fullscreenu. Zde je uveden p°íklad:
Input #0, matroska, from 'test.mkv':
Duration: 00:05:01.39, start: 0.000000, bitrate: N/A
Stream #0.0(eng): Video: h264, yuv420p, 1280x720, 23.98 tb(r)
Stream #0.1: Audio: mp3, 48000 Hz, stereo, s16
Stream #0.2: Subtitle: 0x0000
Výb¥r stream· pro p°ehrávání, zadávejte po°adové £íslo (0, 1, 2,... )
Vyberte video stopu: 0
Vyberte audio stopu: 1
Vyberte titulky: 2
Zobrazit video ve FULLSCREEN modu? (A/N): a
29
30
PÍLOHA A. UšIVATELSKÁ DOKUMENTACE
P°íloha B
Obsah CD
• Program - zde jsou ve²keré zdrojové kódy k vytvá°eným program·m, ve sloºce
Bakalarka/Debug jsou spustitelné programy
• Videa - pot°ebné ukázky k otestování program·
• Dokument - dokumentace ve formátu PDF a zdrojové soubory do TeXu
31

Podobné dokumenty

openMagazin 12/2009

openMagazin 12/2009 Přibyla možnost správy více uživatelských účtů, podpora pro nastavení HTTPS proxy a  stránka s informacemi o datové schránce. Podporovanými systémy jsou zatím Linux, Windows, Mac OS X a FreeBSD.

Více