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

14.4. Enkódování pomocí kodeku `Xvid`
Předcházející | Kapitola 14. Enkódování s MEncoderem | Další

## 14.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.

### 14.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é.

### 14.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.

### 14.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.

| Simple | Advanced Simple | DivX
Název profilu | 0 | 1 | 2 | 3 | 0 | 1 | 2 | 3 | 4 | 5 | Handheld | Portable NTSC | Portable PAL | Home Theater NTSC | Home Theater PAL | HDTV
Šířka [pixely] | 176 | 176 | 352 | 352 | 176 | 176 | 352 | 352 | 352 | 720 | 176 | 352 | 352 | 720 | 720 | 1280
Výška [pixely] | 144 | 144 | 288 | 288 | 144 | 144 | 288 | 288 | 576 | 576 | 144 | 240 | 288 | 480 | 576 | 720
Snímková rychlost [fps] | 15 | 15 | 15 | 15 | 30 | 30 | 15 | 30 | 30 | 30 | 15 | 30 | 25 | 30 | 25 | 30
Max průměrný datový tok [kbps] | 64 | 64 | 128 | 384 | 128 | 128 | 384 | 768 | 3000 | 8000 | 537.6 | 4854 | 4854 | 4854 | 4854 | 9708.4
Nejvyšší průměrný datový tok za poslední 3 sekundy [kbps] |  |  |  |  |  |  |  |  |  |  | 800 | 8000 | 8000 | 8000 | 8000 | 16000
Max. B-snímků | 0 | 0 | 0 | 0 |  |  |  |  |  |  | 0 | 1 | 1 | 1 | 1 | 2
MPEG kvantizace |  |  |  |  | X | X | X | X | X | X |  |  |  |  |  |
Adaptivní kvantizace |  |  |  |  | X | X | X | X | X | X | X | X | X | X | X | X
Enkódování prokládaného |  |  |  |  | X | X | X | X | X | X |  |  |  | X | X | X
Čtvrtpixelová přesnost |  |  |  |  | X | X | X | X | X | X |  |  |  |  |  |
Globální kompenzace pohybu |  |  |  |  | X | X | X | X | X | X |  |  |  |  |  |

### 14.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.

Popis | Volby | Rychlost [fps] | Relativní ztráta PSNR [dB]
--- | --- | --- | ---
Velmi vysoká kvalita | `chroma_opt:vhq=4:bvhq=1:quant_type=mpeg` | 16 | 0
Vysoká kvalita | `vhq=2:bvhq=1:chroma_opt:quant_type=mpeg` | 18 | -0.1
Rychlé enkódování | `turbo:vhq=0` | 28 | -0.69
Enkódování v reálném čase | `turbo:nochroma_me:notrellis:max_bframes=0:vhq=0` | 38 | -1.48

Předcházející | Nahoru | Další
14.3. Enkódování s rodinou kodeků `libavcodec` | Domů | 14.5. Enkódování `x264` kodekem