Naposled aktualizováno 10. 01. 2011.

Ripování DVD - 2. část

Příprava pro kompresi videa

Na úvod je třeba říci trochu teorie. Video na DVD je komprimováno ve formátu MPEG-2, který je poměrně kvalitní, ale také zabírá dost místa. Abychom vměstnali alespoň hodinu na jedno CD, musíme použít úspornější kodek. Při překomprimování videa je tedy nutné nejdříve dekomprimovat video z formátu MPEG-2 a následně jej znovu zkomprimovat pomocí jiného kodeku. Protože celé nekomprimované video by se nevešlo na žádný běžný harddisk, musí se použít takzvaný frameserver, který pošle komprimačnímu programu vždy jen jeden nekomprimovaný snímek, tak jak je program potřebuje. Další možností je použít program, který zvládá obě činnosti najednou (dekompresi i kompresi). To umí třeba programy Vidomi nebo VirtualDubMod. Já ale použiji první možnost, která je sice komplikovanější, ale zpracování je kvalitnější a rychlejší. Pro kompresi je na výběr několik kodeků založených na standardu MPEG-4 ASP. Jsou to například DivX, XviD nebo LMP4. V roce 2005 probíhal nástup kodeků formátu MPEG-4 AVC (známý také jako H264 nebo pouze AVC), které jsou velmi kvalitní, ale poměrně náročné na výkon porcesoru. Což by ale brzy již neměl být velký problém. Ovšem pro přehrávání v HD rozlišení (1920x1080) bude zřejmě nutná HW akcelerace grafické karty. Přeci jenom ještě nejsou zcela rozšížené procesory nad 3 GHz, pro standardní PAL rozlišení stačí 1 GHz. V současné době (prosinec 2006) existuje už první stolní přehrávač (od firmy KISS) s podporou MPEG-4 AVC a to dokonce v HD rozlišení. AVC podporují v omezené míře také přehrávač Apple iPod a herní konzole SONY PSP. Nejpoužívanější kodeky pro tento formát jsou Nero Digital AVC a x264 (opensource). Také existují jiné kodeky než MPEG-4, například Windows Media 9 (WMV9), Real Video nebo VP7, jejich kvalita je ale horší a navíc jsou zde problémy s přehráváním takového videa. Nadace Xiph.org vyvíjí kodek Theora založený na starším VP3, který zatím trpí nízkou kvalitou. Další opensource kodeky jsou založené na principu waveletů, jsou to Dirac z dílny BBC a Snow. Poslední tři zmiňované kodeky jsou k dispozici zdarma a nezatěžkány softwarovými patenty, tak jako jsou všechny ostatní, včetně opensource XviD a x264. Zatím bohužel není jejich vývoj dokončen, takže se nedají smysluplně použít. U Theory je problém s kvalitou, zbylé dva zase mají problémy s rychlostí a použitím obecně.

Kodeky standardu MPEG-4 AVC jsou již na poměrně vysokém stupni vývoje, práce s nimi je ale trochu jiná. Pokud chcete video skomprimovat kodekem x264, podívejte se na tento návod, který v podstatě nahrazuje 3. díl procesu ripování DVD, tedy vlastní kompresi obrazu. Pro použití starší specifikace ASP zatím mluví poměrně dobrá podpora ve stolních DVD přehrávačích. V rozsáhlém testu na stránkách www.Doom9.org zvítězil pro rok 2006 celkově kodek x264. Mezi MPEG-4 ASP kodeky vyšel stejně jako v předchozích dvou letech vítězně XviD a proto bych doporučil používat právě ten. Dostal se již téměř na hranici dosažitelné kvality a obsahuje všechny specifikované funkce MPEG-4 ASP kodeků - B-frames, Q-PEL, GMC atd. A když už jsem se zmínil o jednom programu (respektive kodeku), tak bych hned v úvodu zmínil software, který budeme ke komprimaci používat. Samozřejmě jej opět najdete pohromadě na jedné stránce. Programy použijeme v tomto pořadí: DGMPGDec, Avisynth, RK DVD to DivX Calc, VitualDubMod a kodek XviD. Za první krok bych považoval stažení a instalaci všech těchto programů, většinou stačí někam na disk program rozbalit. Instalovat se musí kodek XviD a frameserver Avisynth.

