Naposled aktualizováno 10. 01. 2011.

VirtualDub -

Komprese videa a zvuku

Tento návod ukáže, jak pomocí VirtualDubu zkomprimovat video. Je to mírně poupravený a zjednodušený 3. díl postupu ripování DVD. Pro kompreasi videa potřebujeme mít nainstalovaný nějaký kodek, jako vzorový použiju oblíbený XviD, zvuk zkomprimujeme do formátu MP3. Překomprimovat video můžeme z několika důvodů, například když potřebujeme změnit formát komprese. Znovu komprimovat video musíme také v případě, že na něj chceme aplikovat nějaké filtry. Je dobré vědět, že můžu zkomprimovat obraz a zvuk nechat v původním formátu nebo naopak změnit pouze formát zvuku. Jak vyměnit zvukovou stopu popisuji zde. VirtualDub ve výchozím nastavení formát zvuku nemění a já ani nedoporučuji jej k tomu používat, protože je to nespolehlivé. Na konci ukážu způsob, jak snadno, rychle a bezproblémově překomprimovat zvuk do MP3.

VirtualDubMod

Ve VD tedy přes položku File -> Open video file (Ctrl+O) otevřeme náš zdrojový video soubor. Měli bysme získat podobný výsledek, jako je na prvním obrázku. V levém okně je původní video, v pravém po úpravě filtry VD. Já jsem pro demonstraci použil filtr emboss. O používání filtrů mluvím v tomto návodu. V menu Video zvolíme mód Full processing. Potom zvolíme kodek pro kompresi výběrem Video -> Compression (Ctrl+P) a vyskočí na nás tabulka se všemi nainstalovanými kodeky. Pravděpodobně až úplně na konci bude námi požadovaný XviD. Označíme jej a zmáčkneme tlačítko Configure. Vyskočí na nás dialog s konfigurací kodeku, který vidíme na dalším obrázku (je z verze XviD 1.0 RC1, od aktuální 1.2 se ale téměř neliší).

Princip video komprese

XviD kodek Než se pustíme do nastavení kodeku, dovolím si pár slov o tom, jak takový kodek formátu MPEG-4 funguje. Bude to samozřejmě hodně zjednodušené, ale snad postačující. Kodek vždy vytvoří takzvaný klíčový snímek (keyframe, I-frame, I-VOP) a následných několik snímků (obvykle 1-300) je zpasáno jako změny oproti klíčovému snímku. Tyto snímky se značí jako P-frames (P-VOP). Novější MPEG-4 ASP kodeky (například XviD a DivX 5 a 6 ve verzi PRO) umožňují používat také takzvané B-frames (B-VOP), které jsou zapsané jako změny oproti následujícímu i předchozímu obrázku. Jejich používání uspoří údajně 20% místa při zachování kvality. Další důležitou věcí je míra komprese jednotlivých snímků (tzv. quantizer). Čím větší je quantizer, tím víc je daný snímek komprimovaný. Pokud se v obrazu téměř nic nehýbe, je jasné, že snímky popisující změnu mohou být výrazně menší než když se obraz velmi rychle mění. Proto není výhodné používat stejnou velikost a quantizer pro všechny snímky, ale měnit je průběžně podle potřeby. Tomuto systému se říká proměnný datový tok (variable bitrate, VBR). Používá se i u zvuku. Nevýhoda je v tom, že nejsme shopni přesně odhadnout, jak bude naše video po komprimaci velké. Tento problém řeší dvouprůchodové kódování (twopass encoding). V prvním průchodu se zjistí náročnost jednotlivých scén a ve druhém kodek přidělí jednotlivým scénám takový bitrate, aby celé video mělo námi požadovanou velikost. Ve své podstatě nám dvouprůchodové kódování umožní při předem zadané velikosti získat maximální možnou (a hlavně konstantní) kvalitu pro celé video. Nevýhodou je, že celý proces trvá tím pádem 2x tak dlouho, protože musíme video komprimovat dvakrát.

Nastavení kodeku XviD

