Az Xvid
egy szabad függvénykönyvtár
MPEG-4 ASP videó stream-ek elkódolásához.
A kódolás megkezdése előtt be kell állítanod
a MEncoderben a támogatását.
Ez a leírás főként hasonló információkat szeretne nyújtani, mint az x264 kódolási leírás. Ezért, kérlek kezdd azzal, hogy elolvasod azon leírásnak az első részét.
Kezdésként nézd át az
MPlayer man oldalának
Xvid
részét!
Ez a rész csak a man oldal kiegészítéseként használható.
Az Xvid alapértelmezett beállításai egyensúlyt teremtenek a sebesség és a minőség között, így nyugodtan használhatod azokat, ha a következő rész túl zavarosnak tűnik.
vhq Ez a beállítás a makroblokk döntési algoritmust érinti, minél nagyobb a beállítás, annál okosabb a döntés. Az alapértelmezett érték bátran használható minden kódoláshoz, míg a nagyobb értékek segítik a PSNR-t de jelentősen lassabbak. Kérlek vedd figyelembe, hogy a jobb PSNR nem feltétlenül jelenti azt, hogy a kép jobban fog kinézni, de közelebb lesz az eredetihez. A kikapcsolása észrevehetően felgyorsítja a kódolást; ha a sebesség kritikus számodra, megéri a cserét.
bvhq Ez ugyan azt csinálja, mint a vhq, de a B-kockákon. Elhanyagolható a hatása a sebességre és kismértékben javít a minőségen (+0.1dB PSNR körül).
max_bframes Az egymás után engedélyezett több B-kocka általában javítja a tömöríthetőséget, de több blokkosodási mellékhatást okoz. Az alapértelmezett beállítás jó kompromisszum a tömöríthetőség és a minőség között, de növelheted 3-ig ha ki vagy éhezve a bitrátára. Csökkentheted 1-re vagy 0-ra ha a tökéletes minőséget céloztad meg, de ekkor biztosan tudnod kell, hogy a forrásod bitrátája elég nagy ahhoz, hogy a kódolónak nem kell növelni a kvantálást, hogy elére ezt.
bf_threshold
Ez a kódoló B-kocka érzékenységét szabályozza, a nagyobb érték hatására
több B-kockát használ (és fordítva).
Ez a beállítás a max_bframes
-szel együtt használható;
ha bitráta éhségben szenvedsz, növelned kell mind a
max_bframes
, mind a bf_threshold
értékét, míg ha növeled a max_bframes
-t és csökkented
a bf_threshold
-ot, akkor a kódoló több B-kockát fog
használni, de csak azokon a helyeken, ahol
tényleg szükséges.
A max_bframes
alacsony értéke és a
bf_threshold
magas értéke nem túl bölcs döntés,
mert ez arra kényszeríti a kódolót, hogy olyan helyekre is tegyen
B-kockát, ahol nincs rájuk szükség, így csökkenti a vizuális
minőséget. De ha kompatibilis akarsz maradni az egyedi lejátszókkal,
amik csak a régi DivX profilokat támogatják (amik csak legfeljebb
1 B-kockát támogatnak sorban), ez az egyetlen lehetőséged a
tömöríthetőség növelésére a B-kockák használatával.
trellis
Optimalizálja a kvantálási eljárást, hogy optimális arányt találjon
a PSNR és a bitráta között, ami jelentős bitmegtakarítást engedélyez.
Cserébe ezek a bitek a videóban máshol kerülnek felhasználásra,
növelve az össz minőséget.
Mindig ajánlott bekapcsolva hagyni, mert jelentősen befolyásolja a
minőséget. Még ha neked a sebesség számít, akkor is ne kapcsold ki,
amíg nem kapcsoltad ki a vhq
-t és a többi CPU-éhes
opciót nem állítottad a minimumra.
hq_ac Bekapcsol egy jobb együttható kölcségbecslő módszert, ami kissé csökkenti a fájl méretet, kb. 0,15-0,19% között (ami kevesebb, mint 0,01dB-es PSNR növekedésnek felel meg), miközben jelentéktelen hatása van a sebességre. Ezért ajánlott mindig bekapcsolva hagyni.
cartoon A rajzfilm tartalom jobb kódolására lett kitalálva és nincs hatása a sebességre, mivel csak a döntési heurisztikát tuningolja az ilyen típusú tartalomnál.
me_quality
Ez a beállítás a mozgás előrejelzés pontosságát vezérli.
Minél nagyobb a me_quality
érték, annál
pontosabb lesz az eredeti mozgás előrejelzése és minél pontosabb
ez, annál jobban közelíti majd az eredmény az eredeti mozgást.
Az alapértelmezett érték jó a legtöbb esetben; így nem javasolt a változtatása, csak ha tényleg a sebesség számít, mivel minden a mozgás becslésével megmentett bit másra lesz felhasználva, növelve az össz minőséget. Ezért ne menj 5 alá és ezt is csak végszükség esetén állítsd be.
chroma_me
Javítja a mozgás előrejelzést úgy, hogy a számításba beleveszi
a chroma (szín) információkat is, míg a me_quality
csak a luma-t (grayscale) használja.
Ez 5-10%-kal lassítja a kódolást, de eléggé javítja a vizuális
minőséget a blokkosodási effektusok csökkentésével és csökkenti
a fájl méretet kb. 1,3%-kal.
Ha a sebesség érdekel, kapcsold ki ezt az opciót, mielőtt
elkezdenél töprengeni a me_quality
csökkentésén.
chroma_opt A chroma képek minőségének javítása a célja az egyszerű fehér/fekete sarkoknál a tömörítés javítása helyett. Ezzel csökkentheted a "red stairs" effektust.
lumi_mask Megpróbál kevesebb bitrátát adni a kép azon részeinek, amiket az emberi szem nem lát olyan jól, így a kódolónak lehetősége van a megspórolt biteket a kép sokkal fontosabb részeinél felhasználni. Ezen opció nyeresége a kódolás minőségének szempontjából erősen függ az egyéni beállításoktól és a megtekintéshez használt monitor típusától és beállításaitól (tipikusan egy világosabb vagy TFT monitoron nem fog olyan jól kinézni).
qpel
Növeli a várható mozgásvektorok számát a mozgás előrejelzés
pontosságának növelésével halfpel-ről quarterpel-re.
Az ötlet annyi, hogy a jobb mozgásvektorokért cserébe csökken a
bitráta (ezért nő a minőség).
Habár a quarterpel pontosságú mozgásvektorok kódolásához egy kicsivel
több bit kell, a várható vektorok nem mindig adnak (sokkal) jobb
minőséget.
Elég gyakran a codec még mindig biteket biztosít az extra
pontossághoz, de csak kicsi vagy semmilyen minőségi nyereség nincs
cserében.
Sajnos, nem lehet előre megmondani a qpel
lehetséges
nyereségeit, így kódolnod kell vele is és nélküle is, hogy biztosan
tudd.
A qpel
majdnem dupla kódolási időt jelent és 25%-kal
több feldolgozási erőforrást igényel a dekódolása. Nem minden
asztali lejátszó támogatja.
gmc
Biteket próbál megspórolni bizonyos jeleneteknél úgy, hogy
egy mozgásvektort használ az egész kockához.
Ez majdnem mindig növeli a PSNR-t, de jelentősen lelassítja
a kódolást (és a dekódolást is).
Ezért csak akkor ajánlott használnod, ha a vhq
a maximumra állítottad.
Az Xvid
GMC-je sokkal
kifinomultabb, mint a DivX-é, de csak kevés lejátszó támogatja.
Az Xvid támogatja a kódolási profilokat a profile
opción
keresztül, amivel az XVid videó folyam tulajdonságaiban olyan
megszorításokat lehet előírni, amikkel az lejátszható marad az összes
eszközön, ami támogatja a választott profilt.
A megkötések a felbontásra, a bitrátára és bizonyos MPEG-4-es funkciókra
vonatkoznak.
A következő táblázat megmutatja, hogy melyik profil mit támogat.
Szimpla | Fejlett szimpla | DivX | ||||||||||||||
Profil neve | 0 | 1 | 2 | 3 | 0 | 1 | 2 | 3 | 4 | 5 | Handheld | Hordozható NTSC | Hordozható PAL | NTSC házimozi | PAL házimozi | HDTV |
Szélesség [pixelben] | 176 | 176 | 352 | 352 | 176 | 176 | 352 | 352 | 352 | 720 | 176 | 352 | 352 | 720 | 720 | 1280 |
Magasság [pixelben] | 144 | 144 | 288 | 288 | 144 | 144 | 288 | 288 | 576 | 576 | 144 | 240 | 288 | 480 | 576 | 720 |
Frame ráta [fps] | 15 | 15 | 15 | 15 | 30 | 30 | 15 | 30 | 30 | 30 | 15 | 30 | 25 | 30 | 25 | 30 |
Max átlagos bitráta [kbps] | 64 | 64 | 128 | 384 | 128 | 128 | 384 | 768 | 3000 | 8000 | 537.6 | 4854 | 4854 | 4854 | 4854 | 9708.4 |
Átlagos csúcs bitráta 3 mp-n keresztül [kbps] | 800 | 8000 | 8000 | 8000 | 8000 | 16000 | ||||||||||
Max. B-frame | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 2 | ||||||
MPEG kvantálás | X | X | X | X | X | X | ||||||||||
Adaptív kvantálás | X | X | X | X | X | X | X | X | X | X | X | X | ||||
Átlapolt kódolás | X | X | X | X | X | X | X | X | X | |||||||
Quarterpixel | X | X | X | X | X | X | ||||||||||
Globális mozgás-kompenzáció | X | X | X | X | X | X |
A következő beállítások példák különböző kódolási opciók kombinációjára, amik a sebesség vs minőség kérdést döntően befolyásolják ugyanazon cél bitráta mellett.
Az összes kódolási beállítást egy 720x448 @30000/1001 fps-es példa videón teszteltük, a cél bitráta 900kbps volt, a gép pedig egy AMD-64 3400+ 2400 MHz-en 64 bites módban. Mindegyik kódolási beállítás tartalmazza a kódolási sebességet (képkocka per másodpercben) és a PSNR veszteséget (dB-ben) a "nagyon jó minőséghez" viszonyítva. Kérlek vedd figyelembe, hogy a forrásanyagodtól, a géped típusától és a fejlesztésektől függően különböző eredményeket kaphatsz.
Leírás | Kódolási opciók | sebesség (fps-ben) | Relatív PSNR veszteség (dB-ben) |
---|---|---|---|
Nagyon jó minőség | chroma_opt:vhq=4:bvhq=1:quant_type=mpeg | 16fps | 0dB |
Jó minőség | vhq=2:bvhq=1:chroma_opt:quant_type=mpeg | 18fps | -0.1dB |
Gyors | turbo:vhq=0 | 28fps | -0.69dB |
Valós idejű | turbo:nochroma_me:notrellis:max_bframes=0:vhq=0 | 38fps | -1.48dB |