# Základy multimédií

## Multimédia

- neexistuje přesná definice
- intuitivní definice
	- spojení textu, audia, obrázku, animace nebo videa se zařízením, které je shopné jej prezentovat (PC, mobil, televize)
- pro účely UPG
	- multimédia = video (bez zvuku i se zvukem) a audio

**Význam**
- komunikace mezi lidmi
- hlasové ovládání zařízení
- zabezpečení objektu a příbuzné
+ šíření vlastního názoru nebo umělecké produkce
+ prezentace produktu
+ vysvětlení složitějšího problému
+ upoutávky
+ ...

### Digitální video

- sekvence jednotlivých obrázků (snímků) doprovázená audiozáznamem, případně titulky
- snímky = bitmapové obrázky
	- stejná velikost (rozlišení)
	- stejná barevný model a bitová hloubka
	- sousední snímky se odlišují jen mírně
	- snímková frekvence (fps)
		- minimálně 24 fps pro navození iluze plynulého pohybu
		- záleží na rychlosti pohybu, který chceme zachytit
+ nejjednodušší podoba - adresář s obrázky
	- nepraktické
	- mnoho souborů, velmi neefektivní přístup ke snímkům
	- informace o fps není součástí
- lepší je využít některý ze standardních formátů

**Velikost snímků (rozlišení)**
+ teoreticky libovolné
+ používá se standardní rozlišení nebo jeho násobky
	- 240p – 320x240 (4:3)  
	- 360p – 480x360 (4:3) nebo 640x360 (16:9)  
	- 480p, 480i – 640x480 (4:3) nebo 720x480 (3:2), resp. 704x480 (5:3) nebo 853x480 (16:9)  
	- 720p – 1280x720 (16:9); HD
	- 1080p, 1080i – 1920x1080 (16:9); FullHD
- progressive scan (p)
	- pixely zpracovávány řádek po řádce zleva doprava
- interlaced scan (i)
	- pixely zpracovávány ob řádek zleva doprava
	- určeno pro CRT monitory, dnes nevhodné

**Datový tok**
- počet bitů za sekundu, které je potřeba přenést
- FullHD (1920x1080) film s 29.97 FPS při 24 bitech na pixel = cca 178 MB/s
	- velmi velký datový tok - potřeba použít kompresi

**Kodek** (**co**der-**dec**oder)
- algoritmus pro kompresi (coder) a dekompresi (decoder)
- transformuje data do úspornější podoby dle nastavení
	- různé nastavitelné parametry
- musí být k dispozici na straně příjemce
- často součástí OS, některé lze doinstalovat

### Kompresní přístupy

**Barevné podvzorkování**
- zahození barevné informace (RGB na YCbCr, YCoCg, YUV, apod.)
- redukuje barevné kanály

**Statickou část scény neukládat vícekrát**
- rozsekání obrazu na makrobloky, ty uloženy vždy jen jednou
- pro další snímek informace, kam se makroblok posunul
- čas od času potřeba restartovat

**GOP = Group of Picture Size**
- určuje, jak často se snímek má kódovat jako klíčový
	- 1 - každý je klíčový
	- 30 - 1 klíčový snímek + 29 rozdílových
		- nejčastěji používané
	- dlouhé GOP (např. 300)
		- pro archivní účely

**Možnosti volby velikosti datového toku**
- konstantní velikost (CBR, constant bit rate)
	- každý snímek kódován přibližně stejným počtem bytů
	- jednoduché, obsah snímku ignorován - něco příliš kvalitně, něco nedostatečně
- variabilní velikost (VBR, variable bit rate)
	- snímky mohou být kódovány různě velkým počtem bytů
	- udává se průměrný požadovaný tok + maximální povolený
	- složitější algoritmy, obvykle preferováno

**Jednoprůchodová komprese**
+ snímek okamžitě zpracován a odeslán na výstup
+ úroveň komprese pro dosažení průměrného toku nutno odhadnout
+ jediné možné pro přímý přenos TV vysílání

**Víceprůchodová komprese**
+ obvykle dvouprůchodová
+ v prvním zjistí složitost snímků, v dalším provede vlastní kompresi
+ vhodné pro archivační účely, využíváno ve spojitosti s VBR

### Standardní formáty

**MPEG-2**
- DVD filmy, digitální TV, Blu-ray
- méně náročné dekódování

**VC-1**
- vylepšený MPEG-2
- pro internetové vysílání, Blu-ray
- patentováno - pro vytváření potřeba licence
- WMV, WMA kodek

**MPEG-4**
- stále se vyvíjející formát s mnoha doplňky (part)
- náročnější kódování, vyšší nároky na dekódování
- mnohem menší datový tok
- part 2: DivX, XviD, QuickTime kodek
- part 10: H.264 kodeky
	- Blu-ray, YouTube, kabelová TV, vizuálně bezettrátová komprese
	- nejrozšířenější volná implementace = x264

### Vytváření videa

**Zdroj obrazu**
- uspořádaná množina obrázků vytvořených nějakým programem
	- animované filmy, animované vizualizace
- oblast obrazovky
- hardwarové zařízení (web kamera, ...)