Takže již víme proč používat dvouprůchodové kódování a můžeme se pustit do nastavení kodeku. Jako první vybereme v nabídce Profile @ Level Advanced Simple @ L5 a klepneme na tlačítko more. Zobrazí se nám dialog, který vidíme na druhém obrázku. XviD kodek - nastavení 1 Já bych doporučil nastavit všechny hodnoty tak, jak to je zobraznené na screenshotu. Pouze u pár z nich se zastavím. U Quantization type můžete vybrat H.263 nebo MPEG. Nastavení MPEG zachovává více detailů, ale pří nízkém bitrate způsobuje kostkatění obrazu, H.263 naopak obraz mírně rozmazává. Interlaced Encoding zaškrtněte, pokud je zdrojové video prokládané a chcete jej tak nechat. Tato volba potřebuje vyšší bitrate pro udržení kvality. Quarter Pixel (Q-PEL) je vhodný především pro filmy s nízkým rozlišením, zvyšuje ostrost obrazu. Zlepšuje hledání pohybu rozdělením každého pixelu na 4. Global Motion Compensation jak už název napovídá umožňuje lépe kódovat scény, ve kterých se pohybuje celý obraz. Pomáhá tak třeba v případech, kdy kameraman nemá nejpevnější ruku nebo se s kamerou otáčí či zoomuje. Tato volba ale znemožní přehrávání videa ve většině stolních přehrávačů, proto se příliš často nevyužívá. B-VOP jsou již zmíněné b-frames, které je určitě vhodné zapnout. První číslo udává maximální počet po sobě jdoucích b-frames. V úvahu připadají pouze čísla 1 a 2, vyšší nepoužívejte. Packed Bitstream urychluje hledání ve filmu, pokud jsou použity b-frames. I tato volba spolehlivě složí většinu současných stolních DVD přehrávačů. Proto bych ji raději nepoužíval, přestože je defaultně zapnutá. Naštěstí lze kdykoliv packed bitstream z AVI souborů bezztrátově odstranit pomocí programu MPEG4 Modifier. Pokud budete chtít maximální kompatibilitu pro stolní DVD/DivX přehrávače, je vhodné zakázat i B-frames a Q-PEL. Na ostatních záložkách už nic neměňte a potvrďte Vaši volbu OK. Vrátíme se do původního okna kodeku a u položky Encoding type zvolíme Twopass - 1st pass. Klepnutím na tlačítko more můžeme zvolit, kam se uloží soubor se statistikou prvního průchodu, tedy zjišťování náročnosti scén. Poté nás ještě bude zajímat nabídka Quality preset ve spodní části. Můžeme zde zvolit přednstavené profily Real-time (nejrychlejší, nízká kvalita) nebo General purpose (vyvážené nastavení s dobrou rychlostí i kvalitou). Případně můžeme zvolit vlastní nastavení klepnutím na tlačítko more....

XviD kodek - nastavení 2

Zde jde především o nastavení určující poměr rychlosti a kvality. Motion search precision můžeme nastavit na 1 až 6. Pokud nám jde o kvalitu, existují pouze hodnoty 5 a 6. Nižší hodnoty jsou vhodné pro realtime zachytávání. Zapnutím Use chroma motion ještě zvýšíme kvalitu na úkor rychlosti. Stejný efekt má také nastavení s názvem Use VHQ for bframes too. Úroveň VHQ (vysoká kvalita hledání pohybu) určuje políčko VHQ mode. Pokud jste trpěliví, zvolte 4. Běžně se ale používají hodnoty nižší. Turbo ;-) zvýší výrazně rychlost kódování na úkor nepatrného snížení kvality. Maximum I-frame interval určuje, po maximálně kolika snímcích se vloží nový klíčový snímek. Můžete tuto hodnotu snížit na 250, většinou se ale stejně vloží sám automaticky dřív. Parametr Frame Drop Ratio říká, o kolik % se mohou lišit dva po sobě jdoucí snímky, aby byl druhý z nich vypuštěn. Při hodnotě 0 jsou vypuštěny pouze zcela identické snímky. Změna tohoto parametru na nenulovou hodnotu umožní vytvářet video s proměnnou snímkovou frekvencí (vyšší číslo - více vynechaných snímků, tzv. N-VOPs). Také tato funkce ale složí nejeden stolní přehrávač. Nyní již stačí pouze potvrdit všechna nastavení kodeku, je to celkem 3x klepnutí na OK.

Spuštění komprese videa

Jsme tedy zpátky ve VirtualDubModu a máme nastavenou metodu komprese. Proto můžeme v menu File vybrat Save as (F7) a zobrazí se nám následující dialog.

VirtualDub - uložení

