Naposled aktualizováno 10. 01. 2011.

Avisynth


1,3 MB
OS:
Windows 95 a výš
Licence:
OpenSource - GPL
Nutná instalace?
ANO

Avisynth je opensource (free) program sloužící ke zpracování videa. Je to vlastně jediný program svého typu a co do možností a kvality nemá v oblasti úprav zvuku a obrazu téměř konkurenci. Jeho asi nejdůležitější vlastností je podpora čtení téměř všech existujících video souborů. AviSynth načte bez problémů AVI, ASF (WMV), OGM, MKV, MP4, FLV (Flash Video) nebo RM (RealMedia), pokud jsou nainstalované splittery a dekodery potřebné pro přehrávání. Za pomoci externích filtrů (pluginů) potom načte AviSynth i formáty VOB, VRO, MPG, TS, MOV (QuickTime). Na straně výstupu pak lze z AviSynthu získat za pomoci programů VirtualDub, MeGUI, QuEnc, HC, WMNicEnc a dalších videa ve fromátech MPEG-1, MPEG-2, MPEG-4 (AVI, MP4, MKV), VC-1, WMV a další. Je proto základem jakékoliv kvalitní konverze video formátů.

Avisynth také umí video při konverzi upravovat. Obsahuje mnoho interních filtrů pro základní operace jako jsou střih, ladění barev, jasu a kontrastu, změna rozlišení nebo rychlosti, rozdělení videa na půlsnímky nebo naopak jejich spojení a mnoho dalších úprav. Kromě toho existuje plno přídavných filtrů, které se dají, většinou také zdarma, stáhnout a umožňují například potlačení šumu, deinterlace nebo titulkování. Avisynth umí i základní operace se zvukem, například zrychlení a zpomalení, změnu samplovací frekvence a rozlišení nebo zesílení. Téměř všechny filtry jsou velmi kvalitní a dosahují většinou lepších výsledků než drahé poloprofesionální programy. Já jsem sestavil kolekci nejdůležitějších filtrů, kterou si můžete stáhnout přímo z mých stránek. K rozbalení budete potřebovat program 7-zip.

Na svých stránkách používám AviSynth v mnoha návodech na konverzi a úpravu videa. V některých postupech, jako například konverze z AVI na DVD nebo DV AVI na DVD, se bez AviSynthu vůbec neobejdete. Vhod přije i při použití kodeku x264 pro kompresi do formátu MPEG-4 AVC (H.264). Také si bez něj těžko poradíte při odstraňování prokládání. V jiných případech, jako například koverze DVD na AVI urychlí a zkvalitní konverzi oproti postupu využívajícím pouze VirtualDubMod. AviSynth také pomůže s úpravou zvuku při převodu videa na DVD, jak ukazuje tento návod.

Už tedy víme, co všechno AviSynth umí, ale ještě nevíme jak ho vlastně používat. První otázka většiny lidí je: "Nainstaloval jsem si AviSynth, ale nevím, jak ho spustit". AviSynth se totiž nespouští, je to FrameServer. To znamená, že na pozadí načte nějaké vstupní video, zpracuje jej a předkládá dalším programům svůj výstup nekomprimovaně. Výstup AviSynthu můžete buďto rovnou přehrávat a nebo zkomprimovat pomocí vhodného programu. Když se ale AviSynth nijak nespouští, jak se tedy ovládá? Pomocí textového skriptu. Napíšete textový soubor s příkazy (tzv. skript) a při jeho otevření začne AviSynth automaticky pracovat na pozadí zpracovávat video dle vašich příkazů. Další rafinovanou vlastností těchto skriptů je to, že jsou to vlastně multimediální soubory. Dají se přehrávat v téměř libovolném přehrávači nebo otevřít v programech pro zpracování videa, jako by to bylo avíčko. Ovládání pomocí textových skriptů má ale jednu nevýhodu - je třeba seznámit se dobře s parametry různých filtrů a správně je ve skriptu zapsat. Naštěstí je možné vytvořený skript okamžitě zobrazit v téměř jakémkoliv video přehrávači nebo editoru (doporučuji VirtualDub) a zkontrolovat, jestli výsledek odpovídá tomu, co jsme zamýšleli. K celému programu nebo jednotlivým filtrům existuje velice dobrá dokumentace, ale bohužel pouze v angličtině.

