Převod DVD do MPEG-4 (DivX ;-) část 1.
Petr Orel - 20.3.2002
V poslední době se čím dál tím víc mluví o zálohování filmů z digitálních videodisků (DVD) do formátu MPEG-4. Zajímá vás, jak na to? Přinášíme rozsáhlou recenzi společně s testy kvality a rychlosti dekompresních algoritmů, jakož i testy filtrů a popisy jednotlivých kodeků. To vše měřeno na jedněch z nejrychlejších počítačů dneška. Vyhraje Athlon XP nebo Pentium 4? Jaké jsou rozdíly a potřebujeme vůbec takto rychlé počítače?

Pokud jste někdy pracovali s obrázky, jistě vám neušlo, co to je bitmapa a jak je velká. Pro ty méně informované uvedu, že bitmapa je takový datový formát, který popisuje každý pixel (čtvereček, nejmenší jednotku obrazu) z hlediska jeho barvy. Obrázek s rozlišením 800 pixelů šířka a 600 pixelů výška má celkem 480 tisíc pixelů, což násobeno počtem bytů použitých pro zaznamenání barvy znamená gigantické množství dat. Při použití 24bit (16,7 milionu barev) je výsledný obrázek velký 1440000 bytů plus ještě informace o šířce a výšce obrázku a formátu kódování (tyto dodatečné informace ovšem zabírají minimální prostor).

Evropský filmový standard PAL má 25 snímků za vteřinu, což znamená, že za vteřinu je potřeba 25 bitmap. Jelikož rozlišení tohoto formátu je 720x576 pixelů, znamená to gigantických 30 MB/s požadovaného datového toku. Pro srovnání, dnešní špičkové EIDE pevné disky dosahují průměrně zhruba této přenosové rychlosti při čtení (zapisují ale výrazně pomaleji).

Dalším, možná ještě významnějším problémem je, že 1GB filmu tak znamená pouze 34 vteřin záznamu. Na běžný, jeden a půl hodinu trvající film by bylo potřeba zhruba 160GB dat. Jak jistě uznáte, toto je zcela neúnosné.

Principy kódování

Protože úkolem video komprese je vytvořit pokud možno co nejlepší kvalitu obrazu při únosných hardwarových nárocích, je nutné se zamyslet, co mají všechny filmy společného. Podívejte se na následující dva po sobě jdoucí snímky z jednoho nejmenovaného filmu (kliknutím zvětšíte na celou obrazovku):

první snímek

druhý snímek

Ano, uhádli jste. Snímky jakoby si z oka vypadly. Nejsou stejné, ale velmi podobné. A z toho lze také vyjít. Dnes se běžně používají tři principy komprese.

Neúplné snímky

Nejvýraznější úspory a zároveň bez sebemenší ztráty kvality lze dosáhnout použitím neúplných snímků. O co jde? Protože jsou si po sobě jdoucí snímky často velmi podobné, stačí zaznamenat pouze první snímek celý a další pouze jako rozdíly oproti předchozímu. Změn je obvykle tak málo, že získaná datová úspora je natolik velká, aby kompresní poměr mohl být i 1:100. A co je ještě zajímavější, hardwarové nároky takto komprimovaného filmu rapidně klesají. Jak by taky ne, když disk musí číst výrazně méně dat a procesor se zabývá pouze rozdílnými pixely, ne celým obrázkem.

Jestli si ještě pamatujete na tuto animaci...

Animace o velikosti necelých 13kB.

... tak ta je udělána ve formátu GIF a její první část po rozložení na jednotlivé snímky vypadá takto:

Polovina snímků animace, velikost 37 kB.

Zde je jasně vidět, že obraz se až na některé detaily prakticky nemění. V druhém snímku stačí zaznamenat pouze onen malý červený obdélníček v levém dolním rohu. Formát GIF udělá právě toto a celá animace (tj. nejen zde zobrazená půlka) má velikost ani ne 13kB, zatímco výše uvedený obrázek s půlkou snímků má plných 37kB!

S neúplnými snímky souvisí pojem Keyframe - klíčový snímek. Přestože jsou neúplné snímky z hlediska enkódování velmi výhodné (bez nich by se prakticky nejednalo o žádnou kompresi), mají také jednu zásadní nevýhodu. Pokud potřebujete zobrazit nějaký konkrétní snímek (typicky při přetáčení), musí se napřed složit ze snímků předchozích. Jestliže dekódování vyspělých formátů, jakým je např. MPEG-4, i tak trvá dost dlouho, může se tato operace stát pro procesor tvrdým oříškem. Do filmů se proto vkládají v různých nebo pravidelných intervalech klíčové snímky, takové, které zaznamenávají celý obraz, ne jen jeho rozdíl oproti předchozímu. Kdyby nebyly klíčové snímky, přetáčení by trvalo neúnosně dlouho.


Zde jsou vidět dva klíčové snímky.

Sprite

Ne ne, nejedná se o oblíbený nápoj od ještě oblíbenějšího výrobce, ale o pojem, který v počítačové terminologii znamená pohyblivou texturu. Kdo by si nepamatoval na legendární 3D akční hry od Id Software (Wolfenstein, Doom) nebo od 3D Realms (Duke Nukem 3D, Blood). Všechny tyto hry používají z důvodu nenáročnosti na hardware sprity pro zobrazení nepřátelských potvor, různých předmětů atp. Protože jsou vytvořeny pomocí textury, vypadají tyto objekty ze stejného úhlu vždy úplně stejně.

Novější hry jako Quake modelují tyto objekty plně v 3D, nespoléhají se na sprity, protože to nevypadá dostatečně věrohodně a dnešním počítačům nedělá problém se s vyšší složitostí vypořádat.

Stejného principu lze využít u kódování videa. Některé pohybující se části obrazu mohou vypadat v po sobě jdoucích snímcích stejně, avšak mohou být posunuté (výsledný obraz se proto liší). V tomto případě tak stačí nalézt tento pohybující se objekt a správně určit jeho vektor pohybu mezi jednotlivými snímky. Tato technika je typická pro vyspělé kodeky, protože má značné výpočetní nároky.

Pixelizace

... je metodou známou ze ztrátových obrázkových kompresí, jakou je např. JPEG. Idea vychází z faktu, že dva sousední pixely si mohou být svou barvou natolik blízké, že jejich "sloučením" do jednoho datového záznamu je možné při minimálním snížení kvality dosáhnout značné úspory dat. To se obvykle provádí pomocí změny barvy obou pixelů na barvu přechodovou (když bude jeden pixel tmavě červený a druhý světle červený, výsledkem bude středně červená barva).

Efekt je jasně vidět na tomto záběru.

Na první pohled není nic neobvyklého, když si ale vrcholek mrakodrapu zvětšíte, dojdete k závěru, že něco není zcela v pořádku.

Okraje jsou jakoby rozmazané, neostré a vůbec celá budova je kostičkovatá. Je to dáno tím, že společně s pixelizací se obvykle používá také filtrování, které vyhlazuje ostré hrany, aby efekt "sloučených" pixelů nebyl na první pohled tak nápadný.

Chcete-li vidět efekty zvoleného datového toku na množství použité pixelizace, mrkněte na článek o Lurawave kompresi.

Komprese MPEG

Zkratka MPEG znamená Motion Picture Experts Group, neboli Skupina expertů na pohyblivé obrázky. V zásadě jsou k dispozici tři kódovací schémata.