Jako první použijeme program DGMPGDec. Rozbalíme někam na disk archiv s tímto programem a můžeme také zkopírovat soubor DGDecode.dll do adresáře pluginů AviSynthu tak, aby byl pohromadě s ostatnímy pluginy. Není to ale vůbec nutné, pluginy Avisynthu mohou být kdekoliv na disku. Potom v adresáři programu DGMPGDec najdeme a spustíme soubor DGIndex.exe. Objeví se nám okno programu, které vidíme na prvním obrázku.

DGMPGDec

Klikneme na File -> Open (F3) a nalistujeme náš video soubor s příponou .vob. Pokud máme takových souborů více, protože jsme kvůli disku FAT32 museli soubor dělit, zvolíme pomocí klávesové zkratky Ctrl+A všechny. Soubory také můžeme přidávat postupně pomocí tlačítka ADD. Pokud jste DVD na harddisk zkopírovali programem DVDFab Decrypter, dejte si pozor, abyste vybrali pouze ty VOBy, které patří k filmu. V adresáři totiž také budou pravděpodobně VOBy s menu a bonusy. Nakonec výběr potvrďte tlačítkem OK. Šoupátkem na spodním okraji programu můžeme rychle projet celým video souborem a zkontrolovat jej. Nyní vybereme z menu File -> Save Project (F4) a zvolíme jméno projektu, například film.d2v. DGMPGDec Nyní si můžeme jít uvařit další kafe, protože operace bude nějakou dobu trvat. Nejdřív by ale bylo vhodné zapsat nebo si zapamatovat nějaké údaje o filmu, které během ukládání projektu program DGMPGDec zobrazuje. Pravděpodobně budeme potřebovat údaj Aspect Ratio (přesněji Display Aspect Ratio - DAR), který udává poměr stran. Typický poměr stran na DVD je 16:9. Tento údaj je důležitý protože u DVD filmů neplatí, že poměr stran je stejný jako poměr rozlišení, jak je tomu u .avi souborů. U většiny DVD je rozlišení 720x576 (standard pro PAL), ale skutečný poměr stran je 16:9. Pokud bych poměr stran neupravil a video uložil do .avi souboru, bylo by zdeformavované a všem by se protáhly ksichty, zřejmě i těm, kteří by to sledovali :-). Další zajímavý údaj je Frame Rate (počet snímků za vteřinu) typicky 25 pro PAL a 29,97 pro NTSC. Důležitá je také informace, zda je video prokládané (interlaced). Tento údaj je ale někdy chybně zobrazen, případně není zobrazený vůbec.

Když máme vytvořený soubor projektu .d2v, napíšeme jednoduchý dvouřádkový skript pro frameserver Avisynth. O tomto programu jsem napsal samostatný článek, který jeho použití podrobněji popisuje. Pro naše účely budeme potřebovat verzi 2.5 nebo vyšší. První skript by potom mohl vypadat třeba takto:


LoadPlugin("C:\Program Files\DGMPGDec\DGDecode.dll")
mpeg2source("D:\FILM\VIDEO_TS\film.d2v")

Skript vytvoříme v libovolném textovém editoru, třeba Notepadu (Poznámkovém bloku), který je standardní součástí Windows. Vytvořenému textovému souboru dáme název například film.avs. Tento skript lze bez problémů otevřít ve videoeditoru VirtualDubMod (dále VDM), dokonce jej lze přehrát i ve většině video přehrávačů. Samozřejmě je nutné upravit názvy souborů a cesty tak, aby odpovídaly skutečnosti. Skript budeme ještě dále upravovat. Přidáme například oříznutí černých okrajů, změnu rozměru nebo filtry pro vylepšení obrazu. Značný problém nastává v případě, kdy výrobce DVD přidal k obrazu nahoře a dole černé pruhy a zároveň obraz zdeformoval nastavením AR (poměru stran). Potom je poměrně složité zjistit skutečný poměr stran viditelného obrazu (bez černých pruhů). Jediná metoda, která mě napadá je následující:

Předpokládám, že mám video v rozlišení 720x576 s černými pruhy nahoře a dole o šířce 70 pixelů. Kolik pixelů mají černé pruhy zjistíte jednoduše v DGIndexu nebo VirtualDubu použitím ořezávacích filtrů Clipping respektive Crop. Zároveň vím z DGMPGDec, že poměr stran (i s černými pruhy) je 16:9. Abych video zdeformoval do tohoto poměru stran, musel bych změnit šířku na 1024 (1024:576 = 16:9). Pokud oříznu černé pruhy, získám rozlišení 1024x436. Skutečný poměr stran videa (AR) je tedy 2,35:1. K výpočtu poměru stran můžu také použít jednoduchý program RK DVD to DivX CALC. Ten se nám bude hodit i v dalším postupu pro zjištění správného rozlišení. Zatím můžeme do AVS skriptu přidat příkaz pro oříznutí černých pruhů z videa:


