7.4. Enkódování pomocí kodeku Xvid

Xvid je svobodná knihovna pro enkódování MPEG-4 ASP video datových proudů. Před začátkem enkódování budete muset nastavit MEncoder pro její podporu.

Tato příručka se zaměřuje na poskytování stejného druhu informací jako příručka enkódování s x264. Takže prosím začněte přečtením první části této příručky.

7.4.1. Jaké volby by měly být použity, abychom dosáhli nejlepších výsledků?

Začněte prosím pročtením sekce Xvid v manuálové stránce MPlayeru. Tato část má být doplněním man stránky.

Výchozí nastavení Xvid jsou dobrým kompromisem mezi rychlostí a kvalitou, takže je můžete bez obav použít, pokud vám nebude něco v dalším textu jasné.

7.4.2. Volby pro enkódování s Xvid

  • vhq Tato volba ovlivní rozhodovací algoritmus makrobloku, kde vyšší nastavení znamená lepší rozhodování. Výchozí nastavení mohou být bezpečně použita pro každé enkódování, zatímco vyšší nastavení vždy pomohou PSNR, ale je znatelně pomalejší. Poznamenejme, že lepší PSNR nemusí nutně znamenat, že bude obraz vypadat lépe, ale udává, že je blíže originálu. Vypnutí této volby viditelně zrychlí enkódování; pokud je pro vás rychlost kritická, pak to stojí za to.

  • bvhq Tato volba provádí to samé co vhq, ale v B-snímcích. Má zanedbatelný vliv na rychlost a trochu vylepšuje kvalitu (kolem +0.1dB PSNR).

  • max_bframes Větší počet povolených po sobě jdoucích B-snímků obvykle zvyšuje komprimovatelnost, ačkoli to může vést k většímu počtu blokových artefaktů. Výchozí nastavení je dobrým kompromisem mezi komprimovatelností a kvalitou, ale můžete ji zvýšit nad 3, pokud toužíte po nízkém datovém toku. Můžete ji rovněž snížit na 1 nebo 0, pokud vám jde o perfektní kvalitu, ale v tom případě byste se měli ujistit, že máte nastaven dostatečně vysoký datový tok, aby byla jistota, že komrimátor nebude zvyšovat kvantizer, aby jej dosáhl.

  • bf_threshold Tato volba ovládá B-snímkovou citlivost enkodéru, kdy vyšší hodnota vede k častějšímu použití B-snímků (a naopak). Má být použita spolu s max_bframes; pokud jste blázen do datového toku, měli byste zvýšit jak max_bframes, tak bf_threshold, nebo naopak můžete zvýšit max_bframes a snížit bf_threshold, takže bude enkodér používat více B-snímků pouze na místech, které je opravdu potřebují. Nízká hodnota max_bframes a vysoká bf_threshold asi není nejrozumnější volbou, jelikož přinutí enkodér umísťovat B-snímky na místa, které z nich nebudou těžit, ale sníží se jejich vizuální kvalita. Pokud však potřebujete být kompatibilní s domácími přehrávači, které podporují pouze staré DivX profily (ty podporují pouze 1 po sobě jdoucí B-snímek), je to vaše jediná cesta ke zvýšení komprimovatelnosti pomocí B-snímků.

  • trellis Optimalizuje proces kvantizace pro dosažení nejlepšího kompromisu mezi PSNR a datovým tokem, což umožňuje znatelnou úsporu bitů. Ušetřené bity budou využity v jiných částech videa, což zvýší celkovou vizuální kvalitu. Měli byste ji vždy mít zapnutou, jelikož její kvalitativní přínos je značný. Dokonce i když potřebujete vyšší rychlost, nevypínejte ji, dokud jste nevypli vhq a nezredukovali ostatní volby náročné na CPU na minimum.

  • hq_ac Aktivuje metodu odhadu s menšími náklady na koeficienty, což trochu zmenší výstupní soubor (okolo 0,15 až 0,19%, což odpovídá zvýšení PSNR o méně než 0.01dB) při zanedbatelném vlivu na rychlost. Je proto doporučeno ponechat ji vždy zapnutou.

  • cartoon Volba navržená pro lepší enkódování kresleného obsahu. Nemá vliv na rychlost, pouze doladí heuristiku pro výběr režimu pro tento druh obsahu.

  • me_quality Tato volba ovládá přesnost vyhledávání pohybu. Čím vyšší me_quality, tím bude přesnější odhad původního pohybu a výsledný snímek přesněji zachytí originální pohyb.

    Výchozí nastavení je nejlepší ve všech případech; takže ji nedoporučujeme vypínat, pokud nepotřebujete za každou cenu zvýšit rychlost, jelikož všechny bity ušetřené dobrým odhadem pohybu mohou být použity jinde a zvýšit tak celkovou kvalitu. Každopádně nechoďte níž než na 5, a když, tak jen jako poslední možnost.

  • chroma_me Zlepšuje odhad pohybu tím, že bere v potaz i chroma (barevnou) informaci, zatímco samotné me_quality používá pouze černobílou (luma). To spomalí enkódování o 5-10%, ale docela vylepší vizuální kvalitu omezením blokových artefaktů a zmenší velikost souboru asi o 1.3%. Pokud vám jde hlavně o rychlost, měli byste tuto volbu vypnout dříve, než začnete snižovat me_quality.

  • chroma_opt Je určena spíše ke zvýšení kvality barev a vyčištění bílých/černých okrajů, než k vylepšení koprimovatelnosti. To vám může pomoci omezit "red stairs" efekt.

  • lumi_mask Zkouší přiřadit nižší datový tok částem obrázku, které lidské oko dobře nevidí, což umožní enkodéru použít ušetřené bity na důležitějších místech obrázku. Kvalita výsledku značně závisí na osobních preferencích a na typu a nastavení monitoru použitého pro prohlížení (typicky to nebude vypadat dobře pokud je jasný, nebo je to TFT monitor).

  • qpel Zvýší počet možných vektorů pohybu zvýšením přesnosti vyhledávání pohybu z poloviny pixelu na čtvrtinu pixelu. Ideou je nalezení lepších vektorů pohybu, které naoplátku sníží datový tok (což zvýší kvalitu). Vektory pohybu s přesností na čtvrt pixelu však vyžadují pro sebe pár bitů navíc a výsledné vektory ne vždy dávají (o mnoho) lepší výsledky. Docela často vydá kodek bity na vyšší přesnost, ale dosáhne jen malého nebo žádného zvýšení kvality. Naneštěstí není způsob jak zjistit možný zisk qpel předem, takže musíte enkódovat s a bez ní, abyste měli jistotu.

    qpel může až zdvojnásobit čas enkódování a vyžaduje až o 25% více výpočetního výkonu pro dekódování. Volba není podporována všemi stolními přehrávači.

  • gmc Pokouší se ušetřit bity v panoramatických scénách použitím jediného vektoru pohybu pro celý snímek. To téměř vždy zvýší PSNR, ale znatelně zpomalí enkódování (stejně jako dekódování). V každém případě byste ji měli používat pouze pokud máte vhq nastavené na maximum. GMC v Xvid je mnohem sofistikovanější než v DivX, ale je podporována jen několika stolními přehrávači.

