Media Foundation: Základní koncepty
Pokud s digitálními multimédii teprve začínáte, představuje toto téma některé koncepty, které budete muset před napsání aplikace Media Foundation pochopit.
- streamů
- komprese
- Mediální kontejnery
- formáty
- související témata
Proudy
Datový proud je posloupnost mediálních dat s jednotným typem. Nejběžnějšími typy jsou zvuk a video, ale stream může obsahovat téměř jakýkoli druh dat, včetně textu, příkazů skriptu a obrázků. Termín stream v této dokumentaci neznamená doručení přes síť. Multimediální soubor určený pro místní přehrávání také obsahuje streamy.
Multimediální soubor obvykle obsahuje buď jeden zvukový stream, nebo přesně jeden stream videa a jeden zvukový stream. Multimediální soubor však může obsahovat několik datových proudů stejného typu. Například videosoubor může obsahovat zvukové streamy v několika různých jazycích. V době běhu by aplikace vybrala datový proud, který se má použít.
Komprese
Komprese odkazuje na jakýkoli proces, který zmenšuje velikost datového proudu odebráním redundantních informací. Algoritmy komprese spadají do dvou širokých kategorií:
- bezeztrátová komprese. Pomocí bezeztrátového algoritmu jsou rekonstruovaná data stejná jako původní.
- ztráta komprese. Pomocí ztrátového algoritmu jsou rekonstruovaná data aproximací originálu, ale nejsou jeho přesnou shodou.
Ve většině ostatních oblastí není ztrátová komprese přijatelná. (Představte si, že byste dostali zpět jen "přibližnou verzi" tabulky!) Ale schémata pro ztrátovou kompresi jsou z několika důvodů dobře přizpůsobena pro zvuk a video.
Prvním důvodem je fyzika lidského vnímání. Když posloucháme složitý zvuk, jako je hudební záznam, některé informace obsažené v tomto zvuku nejsou pro ucho srozumitelné. S pomocí teorie zpracování signálu je možné analyzovat a oddělit frekvence, které nelze vnímat. Tyto frekvence lze odstranit bez perceptuálního efektu. I když rekonstruovaný zvuk nebude přesně odpovídat originálu, bude zvuk stejný pro naslouchací proces. Podobné principy platí pro video.
Za druhé, určité snížení kvality zvuku nebo obrazu může být přijatelné v závislosti na zamýšleném účelu. Například v telefonii je zvuk často vysoce komprimovaný. Výsledek je dost dobrý pro telefonní konverzaci, ale nechtěli byste poslouchat symfonický orchestr přes telefon.
Komprese se také nazývá kódovánía zařízení, které provádí kódování, se nazývá enkodér. Reverzní proces je dekódovánía zařízení je přirozeně označováno jako dekodér. Obecný termín pro kodéry i dekodéry je kodek. Kodeky je možné implementovat v hardwaru nebo softwaru.
Technologie komprese se od nástupu digitálních médií rychle změnila a dnes se používá velký počet komprimačních schémat. Tato skutečnost je jednou z hlavních výzev při programování digitálních médií.
Kontejnery médií
Je vzácné uložit nezpracovaný zvukový stream nebo video stream jako soubor počítače nebo odeslat ho přímo přes síť. Pro jednu věc by nebylo možné dekódovat takový datový proud, aniž byste předem věděli, který kodek použít. Multimediální soubory proto obvykle obsahují alespoň některé z následujících prvků:
- Hlavičky souboru, které popisují počet datových proudů, formát jednotlivých datových proudů atd.
- Index, který umožňuje náhodný přístup k obsahu.
- Metadata, která popisují obsah (například umělec nebo název).
- Hlavičky paketů pro povolení síťového přenosu nebo náhodného přístupu.
Tato dokumentace používá termín kontejner k popisu celého balíčku datových proudů, hlaviček, indexů, metadat atd. Důvodem použití termínu kontejneru místo souboru je, že některé formáty kontejnerů jsou navržené pro živé vysílání. Aplikace by mohla kontejner vygenerovat v reálném čase a nikdy ho neukládat do souboru.
Příkladem kontejneru médií je formát souboru AVI. Mezi další příklady patří FORMÁT MP4 a ADVANCED Systems Format (ASF). Kontejnery je možné identifikovat pomocí přípony názvu souboru (například .mp4) nebo podle typu MIME.
Následující diagram znázorňuje typickou strukturu kontejneru médií. Diagram nepředstavuje žádný konkrétní formát; podrobnosti o jednotlivých formátech se značně liší.
Všimněte si, že struktura zobrazená v diagramu je hierarchická a na začátku kontejneru se zobrazují informace o záhlaví. Tato struktura je typická pro mnoho (ale ne všechny) formáty kontejnerů. Všimněte si také, že datový oddíl obsahuje prokládané zvukové a video pakety. Tento typ prokládání je v kontejnerech médií běžný.
Termín multiplexing odkazuje na proces paketování datových proudů zvuku a videa a prokládání paketů do kontejneru. Reverzní proces, tedy opětovné sestavení datových proudů z paketizovaných dat, se nazývá demultiplexace.
Formáty
V digitálních médiích je pojem formát nejednoznačný. Formát může odkazovat na typ kódování, například H.264 video nebo kontejner, například MP4. Tento rozdíl je často matoucí pro běžné uživatele. Názvy zadané formátům médií vždy nepomáhají. Například MP3 odkazuje na formát kódování (MPEG-1 Audio Layer 3) a formát souboru.
Rozdíl je však důležitý, protože čtení mediálního souboru ve skutečnosti zahrnuje dvě fáze:
- Nejprve je nutné kontejner analyzovat. Ve většině případů nemůže být počet datových proudů a formát jednotlivých datových proudů znám, dokud nebude tento krok dokončen.
- Dále, pokud jsou streamy komprimovány, musí být dekódovány pomocí příslušných dekodérů.
Tento fakt vede zcela přirozeně k návrhu softwaru, kde se samostatné komponenty používají k analýze kontejnerů a dekódování datových proudů. Tento přístup se navíc hodí k modelu plug-in, aby třetí strany mohly poskytovat vlastní analyzátory a kodeky. Ve Windows poskytuje model COM (Component Object Model) standardní způsob oddělení rozhraní API od jeho implementace, což je požadavek na jakýkoli model modulu plug-in. Z tohoto důvodu (mimo jiné) Media Foundation používá rozhraní MODELU COM.
Následující diagram znázorňuje komponenty používané ke čtení mediálního souboru:
Zápis mediálního souboru vyžaduje také dva kroky:
- Kódování nekomprimovaných dat zvuku a videa
- Umístění komprimovaných dat do konkrétního formátu kontejneru
Následující diagram znázorňuje komponenty použité k zápisu mediálního souboru:
Související témata
-
Průvodce programováním Media Foundation