Crop ( 0, 70, -0, -70)

Pozor, lze použít pouze sudá čísla. Pro další postup bysme se již bez nějakého kalkulátoru obešli pouze s obtížemi. Takže spustíme RK DVD to DivX CALC a v levé části okna zadáme oříznutí obrazu.

XviD Bitrate Calculator - první záložka

Program vám v kolonce dole zobrazí skutečné rozlišení videa, takže výpočet zmíněný výše můžete zapomenout a brát ho pouze jako informaci o tom, jak se k tomuto číslu došlo. Na pravé straně potom zadáme další parametry videa.

XviD Bitrate Calculator - druhá záložka

Odshora to je nejdříve délka videa a potom cílová velikost v megabytech (703MB = 1 CD). Vpravo potom zadáme bitrate (datový tok) zvuku. Pokud necháváme původní zvuk, zjistíte bitrate z názvu AC3 souboru. Jinak je volba na vás. Nejdůležitější položkou je rozlišení. To musíme nastavit tak, aby nám vycházela dobrá hodnota bit/(pixel*frame). Pokud je hodnota příliš nízká, políčko je červené. Snižujte tedy rozlišení dokud políčko nezezelená. Ještě si dovolím jednu poznámku o počtu bitů na pixel: Nekomprimované video ve formátu RGB24 má, jak už název napovídá, 24 bitů/pixel. My tedy komprimujeme video přibližně v poměru 1:100! Pro každý film je správná hodnota bitů/pixel jiná. Pro kvalitní DVD s malým množstvím pohybu je 0,2 vhodné číslo. Naopak pokud DVD obsahuje plno záběrů s vodou, akční scény nebo šum, bude vhodné dosáhnout hodnoty okolo 0,3. Pro amatérské, zašuměné záběry může být i 0,4 málo. Pokud vidíme, že by nám vertikální rozlišení kleslo pod hodnotu 280, rozdělil bych raději film na více CD. Ještě je dobré sledovat jeden parametr a to poměr rozlišení. Pokud se cílové rozlišení liší od původního na DVD, je zobrazeno červeně. Podle mě je vhodné dodržet toleranci do 1%. Jakmile najdete vhodné rozlišení, znáte všechny potřebné parametry a můžete pokračovat dál.

Nyní tedy již víme, co chceme získat a můžeme vytvořit finální skript programu AviSynth. Navíc předpokládejme, že film je mírně zrnitý a proto potřebujeme použít nějaký filtr pro odstranění šumu, například MipSmooth. Náš skript by tedy mohl vypadat třeba takto:


LoadPlugin ("C:\Program Files\DgMPGDec\DGDecode.dll")
LoadPlugin ("C:\Program Files\Avisynth\plugins\MipSmooth.dll")
Mpeg2Source ("D:\FILM\VIDEO_TS\film.d2v")
Crop (0,70,-0,-70)
MipSmooth (preset = "movieHQ")
LanczosResize (656,280)

Abyste mohli filtr MipSmooth používat, musíte si jej samozřejmě nejdřív stáhnout a rozbalit nejlépe do adresáře pluginů Avisynthu. Pokud je DVD prokládané (interlaced), použijte filtr TomsMoComp, DgBob, TDeint nebo jiný deinterlace filtr. To je ale otázka na delší téma a proto se jí zabývám v samostatném článku. Pokud filtr pro odstranění šumu nepotřebujete, stačí vymazat 2. a 5. řádek. Pokud nechcete skript editovat ručně, existují i programy s grafickým rozhraním, které Vám skript vygenerují (například AVSGenie). Podle mě je ale u takhle jednoduchého skriptu rychlejší napsat si jej sám nebo si stáhnout naši ukázku a upravit ji podle konkrétních potřeb. Nyní už máme vše připraveno pro kompresi a můžete pokračovat na další stranu návodu, ve kterém otevřeme námi vytvořený skript v programu VirtualDubMod a zkomprimujeme naše video pomocí kodeku XviD.


Předchozí strana

Další strana




Pokud máte nějaký dotaz nebo přípomínku, neváhejte mě kontaktovat.