Zvolíme tady adresář a jméno video souboru. Jako kontejner zvolíme prozatím *.avi. Na další řádce zaškrtneme Don't run this job now, což znamená, že po potvrzení dialogu o uložení se nespustí hned proces komprese, ale naplánuje se pro pozdější spuštění. To je výhodné, protože tak můžeme naplánovat oba průchody a potom je spustit automaticky. Můžeme ale samozřejmě nechat proběhnout první průchod ihned a druhý nastavit a spustit až později. Další 2 políčka v dialogu Save as necháme nezaškrtnutá. První umožňuje uložit soubor tak, aby byl kompatibilní se staršími programy, Segment output file automaticky dělí soubor, což zatím nepotřebujeme. Na dolní straně můžeme zkontrolovat, zda je nastaveno Full processing a XviD MPEG-4 Codec. Případně můžeme tato nastavení změnit, včetně vlastností kodeku. Pakliže je všechno v pořádku, zvolíme Uložit. Pokud jsme proces pouze naplánovali, nic se nestane a vrátíme se zpátky do VDM. V opačném případě se spustí první průchod a pokračovat můžeme teprve až se dokončí. Ve VDM poté opět přejdeme do nastavení kodeku XviD, což můžeme udělat i v dialogu pro uložení. Na úvodní stránce kodeku zvolíme namísto Twopass - 1st pass druhý průchod, neboli Twopass - 2nd pass. Zadáme požadovanou velikost souboru. Po přepnutí tlačítkem Target bitrate/Target size se dá také zadat výsledný průměrný bitrate.

Při zadávání velikosti videa nesmím zapomenout na místo pro zvuk. Při standardním nastavení zvukové stereo stopy zabera každá minuta přibližně 1 MB, u 5.1 prostorového zvuku to je 3x tolik. Nechte raději ještě několik MB rezervu. Žádná další nastavení kodeku neměňte a video opět uložte. Pokud jste používali plánování, máte už vše připraveno a můžete i klidně VD vypnout, pokud chcete komprimaci spustit později. Až budete chtít začít, spusťte opět VD, pokud jste jej vypli, a vyberte File -> Job control. Zobrazí se okno, které vidíme na posledním obrázku. Zde klepneme na Start a eventuálně i na OK, čímž dialog zavřeme. Pokud chceme sledovat průběh kódování, můžeme z menu VD zvolit Options -> Show status window. V tomto okně také můžeme změnit prioritu programu, což se občas může hodit.

VirtualDub - Job Control

Teď už nezbývá, než si počkat několik hodin. Pokud máte pomalý počítač, tak i dní. U běžného počítače s procesorem kolem 2 GHz by to ale nemělo trvat víc než 10 hodin. Záleží samozřejmě na nastavení kvality v kodeku a použitých filtrech.

Komprese zvuku

Pokud máme hotové video s novou kompresí obrazu, otevřeme jej ve VritualDubModu. Jestliže jsme nastavení zvukové stopy neměnili, bude nyní ve finálním videu stejná zvuková stopa jako ve zdrojovém souboru. Občas je nutné ale překomprimovat i zvuk, obzvlášť pro získání kompatibility se stolními přehrávači. Zde přichází v úvahu jediný široce porporovaný formát zvuku a to je MP3. Jakým způsobem vyexportovat zvuk pomocí VDM píši podrobně zde, takže postup pouze stručně shrnu. Otevřte nabídku Streams -> Stream list. Zde najdete seznam audio stop, které již v souboru jsou, většinou zde bude pouze jedna. Označím zvukovou stopu a tlačítkem Save WAV ji uložím. V klasickém VD použijte příkaz File -> Save WAV.

Úprava zvuku ve VDM

LameDropNyní použiju program LameDrop, který je velmi jednoduchým, ale kvalitním MP3 enkodérem. Po jeho spuštění se objeví okno s nápisem Drop Files Here. Klikněte na něj pravým tlačítkem myši a zvolte Encoding Options. Zde můžete nastavit parametry komprese. Nejčastější volbou asi bude Quality s nastavení 50. Pokud ale váš MP3 přehrávač nezvládá MP3 VBR, je nutné zvolit Bitrate 128 a Restrict encoder to Constant Bitrate. Toto nastavení zhorší kvalitu zvuku, ale je nutné kvůli kompatibilitě s některými přehrávači. Nejlepší je vyzkoušet si, jestli váš přehrávač MP3 VBR dokáže přehrát. Když nastavíme parametry enkodéru, potvrdíme volbu tlačítkem Accept a potom myší přetáhneme WAV soubor na okno programu LameDrop. Automaticky se spustí komprese a vytvoří nový MP3 soubor ve stejném adresáři, kde je původní WAV.

Pokud máme hotový zvuk ve formátu MP3, vrátíme se do VDM a menu Stream list. Zde označte původní zvukovou stopu a talčítkem Disable ji ve výstupu zakažte. Namísto toho přidejte (Add) vaši právě vytvořenou MP3. Pokud se jedná o MP3 VBR, zobrazí VDM dotaz o přepsání hlavičky na CBR. Odpovězte No, jinak dojde k desynchronizaci zvuku!!! Nyní talčítkem OK potvrďte změny zvukových stop a okno zavřete. Nastavte Video -> Direct Stream Copy, aby se obraz znovu nekomprimoval a uložte jej. Pokud potřebujete, můžete video rozdělit na více kusů, jak popisuje tento návod.




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