Jak si jistě po chvíli užívání AviSynthu všimnete, každý jeho filtr pracuje s jiným kódováním barev a jinou verzí Avisynthu. Prakticky nyní existují dvě paralelní verze: stará a dnes již nepoužívaná 2.0.x a novější 2.5.x. Tyto verze nejsou zcela kompatibilní. Proto nelze použít filtr určený pro jednu z nich ve druhé. Největší novinkou verze 2.5 je podpora kódování barev YV12 (použivá jej DV, DVD, XviD atd.) Většina filtrů původně vytvořených pro Avisynth 2.0 má už i klon fungující ve verzi 2.5 s podporou YV12 a YUY2. Další podporované kódování je RGB24 nebo RGB32. Video v tomto kódování většinou dostanete, když zachytáváte pomocí TV karty (záleží na nastavení programu). Video získané z DVD bude zase ve formátu YV12. Pokud tedy vybíráte ten správný filtr, zvlote nejlépe takový, který podporuje stejné kódování jako má Vaše video. Mezi formáty barev se dá konvertovat příkazy typu ConvertToYV12() nebo ConvertToYUY2() a podobně. Samozřejmě je ale dobré se těmto konverzím pokud možno vyhnout nebo je alespoň minimalizovat. V 99%případů použijte pro výstup režim YV12(). Více se o kódování barev můžete dozvědět třeba tady. Není nutné formátům kódování barev rozumět, je ale nutné vědět, že existují.

Další otázkou je, jak AVS skript napsat. K tomu nám poslouží libovolný plain-textový editor (ne Word!). Použít lze buďto Poznámkový blok (Notepad), který je součástí Windows nebo výborný český editor PSPad. Každý skript Avisynthu musí nejdříve obsahovat příkaz(y) k načtení použitých filtrů (pokud jsou umístěné ve standardním adresáři filtrů, není to nutné, budou načtené automatikcy). Na dalším řádku poté můžeme načíst nějaký video soubor. Tím může být video typu AVI, MPEG nebo jakýkoliv jiný formát podporovný nainstalovanými DirectShow filtry nebo filtry AviSynthu. Zbytek skriptu již zcela závisí na našich požadavcích. Podle mého bude nejlepší ukázat vše na nějakém skriptu a postupně jej rozebrat.

LoadPlugin("c:\Program Files\Avisynth\plugins\VagueDenoiser.dll")
LoadPlugin("c:\Program Files\Avisynth\plugins\DGBob.dll")
DirectShowSource("video.mkv")++DirectShowSource("video2.mkv")
Crop(4,20,-4,-20)
Trim(2000,2500)++Trim(3000,3500)
ConvertToYV12()
DGBob(order=0,mode=2,thresh=12)
VagueDenoiser(threshold=4,method=1,nsteps=6,chroma=true,interlaced=false)
BilinearResize(400,300)
Tweak(hue=10,sat=5,bright=-20,cont=2)
Subtitle("Titulek",x=150,y=150,first_frame=300,last_frame=700,size=80)
AssumeFPS(15)

V tomto případě se nejdříve načtou filtry VagueDenoiser (potlačení šumu) a DgBob (deinterlace). Na třetí řádce se načítají hned dva klipy ve formátu MKV (matroška). Samozřejmě musím mít nainstalované DS filtry pro daný formát. Klipy se spojí za sebe do jednoho, proto je nutné aby měly zcela stejné parametry. Nejčastějším problémem bývá rozdílná snímková frekvence, ale to se dá lehce napravit pomocí VirtualDubu. Zádrhel je ale v tom, že touto úpravou může dojít k desynchronizaci zvuku. O problému pojednává 2. díl návodu na nahrávání pomocí TV karty.

Další řádek říká, že video se má oříznout a to 4 pixely po stranách a 20 pixelů nahoře a dole. Hodně zajímavý je následující příkaz, kde pomocí filtru Trim vyříznu z videa pouze snímky 2000-2500 a spojím je se snímky 3000-3500. Zbytek zahodím a z celého videa mi zbyde pouze 1002 snímků. Tento filtr se hodí například pro vystřižení reklam z nahraného videa. Místa kde stříhat (čísla snímků) zjistíme snadno pomocí VirtualDubu. Další řádek převede video do kódování barev YV12 a potom přijde na řadu filtr DGBob, který odstraní prokládání. Navíc to udělá tak, že výsledný klip je 2x pomalejší než originál. Zdvojnásobí totiž počet snímků, ale nezmění snímkovou frekvenci (udává to parametr mode=2). Na další řádce použiji filtr na odstranění šumu s poměrně silným rozmazáním (threshold=4). Poté změním rozlišení na 400x300 metodou přepočítání Bilinear. Následně upravím barvu blíž k teplým tónům, zvýším sytost, snížím jas a přidám kontrast. To vše zařídí filtr Tweak. Poslední filtr přidá do videa titulek, který bude zobrazen pšes snímky číslo 300-700. Na závěr ještě změním snímkovou frekvenci na 15 fps.