Již při vytváření je nutné rozhondout, jak bude video distribuováno:
- soubor uložený na pevném médiu
	- na začátku hlavička (rozlišení, frekvence, ...)
	- poté vlastní video, často menší soubory
- streamovaně prostřednictvím TV nebo internetu
	- datový proud rozdělen na drobné úseky (např. několik ms)
	- hlavička před každým úsekem, větší soubory

## Audio

- zvuk = mechanické vlnění
- digitální audio = sekvence amplitud mechanického vlnění (tzv. vzorků)

**Vzorkovací frekvence**
- zavisí na rychlosti zachycovaného zvuku
- 16 kHz - stačí pro mluvené slovo
- 44.1 kHz - obsáhne celý slyšitelný rozsah
	- zkresluje zabarvení tónu
	- používáno v audio CD
- 48 kHz - nejčastěji užívaná frekvence
- 96 kHz, 192 kHz - DVD a Blu-ray
	- umožňuje další editaci zvuku

**Datový tok**
- počet bitů za sekundu, které je potřeba přenést
- hudba se vzorkovací frekvencí 192 kHz při 8 bytech na vzorek = cca 1.5 MB/s
- písnička typické délky (4 min) = cca 350 MB
- hudba k filmu (120 min) = cca 10 GB

**Audio kanály**
- audio může obsahovat více kanálů
- ukládány nezávisle
- datový tok roste lineárně s počtem kanálů
- monofonní zvuk = 1 kanál
- stereofonní zvuk = 2 kanály
- domácí kino = 6 kanálů

**Snížení datového toku**
- nižší vzorkovací frekvence (ztráta kvality)
- komprese dat
	- zvukové kodeky
	- obvykle specifikována požadovaná velikost toku a kodek automaticky určí snížení kvality
- snížení počtu bytů vzorku
	- kvantizace rozsahu
	- nejčastěji 16 bitů / vzorek (-32768 ... 32767)
- další kompresní přístupy

### Standardní formáty

**WAV**
- pouze kvantizace na 16 nebo 8 bitů
- vhodné pro audio CD nebo další zpracování

Windows Media Audio (**WMA**)
- patentováno - potřeba licence
- umožňuje digitální ochranu
- kompresní poměry běžně až 10:1

MPEG-1 Audio Part 3 (**MP3**) nebo MPEG-2 Audio Advanced Audio Coding (**AAC**)
- patentováno
- nízké nároky na dekódování
- podporuje nejen CBR, ale i VBR

**OGG** Vorbis
- open-source
- srovnatelné s předchozím

## Kontejnery

- audio i video v jednom souboru
- vyžadují dva programy
	- **multiplexor** (muxer) - odesílací strana
		- slučuje proudy videa, zvuku a titulkových stop do jednoho proudu dat
		- podporuje typicky různé video a audio kodeky
		- informace o rozlišení, typu komprese pro video/audio, počet audio kanálů a jejich mapování na reproduktory jsou součástí proudu dat
	- **demultiplexor** (demuxer, splitter) - přijímací strana
		- separuje ze složitého proudu data, o které je zájem  
		-  systém správy multimédií (typicky součást OS) předá separované proudy příslušným kodekům a jejich výstupy výstupním zařízením

**Nejčastější kontejnerové struktury**
- Audio Video Interleave (**AVI**)
- MPEG, např. MPEG-2 Transport Stream (MPEG-TS) nebo MPEG-4 (ASF)
- Matroska (MKV, WebM)
- Flash Video (FLV)
- Windows Media Video (WMV)

**Pro samostatné audio**
- lze použít obecné kontejnery pro video
- specializované audio kontejnery
	- WAV, MP3, ...

Pro zjištění obsahu kontejneru je potřeba použít utilitu.

## Úprava videa

**Živé video**
- veškeré úpravy se provádí hned při vytváření

**Uložené video**
- větší možnosti
- změna datového toku, změna velikosti obrazu, oříznutí snímků, komprese lepším kodekem, střih, odšumění, ...

**Komerční nástroje**
- určeny pro profesionální úpravy
- např. Adobe Premiere, Camtasia Studio, Pinnacle Studio, ...

**Volně dostupné**
- určeno pro amaterské úpravy
- např. FFmpeg, ShotCut, ...

## Multimediální prezentace

- interaktivní prezentace s videosekvencemi

**Řešení 1.**
- celá prezentace uložená jako jedno video v běžném formátu
- interakce není k dispozici, videosoubor lze snadno distribuovat a zpřístupnit

**Řešení 2.**
- uložit prezentaci v DVD nebo Blu-ray formátu
- omezené možnosti interakce
	- DVD - pouze menu ke spuštění částí a výběru zvukové stopy či titulků
	- Blu-ray - totéž jako DVD + vykreslování vektorové grafiky přes video s možností reakce na ovladač BR přehráče
- vše distribuovat na DVD nebo Blu-ray

**Řešení 3.**
- napsat si vlastní interaktivní aplikaci v nějakém programovacím jazyce (Java, C++, C#, ...)
- maximální možnost interakce, složitější vývoj
- funguje na pratformách, pro které je přeložena
- videosekvence mohou být součástí aplikace nebo přehrávány z internetu
	- vlastní server nebo CDN