MPEG-1 je formát roky používaný u Video-CD formátu. Filmy jsou obvykle na dvou CD a jejich kvalita je po obrazové stránce nevalná.

Obrázek z filmu komprimovaného pomocí MPEG-1.
Obrázek z filmu komprimovaného pomocí MPEG-1.

Rozlišení 352 na 288 pixelů připomíná spíše staré hry pro DOS než film. Jedinou výhodou jsou velmi nízké nároky na hardware (stačí jakékoliv Pentium). Tento formát by se dal nazvat experimentem v oblasti videa na osobních počítačích, k dokonalosti má dost daleko.

Nesrovnatelně lepší kvality dosahuje MPEG-2 používaný u DVD, mimojiné také díky několikanásobně většímu rozlišení a datovému toku.


Kvalita filmů na DVD je téměř dokonalá.

Posledním přírůstkem do rodiny MPEG kompresí je velice zdařilý MPEG-4. Jedná se o algoritmus, který produkuje jen o malinko horší výsledky než MPEG-2, ale zároveň má několikrát menší bitrate (maximum kodeku je 6000 kilobitů/s). Náročnost na hardware je z dnešního pohledu velmi vysoká, při použití postprocessingu si i na Pentiu 4 2GHz při přehrávání vezme ve vysokých rozlišeních až 90 procent výkonu (bez něj zhruba třicet). I přesto má ale jednu obrovskou výhodu - film z DVD lze díky MPEG-4 kompresi uložit na jedno až dvě CD a to ve velmi vysoké kvalitě. Maximální rozlišení je 720 na 576 pixelů.

Bitrate

Bitrate znamená v překladu bitová míra a nejedná se o nic jiného než o počet bitů za vteřinu. Obecně platí, že čím více bitů za vteřinu je na kompresi použito, tím má výsledek lepší kvalitu. Bitrate se rozděluje na dva typy:

konstatní - Kodek udržuje stále stejný bitrate bez ohledu na to, kolik je ho ve skutečnosti potřeba. Tento typ se běžně používá u starších kompresních algoritmů (např. MPEG Audio Layer 3) a má výhodu v tom, že se dá dobře sesynchronizovat díky konstantní velikosti za sekundu. Jestliže je audio nahrávka vytvořena s konstantním bitrate, znamená to, že půlka skladby je přesně uprostřed souboru.

proměnlivý - Bitrate se mění v závislosti na složitosti scény, což znamená, že na málo složité pasáže se použije málo dat, zatímco na složité výrazně víc. Výhodou je, že takto lze dosáhnout při stejném průměrném datovém toku výrazně vyšší kvality výstupu, nevýhoda naopak to, že se dá špatně odhadnout velikost výsledného souboru (zvolený bitrate reprezentuje průměr a málokdy se do něj kodek přesně strefí). Tento typ kódování používá MPEG-4.

K výpočtu vhodného bitrate lze použít jeden z mnoha programů k tomuto účelu vytvořených. Mně se osvědčil poměrně přesný DivX4 Bitrate Calculator:

Ten nejenže počítá velmi přesně, navíc má celou řadu extra nastavení jako např. různé audio formáty a u nich přednastavený i volitelný bitrate.

Další užitečnou vlastností programu je kalkulačka na výpočet rozlišení. Vlevo stačí navolit poměr stran zdroje (ten je obvykle napsán na obalu DVD disku) a pak zvolit požadovanou šířku výstupu. Program sám dopočítá výšku a navrhne nejbližší vhodné rozlišení (jak šířka, tak výška musí být dělitelné 16ti).

Je tomu již poměrně dlouho, co se formát MPEG-4 začal prosazovat. Jeden z prvních kodeků byl přímo od Microsoftu. Ale jak jistě víte, Microsoft nerad cokoliv dává "for free" (zdarma). Stejně tak tento kodek byl určen pouze pro dekódování (přehrávání). Kdosi se proto rozhodl, že si pohraje s DeAssemblerem a poněkud pozmění kód. Takto "vzniknul" kodek DivX verze 3.11 alpha.

Tento kodek je typický svým šibalským úsměvem ;-) a všudypřítomnou větou Hacked with Joy ! Je to v zásadě stále kodek od Microsoftu, ovšem změněný tak, aby umožňoval enkódování. V menu, které můžete vidět na obrázku výše, je možné nastavovat bitrate a interval mezi klíčovými snímky. Třetí volba (Smoothness / Crispness) patrně souvisí s ostrostí hran, ale to nemůžu potvrdit. Jestli někdo víte, o co přesně jde, nenechávejte si to pro sebe a podělte se s námi v diskusi pod článkem.

Co je uvnitř

Kodek je distribuovaný v zapakovaném archivu s několika "bonusy".

Tak především samotný kodek je rozdělen na dva typy - Low Motion (DivXc32.dll) a Fast Motion (DivX32f.dll). Oba se poněkud liší systémem kódování a produkují různé výsledky. Prvně jmenovaný se hodí pro filmy s málo se měnícími scénami a pro vysoký bitrate kolem 1000 kilobit/s a vyšší. Fast Motion se naopak hodí pro nižší bitrate a pro složité, rychle se měnící scény (typicky akční filmy).