V tomto skriptu jsem použil pravděpodobně všechny typy filtrů, které budete při běžném používání potřebovat. Rozebírat podrobně jejich všechny parametry podle mě nemá smysl, najdete je v dokumentaci. Ještě by bylo vhodné dodat, že AviSynth dokáže zpracovat i zvuk, ale já bych k tomuto účelu raději použil specializovaný program. Samozřejmě pokud video stříháte, je vhodné stříhat zvuk současně s obrazem. Pro další úpravy bych ale zvuk uložil do WAV souboru a zpracoval samostatně. Ke skriptu ještě řeknu pár slov o pořadí filtrů. Je zcela logické, že filtr Crop použiju jako první. Proč bych zpracovával části obrazu, které nakonec stejně oříznu? Konverzi kódování barev do YV12 zařazuji úmyslně co nejvýš, protože v tomto režimu pracuje většina filtrů nejrychleji. Filtr pro odstranění prokládání musí být každopádně před změnou rozlišení a přidáním titulků, ale jeho umístění vůči například ladění barev nebo polačení šumu je sporné. Záleží na konkrétní situaci a kvalitě zdroje. Resize dávám až téměř na konec, protože tím zvýším kvalitu výsledného videa. Na druhou stranu je jasné, že zpracování zabere víc času. Co se zbytku týká, záleží již pouze na Vašem uvážení. Na závěr shrnu tedy ještě jednou pořadí filtrů, protože je to opravdu důležité.

  • 1) Oříznutí - trim, crop
  • 2) Deinterlace
  • 3) Potlačení šumu
  • 4) Resize

Zbylé filtry již můžu zařadit podle svého uvážení. Je nutné brát v potaz například to, že nevhodně použitá úprava jasu, kontrastu a barev může ztížit práci filtrům pro deinterlace nebo odšumění. Jiná korekce ale může těmto filtrům naopak pomoci. Proto je těžké ultimativně říci, který z filtrů (tweak, denoiser) by měl být první. Nejlepší je vyzkoušet několik variant a rozhodnout se podle výsledku.

Protože zapisování takovéhoto skriptu není určitě žádná slast, existuje několik grafických programů, které s jeho generováním pomohou. Vygenerovaný skript je samozřejmě možné kdykoliv následně ručně upravit. Za vyzkoušení stojí například AvsP a AVSGenie. Jsem ale přesvědčený, že naprostou většinu úkolů zvládnete jednoduchou úpravou ukázkového skriptu. Pokud naopak zabřednete do AviSynthu hlouběji, zjistíte, že to je plnohodnotný NLE (nelineární) editor, v kterém můžete míchat různá videa, nastavovat jim průsvitnost, klíčovat, vytvářet přechodové efekty atd. Možnosti jsou téměř neomezené.

Na závěr ještě doplním několik užitečných odkazů. Seznam téměř všech dostupných filtrů najdete tady nebo tady. Určitě si vyberete ten pravý.

Další šikovný plugin je QTReader, který umožní načíst QuickTime (.MOV) video v AviSynthu. Samozřejmě je nutné mít nainstalované potřebné kodeky, které získáte buďto instalací originálního QuickTime přehrávače nebo lepšího QuickTime Alternativ. Video potom načtete následujícím skriptem:

LoadVFAPIPlugin("C:\Program Files\Avisynth\plugins\QTReader.vfp", "QTReader")
QTReader("video.mov")

Pokud Vám tento plugin nefunguje, můžete zkusit alternativní QTSource. Skript by potom vypadal takto:

LoadPlugin("C:\Program Files\Avisynth\plugins\QTSource.dll")
QTInput("video.mov",audio=true)

Poslední možností jak načíst QuickTime video, je použít například Gabestův MP4/MOV splitter a FFDShow dekodery. Pokud to je MOV se standardní MPEG-4 kompresí, měl by jít takto také načíst. AviSynth skrit by byl potom úplně jednoduchý:

DirectShowSource("video.mov")

Pro konverzi .RM (RealMedia) formátu by mělo stačit nainstalovat opět buďto originální RealPlayer nebo lépe Real Alternative a AviSynth by měl být schopný načíst video pomocí DirectShowSource (viz. výše). Stejným způsobem je možné načíst libovolné video, pro které máte nainstalované DirectShow filtry (dekodery a splitter). Mezi formáty, které lze takto načíst patří například ASF/WMV, již zmíněný MP4, OGM, OGG, MKV, AVI nebo i Flash Video za pomoci Gabestova FLV filtru. Zde je ještě nutné zadat správnou snímkovou frekvenci, takže by skript vypadal třeba takto:

DirectShowSource("video.flv",fps=29.97)

Ještě se na závěr zmíním o formátu AVI, pro který lze kromě DirectShowSource použít ještě také vhodnější AVISource. Potom ale potřebujete k načtení videa nainstalované VfW kodeky. Rozdíly mezi systémy DirectShow a VfW najdete popsané zde. Posledními používanými formáty, které jsem zatím nezmínil, jsou MPEG-1 a MPEG-2. Opět by mělo jít použít DirectShowSource, ale vhodnější bude použít výborný DGMPGDec. Podrobnosti k jeho využití najdete v 2. díle návodu na ripování DVD. Takže prozatím je to vše. Přeji veselou, kreativní a bezproblémovou editaci.




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