7.4.3. Enkódovací profily

Xvid podporuje enkódovací profily pomocí volby profile, což je využíváno pro k zařazení omezení nastavení Xvid videoproudu tak, aby byl přehratelný na všem, co podporuje vybraný profil. Omezení se vstahují k rozlišením, datovému toku a různým MPEG-4 vlastnostem. Následující tabulka ukazuje, co který profil podporuje.

 SimpleAdvanced SimpleDivX
Název profilu0123012345HandheldPortable NTSCPortable PALHome Theater NTSCHome Theater PALHDTV
Šířka [pixely]1761763523521761763523523527201763523527207201280
Výška [pixely]144144288288144144288288576576144240288480576720
Snímková rychlost [fps]15151515303015303030153025302530
Max průměrný datový tok [kbps]646412838412812838476830008000537.648544854485448549708.4
Nejvyšší průměrný datový tok za poslední 3 sekundy [kbps]          800800080008000800016000
Max. B-snímků0000      011112
MPEG kvantizace    XXXXXX      
Adaptivní kvantizace    XXXXXXXXXXXX
Enkódování prokládaného    XXXXXX   XXX
Čtvrtpixelová přesnost    XXXXXX      
Globální kompenzace pohybu    XXXXXX      

7.4.4. Příklady nastavení enkódování

Následující nastavení jsou příklady nastavení různých kombinací voleb enkodéru, které ovlivňují poměr rychlost versus kvalita při shodném cílovém datovém toku.

Veškerá nastavení byla testována na video vzorku 720x448 @30000/1001 snímků za sekundu, cílový datový tok byl 900kbps a prováděly se na AMD-64 3400+ při 2400 MHz v režimu 64 bitů. Každá kombinace nastavení má uvedenu změřenou rychlost enkódování (ve snímcích za sekundu) a ztrátu PSNR (v dB) oproti nastavení "velmi vysoká kvalita". Rozumějte však že, v závislosti na vašem zdrojovém materiálu, typu počítače a pokrokům ve vývoji, můžete dospět k velmi odlišným výsledkům.

PopisVolbyRychlost [fps]Relativní ztráta PSNR [dB]
Velmi vysoká kvalitachroma_opt:vhq=4:bvhq=1:quant_type=mpeg160
Vysoká kvalitavhq=2:bvhq=1:chroma_opt:quant_type=mpeg18-0.1
Rychlé enkódováníturbo:vhq=028-0.69
Enkódování v reálném časeturbo:nochroma_me:notrellis:max_bframes=0:vhq=038-1.48