Dále je zde "pozměněný" kodek Windows Media Audio formátu (DivXa32.acm), který není nazván nijak jinak než DivX ;-) Audio a umožňuje jak přehrávání, tak enkódování. Formát WMA je poměrně oblíbený, obecně dosahuje při nižším bitrate podobných výsledků jako MP3, ale... vytvořil ho Microsoft, takže se nemusíte bát, že by se někdy objevil na "nevhodných" operačních systémech :-(((.

Mnohem zajímavější je další bonus - kodek na MPEG Audio Layer 3 (MP3) přímo od Fraunhofer Institut Integrierte Schaltungen (L3codeca.acm). Ten sice nese přízvisko Radium, ale není to nic jiného než ukradený kodek přímo od tvůrce tohoto formátu. Kdo si ještě pamatuje na výborný enkódovací program L3enc, jistě mi dá za pravdu, že kodeky z Fraunhoferu jsou špička (s výjimkou MP3Enc). Jako prakticky vše v balíku, i tento kodek je distribuován nelegálně.


U Layer III codecu se dá nastavit, jaké schéma se má používat při kterém bitrate.

V praxi stačí vědět, že Stereo režim vytvoří pro každý kanál vlastní datový tok, což sice znamená plně stereofonní a čistý zvuk, zároveň je ale pro stejnou kvalitu potřeba mnohem vyšší datový tok. Režim Joint stereo vychází z předpokladu, že zvuk v obou kanálech se ve většině scén příliš neliší, tudíž stačí vytvořit jeden středový kanál a pocit stereo zvuku dotvořit tak, že při velkých výkyvech oproti středu se vytvoří další záznam pro konkrétní stereo kanál, tj. jeho rozdíl oproti středu. Režim MS je obecně dost kvalitní, zatímco IS již znamená značné oříznutí původního signálu.

Problémy a verze 3.2

Některé filmy vytvořené pomocí DivX 3 mohou mít problémy se zasekáváním. Jedná se o chybu při kódování, kdy se do filmu uloží chybně kódované snímky, které dekodér při přehrávání není schopen strávit. K vyřešení tohoto problému je třeba nainstalovat DivX antifreeze 0.4, který při zaseknutí posune přehrávání na další snímek v pořadí. Poškozený film bohužel opravit nedokáže.

Za zmínku stojí i verze 3.2 distribuovaná např. jako součást Kristal Studio Codecs Packu. Jedná se o mírně inovovanou verzi, která sama určuje, kde budou umístěné klíčové snímky. Někdy se můžete setkat i s názvem VKI patch.

Dnes nejpoužívanější enkodér / dekodér pochází z dílen Project Mayo. Tento kodek je napsaný zcela od začátku a je zdarma. Nejedná se tedy o nic nelegálního jako v případě verze 3.


Nové logo Project Mayo

Výhodou je, že tato verze se stále vyvíjí a je plně optimalizovaná pro moderní mikroprocesory (staré stejně nejsou dost výkonné). Tak např. od verze 4.11 je zde výborná optimalizace přímo od programátorů Intelu. Zde musím zdůraznit, že Intel v této oblasti nezaměstnává jen tak nějaké kutily, ale, podobně jako nVidia, jedny z nejlepších programátorů vůbec, o jejichž kvalitách se můžete přesvědčit například na perfektním C++ kompilátoru. Přestože tyto nové optimalizace jsou určeny primárně pro procesory Pentium 4, značně zvyšují výkon i na konkurenčních Athlonech. Tento kodek si opět můžete stáhnout z Doom9.net, oficiální stránka www.divx.com dnes nabízí ke stažení již přepracovanou verzi 5. V balíku nejsou žádné ilegální knihovny, takže kodek na MP3ky si budete muset sehnat extra.

Zajímavostí je, že tento kodek má čtyři režimy práce. 1-pass režim je klasický princip, který používá drtivá většina kodeků. Video se při něm nejprve analyzuje a poté se zkomprimuje tak, aby se dosáhlo pokud možno zvoleného bitrate.

Režim 1-pass quality based je obdobou 1-pass, pouze s tím rozdílem, že místo bitrate zadáte požadovanou kvalitu výstupu. Tento režim je pro komprimaci filmů z DVD zcela nevhodný, protože nelze vůbec předpovídat výslednou velikost souboru.

Z hlediska kvality výstupu je nejzajímavější 2-pass enkódování. Jak název napovídá, jedná se o dvojprůchodové kódování, kdy při prvním průchodu si kodek poznamená, jak jsou konkrétní scény složité a v druhém průchodu využije dříve získané údaje o složitosti k vytvoření finálního AVI souboru (typický textový záznam z prvního průchodu má velikost kolem 15MB!). Protože se jedná o dva průchody, trvá enkódování 2x déle než v případě 1-pass režimu.

Volba Performance/quality určuje, kolik snímků dopředu bude kodek před samotnou kompresí analyzovat. Čím více, tím lepší kvality lze dosáhnout, především pokud se střídá rychlá a klidná scéna. Toto nastavení pochopitelně značně ovlivňuje výpočetní náročnost operace.

Kodek dále umožňuje nastavit maximální vzdálenost klíčových snímků, přestože o konkrétním umístění uživatel rozhodovat nemůže. Vhodným nastavením se dá ušetřit i několik MB, ovšem za cenu pomalejšího přetáčení. Pro pohodlné přehrávání nedoporučuji větší délku než 5 vteřin (v PAL filmu 125, v NTSC 150 framů).

Omlouvám se, že zde není nic o nejnovějším kodeku DivX 5, s ním bohužel nemám zatím žádné zkušenosti, takže nemohu posoudit jeho kvality ani dopad na výkon.

Čím je můj film kódován?

Poměrně častým problémem je, když nezkušený uživatel nedokáže poznat, čím je konkrétní AVI soubor kódován, zda starou verzí 3 nebo novou 4, na kterou nefunguje dekodér od Microsoftu (verze 3).

Použitý kodek se dá snadno zjistit tak, že si otevřete AVI soubor binárně a podíváte se na začátek.

AVI soubor binárně

Na tomto obrázku je vidět text "vidsDIVX", což znamená, že tento AVI soubor je komprimován novým kodekem verze 4. Pokud by zde byl nápis vidsDIV3, znamenalo by to verzi 3 Low Motion, v případě vidsDIV4 pak verzi 3 Fast Motion.

Název DIVX dále značí, jaký dekodér se má použít. DIV3 znamená verzi 3 a DIVX verzi 4. Obyčejně se ale verze 4 nainstaluje jako přehrávač DIV3 i DIVX.

Struktura dat na DVD

Když se podíváte na strukturu dat na DVD disku, zjistíte, že ve většině případů existuje na disku pouze jeden adresář nazvaný VIDEO_TS, ve kterém jsou uloženy soubory o celkové velikosti zhruba 3 až 4,5 GB.

Nejdůležitější jsou soubory s koncovkou VOB, ve kterých je uložen samotný film včetně audio stop. Ostatní soubory slouží jako doplňující informace pro DVD přehrávače, ať už stolní nebo počítačové, kde jsou uloženy informace o audio a video stopách a také o titulcích.

Jestliže mluvím o video a audio stopách, stojí za zmínku, že mnoho DVD titulů má na disku více než jeden film a/nebo zvukovou stopu.

Konkrétně tento disk z produkce Warner Bros. má dvě video stopy a jednu audio stopu. Podle délky snadno poznáte, co je skutečně film a co doprovodné bonusy. V běžném DVD přehrávači se pro jistotu můžete na každou stopu podívat. Krátké video není nic jiného než animace s logem výrobce.


dvanáctivteřinový "parazit"

Co se týče audio stop, tak většinou každá stopa reprezentuje jednu jazykovou mutaci, kde anglická verze je obvykle nahrána ve formátu Dolby Digital 5.1 (pět reproduktorů + subwoofer) a ostatní v Dolby Stereo.

Rippování

Před samotnou kompresí je nutné počítat s tím, že většina DVD disků je chráněna proti kopírování. Samotné video v souborech VOB není nic jiného než MPEG2 komprese s velmi vysokým datovým tokem. Mohlo by se zdát, že tyto soubory stačí jednoduše překopírovat na disk a je po starostech. Tak snadné to ale není.

Řada disků používá známý "vtip", kdy FAT tabulka ukazuje něco jiného než na disku ve skutečnosti je. V praxi to vypadá tak, že některé části souborů nelze přečíst - podle FAT tabulky tam data jsou, ve skutečnosti ale neexistují.

Stejný trik využívala kdysi hra Commandos, kdy na jednom CD s kapacitou 650MB bylo umístěno několik GB dat! Autoři tím velmi dobře zabránili přepalování, protože kdo vypaloval podle FAT tabulky, ten měl jednoduše smůlu, hra se s chybně vypáleným CD odmítla spustit. Podobného efektu dosáhnete, když si budete chtít v DOSu okopírovat bootovací disketu. Data se zkopírují, ale disketa bootovat nebude. Kopírování se v obou případech musí vyřešit pomocí přesné bitové kopie originálu.

Komprimovat data přímo z DVD je tedy nemožné. Řešením je rippování, proces, při kterém pomocí některého z chytrých programů odfiltrujete chybné pasáže. Jedním z oněch zajímavých programů je cladMdec.

V něm si stačí vybrat příslušnou video stopu a popřípadě i audio stopu (v Options), zvolit cílový adresář a čekat. Buďte trpělivý, operace není nějak zvlášť rychlá.

Program scanuje VOB soubory a hledá v nich audio a video data. Výsledkem je několik VOB souborů na vašem disku.

Tyto VOB soubory jsou již plně funkční. Můžete si také všimnou, že jejich velikost je o něco menší než u originálu. Zde je rozdíl zhruba 112MB, v jiných případech to může být díky odfiltrování ostatních audio stop klidně půl GB!

Nyní můžete vyzkoušet, zda se data zkopírovala správně. Stačí jednoduše VOB soubor přejmenovat na MPG a spustit ve Windows Media Playeru. Pravděpodobně budete uchváceni gigantickým rozlišením.

Ještě před zahájením dekódování je nutné z více VOB souborů vytvořit jeden (ačkoliv cladMdec má volbu na grabování do jednoho souboru, ta v mém případě nefungovala). Protože VOB soubory jsou čistě data, stačí si stáhnout některý z programů, které dokážou spojovat soubory, např. Windows Commander, a jednoduše je podle pořadových čísel VOB souborů poskládat dohromady. Ovšem pozor! Souborový systém FAT32 neumožňuje vytvářet soubory větší než 4GB. Pokud by výsledný soubor byl větší, vytvořte soubory dva a komprimujte je po částech.

Převod DVD do MPEG-4 (DivX ;-) část 2.
Petr Orel - 21.3.2002
Druhý díl povídání o převodu filmů do formátu DivX je zde, tentokrát přináší témata výkonu jednotlivých procesorů a vhodnosti konkrétních algoritmů.

Dekódování

Protože jsou DVD filmy uloženy ve formátu MPEG-2, je nutné před samotnou kompresí do MPEG-4 provést dekódování z MPEG-2. Přestože dekódování se kvůli datovým nárokům provádí společně s enkódováním, stojí za to si pověděť něco o kvalitě a programech sloužících k převodu filmů. Celý proces vypadá takto:

Na první pohled je zřejmé, že se jedná o poměrně složitou a na výkon procesoru velmi náročnou operaci a že kvalitu výstupu ovlivňuje nejen nastavení kodeku, ale také dekodéru a filtrů.

FlasKMPEG

Typickým dekodérem MPEG-2 filmů je FlasKMPEG.

Program je stále ve vývojové fázi a jak to tak vypadá, zůstane v ní navěky :-(((. Nejnovější verzí je upravená 0.6 preview, kterou si ale musíte poskládat sami z následujících součástek:

FlasKMPEG 0.6 preview - http://www.flaskmpeg.net
FlasKMPEG 0.6 preview 2 - Doom9.org
FlasKMPEG 0.6 preview 2 Subfix - Doom9.org

Po nainstalování originálu přepište původní soubory těmi z preview 2 a následně pak z Subfix (zde se mění jen některé knihovny, EXE soubor zůstává stejný).

Jakmile program spustíte, brzy patrně zamíříte do položky Global Project Options v záložce Options.

Hned na první straně se nastavují ty nejdůležitější paramentry. Tak především rozlišení. Je nutné si uvědomit, jaký bitrate hodláte použít. Při malém bitrate (kolem 600 kilobit/s) není vhodné používat plné rozlišení, protože takovýto datový tok nestačí dobře pokrýt celý obraz a dochází tak k přílišné pixelizaci. Mnohem lepší je o něco slevit z požadavků na šířku i výšku, za což se vám kodek odvděčí celkově lepší kvalitou. Jestliže komprimujete na dvě CD a bitrate se pohybuje kolem 1000 kilobit/s, klidně můžete nechat šířku na maximu (720 pixelů) a výšku dopočítat DivX4 Bitrate Calculatorem.

Vlevo dole lze navolit počet snímků za vteřinu výsledného filmu. Opravdu silně doporučuji nechat tuto hodnotu stejnou jako u vstupu, protože jinak se musí všechny snímky přizpůsobit novému framerate a to v konečném výsledku vede k otřesné kvalitě - film se jakoby trhá a to není dobré.

Dále je možné nastavit deinterlance. Tímto se dá odstranit prokládání - filmy v televizi jsou přenášeny s frekvencí 50Hz a polovinou řádků. Výsledný obraz je složen z dvou těchto půlsnímků, jeden nese sudé a z druhý liché řádky. To není pro výslednou kvalitu právě ideální. Jestliže máte takový film, pak rozhodně deinterlance zapněte. Položka Blend instead of interpolate znamená, že snímky se budou místo vkládání míchat, což může zlepšit kvalitu.

V záložce Audio si můžete zvolit, jakým způsobem se bude zpracovávat zvuk. Direct stream copy pouze okopíruje ze zdroje zvukovou stopu na disk do samostatného souboru, obvykle ve formátu AC3 5.1 kanálů. Decode audio je určeno pro přímé zpracování, kdy se zdrojový zvuk současně se zpracováním videa dekóduje a je poslán audio kodeku. A konečně třetí volba znamená, že FlasKMPEG se zvukem zabývat nebude.

Zde rozhodně doporučuji zapnout volbu Direct stream copy a výsledný soubor zpracovat zvlášť. Důvod? Jednak v některých MP3 kodecích od Fraunhoferu jsou chyby v synchronizaci, které je nutné ošetřit (a to FlasKMPEG nedělá) a pak také s výsledným zvukem si můžete dělat, co uznáte za vhodné - upravovat ho, měnit vzorkovací frekvenci v programech jako CoolEdit atd. Pozdější spojení samotného videa s audiem není problém. Jediné, co může být problém, je velikost. Samotný AC3 zvuk má bitrate obvykle 384 kilobit/s a z něj vytvořený nekomprimovaný WAV soubor klidně 1,5 GB.

Testovací sestavy

Ještě než začnu tuto část, rád bych se zmínil o hardware, na kterém jsou zkoušena různá nastavení.

procesor

jádro, frekvence

Willamette 2GHz

Palomino 1,53GHz (1800+)

podporované instrukční sady

x86, x87 (FPU), MMX, SSE, SSE2

x86, x87 (FPU), MMX, 3Dnow!, enhanced 3Dnow!, SSE

základní deska

Intel DB-850MV

Microstar K7T266 Pro2

čipová sada

Intel 850

VIA KT266A

verze BIOSu

P03

3.3

paměť

2x 128MB PC800 RDRAM

3x 256MB PC266 DDR SDRAM CL2

teoretická propustnost pamětí

3,2GB/s

2,1GB/s

grafická karta

NVIDIA GeForce 3

NVIDIA GeForce 3 Ti500

V obou případech se jedná o špičkové počítače, jedny z nejlepších, které si dnes můžete koupit. Měřením na Athlonu XP byl pověřen a svědomitě provedl PEGAS z

http://www.pegasoft.cz

Věřím, že na jeho stránce naleznete řadu zajímavých informací.

Volba iDCT

V předchozí kapitole jsem záměrně přeskočil volbu iDCT Selection ze záložky Video. Ta je totiž natolik důležitá, že si zaslouží vlastní odstavec.


Tyto volby jsou přístupné na Pentiu 4.

Těchto několik schémat určuje úroveň optimalizací a také přesnosti dekódování. Jelikož je FlasKMPEG naprogramován v Microsoft Visual C++, je základní přesnost 64 bit double.

Standard C++ zná i long double, který plně využívá 80bit x87 registrů mikroprocesoru, Microsoft se ale rozhodl, že jejich kompilátor bude z důvodu efektivity zacházet s tímto datovým typem jako s double. Je to poměrně logické, neboť šířka datové sběrnice do mikroprocesoru je dnes 64 bitů a zatímco na přenesení double je třeba jeden hodinový cyklus, na přenesení long double již dva.

Některé volby jsou specifické pro konkrétní procesor (3Dnow! pro AMD, SSE2 pro Pentia 4), některé jsou optimalizované (AMD x87 iDCT), ale běží na všech CPU a některé optimalizované nejsou (MMX iDCT).

Protože při optimalizacích se často pro dosažení vyšší rychlosti snižuje přesnost, rozlišuje FlasKMPEG mezi těmi algoritmy, které vyhovují standardu IEEE-1180 a těmi, které ne.

algoritmus

ztráta

žádná

v normě

mimo normu

AMD x87 iDCT

X

   
AMD 3dnow iDCT     X
AMD 3dnow hybrid iDCT     X
MMX iDCT   X  
Reference iDCT X    
Fast integer iDCT   X  
Fast SSE2 iDCT   X  
Reference Low iDCT SSE2   X  
Reference iDCT SSE2 X    

Pokud chcete maximální kvalitu (jako že já vždy), tak vám nezbyde než se spoléhat na Reference iDCT a v případě, že máte Athlon, tak ještě na AMD x87 iDCT. Nejlépe jsou na tom majitelé Pentia 4, kterým jejich Reference iDCT SSE2 nadělili přímo programátoři Intelu a navíc zkompilovali pomocí Intel C++ Compiler (o rychlost je tedy postaráno). Zde musím zdůraznit, že volba Reference Low iDCT SSE2 je takřka přesná, odchylka od referenční kvality je zcela minimální, proto si myslím, že i tato volba připadá v úvahu (pouze na Pentiu 4, pochopitelně).

Výsledky testů kvality pro FlasKMPEG si můžete stáhnout zde.

Do testovacího kola se probojovaly následující algoritmy...

... a jak je vidět, Pentium 4 poráží svého konkurenta na hlavu. SSE2 optimalizace od Intelu jsou ve FlasKMPEG králem. Jediné místo, kde Athlon XP poráží svého o 500 MHz rychlejšího protivníka, je optimalizace určená speciálně pro FPU jednotku Athlonu. I tak je rozdíl poměrně malý, až překvapující. Jedna FPU jednotka Pentia 4 se dotahuje na tři jednotky Athlonu? Neuvěřitelné!

Co je dále zajímavé, je fakt, že bez optimalizací to dnes prostě nejde. Moderní procesory jsou natolik složité, že správné dávkování instrukcí dokáže i za použití zcela stejné výpočetní jednotky - v případě AMD x87 a Reference iDCT je to FPU - zvýšit výkon o víc než 50 procent!

K testu byl použit kodek DivX 4.12, nastavení 1-pass, Slowest, rozlišení 720x400 pixelů, HQ Bicubic Filtering, bez zpracování audia. Bližší informace zde.

Filtry

Filtry se snaží vylepšit výsledný dojem z celého záznamu. Na výběr je ze čtyř možností, každá se trochu liší výpočetní náročností a kvalitou.


Nearest Neighbour


Bilinear


Bicubic


HQ Bicubic

Takto na první pohled nejsou patrné žádné rozdíly. Dlouho jsem výsledky zkoumal, až jsem dospěl k názoru, že všechny filtry jsou velmi kvalitní. Líbil se mi i Nearest Neighbour, který běžně považuji za vysloveně hnusný. Kdybych si ale měl vybrat, spolehnul bych se na Bilinear nebo HQ Bicubic, které mi přece jenom po důkladném zesvětlení připadaly o malinko lepší než zbylé dva.

Z hlediska rychlosti je rozdíl zcela minimální. Nejrychlejší se zdá být Bilinear následovaný těsně Bicubic filtrem. Nejpomalejší je HQ Bicubic, přestože na vedoucí místo ztrácí pouze 0,6 snímků za vteřinu. Inu zdá se, že rychlost i kvalita všech filtrů je téměř identická.

Xmpeg 4.2a

... je pokračovatelem FlasKMPEG, tentokrát již kompilovaný pomocí Visual Studio NET beta 2. Jedná se o prakticky totožný program s několika novými funkcemi a snad také opravenými několika chybami, které jsou pro FlasKMPEG typické.

Oproti svému předchůdci nabízí několik vylepšení, například umožňuje také jiné formáty než 32bit RGB, konkrétně 16bit YUY2 a 12bit YV12 (ty zvyšují výkon).

Dále je zde volba poměru stran pixelu. Zde bych pro jistotu nechal 4:3, což je prý výhodné pro MPEG-2 filmy, ale především volba 16:9 jakýmsi pochybným způsobem "slisuje" film po stranách. Pro jistotu je nutné se vždy podívat na výstupní výřez a přesvědčit se, že poměr stran je skutečně takový, jaký by měl být.

Velkou výhodou je možnost přednastavit si automatické spuštění druhého průchodu. Po skončení prvního kódování Xmpeg automaticky spustí druhý průchod podle nastavení v záložce General.

Naopak nevýhodou oproti FlasKMPEG je absence deinterlance (prý bude v dalších verzích).

Volby iDCT

V této části se nabídka velice rozrostla.

 

algoritmus

ztráta

žádná

v normě

mimo normu

AMD x87 iDCT     X
AMD 3dnow iDCT     X
AMD Vultur Hybrid     X
MMX iDCT   X  
DVD2AVI MMX     X
DVD2AVI SSEMMX     X
MCMAB 3DNOW Enh.   X  
MCMAB 3DNOW   X  
Miha`s x87 Reference iDCT X    
Miha`s x87 Fast iDCT X    
Optimized MMX iDCT   X  
Reference iDCT X    
Fast integer iDCT   X  
Fast SSE2 iDCT   X  
Reference Low iDCT SSE2   X  
Reference iDCT SSE2 X    

Optimalizace od Intelu jsou převzaty z FlasKMPEG, výsledky jsou proto stejné. Uživatelé Athlonů přišli v Xmpeg o kvalitní optimalizaci AMD x87 iDCT, která nyní ani nevyhovuje specifikaci IEEE-1180. Naopak získali skoro dokonalé optimalizace MCMAB pro 3Dnow!, které jsou zhruba tak přesné, jako Reference Low iDCT SSE2 (tj. skoro přesné).

Výsledky testů kvality pro Xmpeg 4.2a si můžete stáhnout zde.

I zde jsem vybral do testů zcela přesné nebo velmi přesné algoritmy a provedl srovnání výkonu.

Wow. Situace již není tak jasná jako předtím. Zvolený SSE BiCubic filtr dělá své a značně oba procesory zatěžuje. Pentium 4 si i nadále drží svůj primát nejvyšší kompresní rychlosti, ale jeho náskok před Athlonem již není tak zdrcující, jak je tomu v případě FlasKMPEG.

Co je ovšem ještě zajímavější... Pentium 4 nevyhrálo díky optimalizaci pro SSE2, ale pro FPU! Obě bezztrátové optimalizace Miha`s x87 dokázaly být rychlejší než bezztrátová optimalizace přímo od Intelu využívající SIMD instrukce! Fantastické! Majitelé Athlonů s jádrem Palomino (XP, MP) jsou jistě velmi mile překvapeni, jak dobře si jejich procesor vede. V lehce ztrátovém MCMAB pro enhanced 3Dnow! dosahuje Athlon 1800+ vynikajícího výkonu a ani v bezztrátových Miha`s x87 optimalizacích se nedrží příliš vzadu.

Filtry

I co se týče filtrů, přibyla řada možností. Opět jsem udělal výřez obrazu a zde jsou výsledky:


Bressenham


Nearest Neighbour


Bilinear


MMX Bilinear


BiCubic


SSE BiCubic


Pseudo BiCubic

 

Narozdíl od FlasKMPEG jsou rozdíly mnohem výraznější. Jestliže se pozorně zadíváte na detaily, všimnete si, že kvalitní jsou BiCubic (a jeho SSE varianta), dále pak Bressenham a MMX Bilinear. Ostatní buďto produkují příliš rozmazaný nebo naopak příliš kostičkovatý výstup.

Náročnost na výkon těchto čtyřech filtrů je velmi rozdílná. Bezkonkurenčně nejrychlejším, a v tomto případě by se dalo říct skoro realtime, filtrem je Bressenham. Naopak zcela nepoužitelným je BiCubic. Pět snímků za vteřinu na dvougigaherzovém Pentiu 4 je pouze pro velmi trpělivé jedince.

SSE varianta BiCubic a MMX Bilinear se drží se někde mezi těmito dvěma extrémy se zhruba 13 snímků za vteřinu... při tomto framerate bude komprimace filmu trvat dvojnásobek doby trvání filmu, což znamená, že dvouhodinový film zpracovávaný dvěma průchody DivX 4 kodeku bude trvat 8 hodin (to je již přijatelné).

DVD2AVI

K dispozici je ještě program DVD2AVI, který je prý velmi rychlý. Jak si ale můžete všimnout z testů v Xmpeg, tak kvalitou příliš neoplývá, proto se jím zabývat nebudu..

Volba bitrate

Počítejte s tím, že na jedno CD se vejde při slušné kvalitě zhruba hodina a půl záznamu. Jestliže je film delší, budete muset buďto slevit z kvality videa i audia nebo komprimovat na dvě CDčka.

Za opravdu dobrou kvalitu lze považovat datové toky přes 1000 kilobit/s, jako nejnižší "překousnutelné" považuji 600 až 700 kilobit/s (zde už kvalita občas dost pokulhává). Nižší už jsou až na výjimky nepoužitelné. Při příliš nízkém bitrate se v druhém průchodu dokonce kodek odmítne spustit s hlášením, že zvolený bitrate je příliš malý a že dojde k jeho automatickému zvýšení, při prvním průchodu raději navolený bitrate vůbec nedodržuje.

Následující snímky jsou z filmu o rozlišení 720 na 544 pixelů po zpracování z druhého průchodu.


400 kilobit/s


600 kilobit/s


800 kilobit/s


1000 kilobit/s


1200 kilobit/s


1500 kilobit/s

Při velkém zvětšení si můžete všimnout pixelizace i u již velmi vysokého bitrate 1500 kilobit/s. Takto na první pohled je myslím si dostatečně kvalitní již datový tok 800 kilobit/s. Vyšší jsou v tomto případě již zbytečné. Pokud se budeme bavit o velikosti výsledku, tak tato tříminutová část má...

datový tok

velikost

400 kilobit/s

8,84 MB

600 kilobit/s

12,9 MB

800 kilobit/s

16,9 MB

datový tok

velikost

1000 kilobit/s

21,1 MB

1200 kilobit/s

25,3 MB

1500 kilobit/s

31,5 MB

Objem dat narůstá téměř lineárně, proto si myslím, že je zcela zbytečné chtít co nejvyšší bitrate. Ušetřený prostor je vhodnější využít na lepší zvukový doprovod.

RGB vs. YUY2 test

Xmpeg má jednu zajímavou vlastnost - umožňuje zvolit, v jakém obrazovém formátu budou posílána data z dekodéru do kodeku na kompresi. Možné je zvolit 32bit RGB nebo 16bit YUY2, popřípadě ještě 12bit YV12. Datově menší typ YUY2 je odnoží videoformátů YUV a přináší nemalé zvýšení výkonu celého procesu. Proč? Mnoho dnešních filmů na DVD je distribuováno právě v YUV obrazovém formátu a odpadá tak nutnost převádět snímky na RGB. Pokud filtry dokážou stejně dobře pracovat s YUV jako s RGB, nedochází k žádné ztrátě kvality!

Athlon XP si, jak se zdá, díky YUY2 poměrně značně polepšil a dostal se na hranici až 14 snímků za vteřinu...

... Pentium 4 si ale díky optimalizaci Miha`s Fast iDCT užívá snímků skoro patnáct.

Nevýhodou je, že mnoho kodeků formát YUV nepodporuje (DivX ovšem ano). Chcete-li komprimovat do jiného formátu než DivX, pak máte bohužel smůlu.

Převod DVD do MPEG-4 (DivX ;-) část 3.
Petr Orel - 22.3.2002
Třetí pokračování článku zálohování DVD do formátu DivX je zde. Dnešními tématy jsou: jednoduchý střih videa, konverze a komprese audio souborů a problémy spojené s titulky.

Stříhání videa

Pro účely stříhání, slučování nebo jiného upravování AVI souborů je na Internetu jistě k dispozici mnoho programů, určitě by vám však neměl uniknou VirtualDub, vynikající freeware program distribuovaný pod GNU licencí.

VirtualDub by se nemusel stydět ani jako komerční produkt, vždyť umí dekódovat formát MPEG1, umí upravovat obraz za použití velkého množství filtrů jako např. motion blur nebo deinterlance, umí vkládat do videa zvuk z externích souborů a zajistit vzájemné prokládání, umí toho jednoduše mnoho. Autor navíc vydává pravidelné aktualizace a celý program je k dispozici i ve formě zdrojového kódu.

Při stříhání a kombinování videa s audiem je nutné si dát pozor na dvě věci - klíčové snímky a prokládání. Jak jsem popsal již dříve, klíčový snímek je úplný obraz, nejen jeho změna oproti předchozímu.

Při stříhání je důležité, aby klíčový snímek byl vždy první v celém AVI souboru! Pokud nebude, jako že i takové verze mezi lidmi kolují, pak se dočkáte nepříjemného efektu, kdy po spuštění přehrávání budete "oslněni" podivnými barvami, gigantickými nesmyslnými čtverečky atp. (nezapomínejte, že i tak se barva těchto políček bude díky zapsaným rozdílům v dalších snímcích měnit, což vůbec nevypadá pěkně).

Otázka prokládání (Interleave) se týká audio záznamu.

Protože audio a video část jsou v AVI souboru oddělené záznamy, je nutné nějak zaručit správné přehrávání. K tomuto účelu je zde prokládání. V klasické koncepci jsou audio a video v AVI souboru zcela oddělené, každý jsou v jiné části souboru...

... kdežto při prokládání se pravidelně střídají. Každý typ má své výhody i nevýhody. Klasika je datově úspornější, ale jednak je při velkých souborech problém neustále přeskakovat z jedné strany na druhou (vašemu pevnému disku se to určitě líbit nebude) a pak také je možné se setkat se špatnou synchronizací. Prokládání je o něco datově náročnější než klasika, což je dáno tím, že v souboru musí být jasně stanoveno, co je video a co již audio při každém prokládání, ale na druhou stranu jsou data blízko sebe (není nutné přeskakovat daleko) a hlavně - problémy se synchronizací odpadají, stejně jako se urychluje přetáčení... stačí totiž nalézt hledaný video snímek, přičemž je jasné, že příslušné audio se "povaluje" někde poblíž.

Rozdělení souboru

Pokud záznam neobsahuje audio a vy ho tam chcete mít, je nutné ještě před rozdělením provést sloučení audio a video záznamu. U již rozděleného AVI by se tato operace dělala velmi těžko.

Postup rozdělení souboru (filmu) za pomocí VirtualDubu je následující:

1. Otevřete si zdrojový soubor AVI.
2. V položce Video a Audio zvolte Direct stream copy.
3. Pokud posuvník není na začátku, zvolte v záložce Edit položku Beginning.
4. Zvolte Set selection start.
5. Přemístěte posuvník na konec úseku, který budete chtít uložit.
6. Zvolte Previous (popř. Next) keyframe - program najde klíčový snímek.
7. Zvolte Previous frame a poté Set selection end.
8. Úsek uložte volbou Save as AVI.
9. Pro uložení dalšího úseku zvolte Next frame (v tomto případě to je klíčový snímek) a dále postupujte od bodu 4, dokud záznam nerozdělíte na požadovaný počet částí.

Zpracování audia

Pokud jste nepřeváděli audio společně s MPEG-4 kompresí, ale nechali jste si originál zkopírovat v nezměněné podobě, pak se na vašem disku právě nachází soubor s koncovkou AC3 o velikosti zhruba 250 až 400MB (podle délky filmu). Otázka zní: co s ním? Jsou v zásadě dvě možnosti.

Převod AC3 na WAV

První možností je převést AC3 zvuk na WAV. Protože formát AC3 je na většině DVD nahrán jako pět nezávislých kanálů a subwoofer (Dolby Digital 5.1) a cílem je dosáhnout nekomprimovaného WAV stereo formátu, je nutné provést downmix, neboli jinými slovy smíchat 5.1 kanálů do dvou kanálů. Tím se sice ztratí prostorový dojem, avšak je možné s takto získaným souborem nakládat prakticky podle libosti, převádět ho na téměř jakýkoliv formát (za předpokladu, že máte příslušný enkodér a také dekodér).

K provedení downmixu je k dispozici několik programů, já jsem se ale rozhodnul používat téměř kouzelný Azid.

Na první pohled nic moc, program používá pro zobrazení výsledků a nastavování parametrů dnes již ne moc oblíbenou příkazovou řádku.

Nenechte se ovšem zmást! V průběhu používání počítačů jsem zjistil, že často právě tyto programy "ze staré školy" se namísto grafického rozhraní soustředí na schopnosti samotného programu, které někdy bývají natolik elegantní a propracované, že je dokonce těžké vytvořit pro ně přehledné grafické rozhraní. Vzpomeňme si na pakovací program ARJ, kolik ten toho uměl...

V čem že je tedy Azid tak kouzelný? Umožňuje totiž pohrát si s jednotlivými kanály, měnit jejich dynamičnost, hlasitost... prakticky vše, co si můžete přát. Na první pohled nepříliš zajímavý program toho umí víc, než kdejaký komerčně prodávaný (alespoň co se týče převodu zvuku).

Azid GUI

Ještě než se začnu věnovat jednotlivým nastavením, doporučuji všem stáhnout si pěkné (a hlavně přehledné) grafické rozhraní.

Grafické rozhraní AzidGUI

Azid i jeho grafické rozhraní si můžete stáhnout zde. Oba zapakované archívy je pro pořádek na disku nejlepší rozbalit do stejného adresáře.

Jak nastavit

Konkrétní vhodné nastavení může být vždy trochu jiné. Co rozhodně doporučuji, je zapnutí volby Auto Find Maximum Gain. Program pak začne prohledávat záznam a v tichých pasážích (obvykle šeptání a jiné téměř nesrozumitelné zvuky) přidá na hlase.

Dále je vhodné nastavit dynamičnost. Ta se snaží celkově vyrovnat hlasitost, tiché pasáže zesiluje a hlasité zeslabuje. Tím se zabraňuje rychlým a uchu nepříjemným změnám. Standardní hodnota je Normal, volba Inverse naopak zeslabuje tiché a zesiluje hlasité pasáže.

Co ještě stojí za povšimnutí, je volba LFE To LR Channels, která programu přikáže přimíchat do pravého a levého stereo kanálu signály pro Subwoofer. Pochopitelně je nutný určitý odstup, abyste nakonec neslyšeli z reproduktorů pouze hluboké tóny a kdesi v pozadí chtěný signál. Doporučení obecné nastavení je -3dB, konkrétní hodnota ale pochopitelně záleží na množství a intenzitě hlubokých tónů v záznamu.

Ovládání je na první pohled poněkud složité, doporučuji si přečíst nápovědu k Azid, kde se dozvíte víc.

Převod WAV na MP3

Na převedení WAVu na např. formát MP3 je dnes k dispozici mnoho komerčních i freeware programů. Mezi jeden z nejlepších se řadí enkodér LAME distribuovaný zdarma ve formě zdrojového kódu (GNU licence). Na Internetu se každou chvíli objevují nové verze kompilované většinou pomocí velmi rychlého Intel C++ kompilátoru. Pravda je ta, že tyto běžně dostupné verze jsou rychlé jako blesk, ale pokud máte alespoň základní znalosti o programování a dokážete si zdrojové soubory zkompilovat, můžete pomocí nejnovější verze Intel C++ kompilátoru a vhodného nastavení dosáhnout ještě vyšší rychlosti (ta se při nastavení maximální kvality v některých případech pohybuje i kolem osminásobku rychlosti přehrávání !!!).

Vždy se snažte používat konstantní bitrate, při proměnném jsou problémy se synchronizací.

Video s prostorovým zvukem

Druhou možností zpracování zvuku je přímá kopie původního audio záznamu z DVD do AVI. Tento na první pohled jednoduchý proces má ale několik úskalí.

Tvorba AVI s AC3 zvukem

Samotné vytvoření AVI souboru s pětikanálovým zvukem je velmi jednoduché. Stačí si stáhnout některou z verzí VirtualDubu doplněnou o podporu AC3 zvuku... nejnovější je verze založená na 1.4.8, k dispozici je i starší modifikace Nandub.

... a pak jednoduše v záložce Audio zvolit externí audio soubor (na obrázku výše je to položka WAV or AC3 Audio). Program vás nechá vybrat příslušný soubor a jestliže rozpozná formát AC3, vypíše jeho statistiku.

Poté už stačí v záložkách Video a Audio zvolit Direct stream copy a nechat uložit finální soubor.

Přehrávání - tvrdý oříšek

Samotné přehrání souboru je větší problém, než by se mohlo na první pohled zdát. Protože ve Windows nejsou žádné kodeky pro přehrávání DVD filmů, chybí tudíž podpora pro formát AC3. Tu je nutné si někde obstarat. Problém je samozřejmě kde.

Softwarové přehrávače DVD mohou být v zásadě realizovány dvěma způsoby. Jednak mohou pro přehrávání používat vlastní DLL knihovny nebo mohou do systému nainstalovat příslušné kodeky a poté fungovat jen jako jejich vizualizace. První případ je pro účely přehrávání AC3 zvuku mimo MPEG formát zcela nepoužitelné, druhý je však velmi zajímavý. Jedním z programů, které nainstalují příslušné kodeky, je WinDVD. Po nainstalování programu se v systému zaregistruje knihovna iviaudio.ax, která umožňuje přehrávání AC3 zvuku.

Protože ale WinDVD je komerční produkt, je ze stránky InterVideo přístupná demoverze omezena délkou přehrávaného úseku na zhruba pět až šest minut (výrobce tvrdí pět, ale v mém případě je i po této době zvuk slyšet). Poté neuslyšíte vůbec nic. Na Internetu jsem našel (snad) veřejně přístupnou časově neomezenou verzi, ta je bohužel omezena na podporu pouze dvou kanálů.

Volba režimu přehrávání audia.

Jak jistě uznáte, ani jedno z těchto řešení není optimální. Pro přehrávání AC3 zvuku nezbývá než si WinDVD zakoupit, popřípadě si obstarat jiný dekodér (jestli o nějakém víte, dejte vědět). 

Ani po nainstalování plné verze WinDVD není všem problémům konec. Program sice zvládne přehrávání ripovaných MPG souborů s AC3 zvukem, co už ale nezvládne, je přehrání AVI souborů. Řešením je z výše uvedené veřejně přístupné verze nakopírovat do Windows\System (popř. do WinNT\System32) Directshow filter mpgaudio.ax a zaregistrovat jej příkazem regsvr32 mpgaudio.ax. Poté již nebude s přehráváním AC3 problém.

Micro DVD Player

Ještě než začnu s titulky, měl bych se zmínit o programu Micro DVD Player, což je dnes nejpoužívanější přehrávač DivX filmů. Jeho obsluha je sice poněkud neintuitivní, ale protože většina titulků je právě ve formátu pro Micro DVD Player a navíc program umožňuje nastavovat všemožné detaily, je velmi oblíbený.

Nevěřili byste, jaký je problém spouštět titulky velikosti 10 při ultra vysokých rozlišeních jako 1920x1440 pixelů. Při této velikosti se nedá vůbec mluvit o pohodlném sledování filmu, vše je téměř mikroskopické, přičemž naopak pro obraz je takovéto rozlišení téměř dokonalé. Micro DVD Player proto umožňuje automatické přizpůsobení velikosti titulků aktuálnímu rozlišení. Dále umožňuje nastavit barvu z zcela bílé na např. šedou, což s oblibou používám v High Brightness režimu, kdy běžná bílá vysloveně "svítí".

Titulky

Protože je drtivá většina filmů na DVD v původním znění, tj. většinou v angličtině, je nutné mít k videu také titulky (platí pokud nemluvíte anglicky jako česky/slovensky). Filmy na DVD obsahují titulky jako obrázky a jejich převod na text se provádí pomocí programů na rozpoznávání textu - ty mají zcela stejnou funkci jako ty dodávané ke scannerům. Tento proces je velice zdlouhavý a po celou dobu vyžaduje práci uživatele. Jelikož titulky k většině filmů jsou běžně dostupné na Internetu, např. zde, domnívám se, že nemá vůbec žádnou cenu se s nimi trápit, ale jednoduše si je stáhnout.

Občas (většinou) ale narazíte na problém, že tyto titulky nebudou zcela sychronizované s videem... lidé budou mluvit dříve než se objeví titulky, rychlosti filmu bude vyšší než rychlost titulků, tj. vzájemná "vzdálenost" titulků se bude postupně zvětšovat atp. K řešení existuje několik programů.

Například mnou používaný program DivX Subtitles Editor umí velmi dobře operovat jak s časovým posunem, tak i s rychlostí přehrávání.

Jak to dělá? Titulky nejsou nic jiného než v textovém formátu zaznamenaný text s časy, kdy se má příslušný text objevit na obrazovce. Vše je buďto vyřešeno klasicky počátečním (a popřípadě i koncovým) časem zobrazení...

... nebo podle konkrétního snímku (framu).

Micro DVD Player používá právě tyto "framové" titulky, u ostatních programů to může být pochopitelně jinak. Jestliže narazíte na nekompatibilní titulky, nezoufejte. Existuje řada programů, které umí jednotlivé formáty převádět (výše zmíněný DivX subtitles Editor jich umí kolem deseti typů.

V programu můžete snadno nastavit začátek (pro případ, kdy zvuky předcházejí nebo se opozdívají za obrazem), dále můžete nastavovat frame rate, což je vhodné, jestliže např. titulky jsou pro NTSC verzi (29,976 fps) a film je v PAL (25fps).

Samozřejmě je možné si vše upravovat manuálně, ale v tom případě vám přeji příjemnou týdenní práci :-((.

Rozsudek

Formát MPEG-4 v podání kodeku DivX již dnes znamená revoluci v přenosu videa po Internetu a hlavně revoluci v kopírování DVD filmů. Nikdy nebylo možné nahrát film na jeden nebo dva disky CD tak kvalitně, jako s formátem MPEG-4. A přestože jsou hardwarové nároky na dnešní dobu značné, nejsou nepřekonatelné. Dobře si vzpomínám rok 1997, kdy jsem si poprvé stáhnul z BBS Infima enkodér L3enc v2.6 a začal vytvářet jedny z prvních MP3jek. Kdo by tomu byl věřil, že na tehdejších velmi rychlých 200MHz MMX procesorech "sežral" WinAMP verze 1.2 až 30 procent výkonu! Roky plynuly a na dnešních GHz strojích si můžete bez problémů pustit klidně deset WinAMPů současně.

Stejně tak i formát MPEG-4 zažívá teď fázi rozvoje. Je velmi náročný, ale jsem si jistý, že za dva tři roky nebude problém si pouštět několik filmů současně i s postprocessingem na maximum. Proto se nelekejte, když uvedu následující hardwarové požadavky na převod DVD filmů do DivX:

 

Minimum

Optimum

frekvence procesoru

1GHz

4GHz

velikost RAM

128MB

256MB

propustnost pamětí a FSB

1GB/s

4GB/s

místo na disku

10GB na film

20GB na film

rychlost čtení disku

15MB/s

40MB/s

rychlost zápisu disku

10MB/s

30MB/s

Dnešní špičkové (a příští rok průměrné :-))) počítače leží někde mezi, jejich výkon je značný, ale stále ne ideální, komprimace z MPEG-2 do MPEG-4 v reálném čase je na ně příliš. Potěšující je fakt, že přehrávání není ani zdaleka tak náročné, plynulosti lze dosáhnout s dnes již běžnými procesory architektury Intel P6 s frekvencí 400MHz a výš. Nutné je ale mít grafickou kartu s plně hardwarovým urychlováním 2D zobrazení. Se slušnou grafikou není problém jakékoliv rozlišení, procesor se totiž stará jen o dekódování a ne o velmi náročné zobrazení. Ohledně tohoto mohu říct asi tolik, že sestava s procesorem K6-2 350MHz se starou grafickou kartou, která nepodporuje všechny DirectDraw funkce (většina modelů se 4MB RAM a méně), zvládne přehrávat plynule maximálně čtvrtinu plného rozlišení 720x576. Jakmile však vyměníte grafickou kartu (v tomto případě jsem použil své Voodoo Banshee 16MB), hned se můžete kochat fullscreenem při 1024x768 a 32bit barvách. O správné dimenzování filmu na celou obrazovku se postará grafická karta a procesor se při tom namáhá méně než při softwarovému zobrazení čtvrtiny obrazu.

... a kdo že vyhrál?

Ne ne, opravdovým vítězem není žádný procesor, ale optimalizace kódu. To je to, co hýbe výkonem nejvíc! Bez nich nemá vůbec cenu se zabývat výpočetně náročnými operacemi. Dnešní procesory potřebují, aby jim vývojáři pomáhali! Minimálně bez rychlých kompilátorů se do budoucna neobejdeme.

Z hlediska hardware se vítězem dnešního klání bez debat stává Pentium 4 2GHz a čipová sada i850 s dvojkanálovými RDRAM pamětmi. Athlon se sice držel zuby nehty, ale přece jen na Pentium 4 nemá.

Za spolupráci při tvorbě článku ještě jednou děkuji PEGASovi z http://www.pegasoft.cz.