Nandub SBC Guide CZ - I

by ajislav

Krßtk² ┌vod

Nandub je nßstroj pro vytvß°enφ vysoce kvalitnφch AVI soubor∙ pomocφ DivX kodeku a z tohoto d∙vodu se rychle stßvß populßrnφ nejen pro vytvß°enφ kvalitnφch zßlo╛nφch kopii DVDΦek, ale i pro ·Φely komprimace digitßlnφho videa obecn∞. Tento nßvod si neklade za cφle vysv∞tlit v Φe╣tin∞ v╣echny Φßsti procesu zßlohovßnφ DVDΦek, ale pouze Φßsti p°φmo spojenΘ s Nandubem (tzn. neΦekejte prosφm detailnφ vysv∞tlivky jak pou╛φvat DVD2Avi Φi VFAPI).
Tomu, kdo sp∞chß (anebo je lφn² si tento nßvod po°ßdn∞ p°eΦφst), doporuΦuji dßle nepokraΦovat a vrßtit se k Flasku. Ostatnφ jsou zvßni k d∙kladnΘmu p°eΦtenφ souboru README.DOC (v Nandub adresß°i), p°eΦtenφ nßvod∙ na nφ╛e uveden²ch odkazech, d∙kladnΘmu p°eΦtenφ tohoto nßvodu a vyzkou╣enφ si vlivu jednotliv²ch nastavenφ na n∞jakΘm krßtkΘm klipu.


Dlouh² ┌vod

Intro

Nandub je nßstroj pro vytvß°enφ vysoce kvalitnφch AVI soubor∙ pomocφ DivX kodeku. Vyvinul jej Nando (aka vV_nn) z partiΦky, kterß si °φkß VcdVault (#vcdvault na DalNetu, odkud se dß pom∞rn∞ hodn∞ zajφmav²ch v∞cφ stßhnout) a kterß se krom∞ krom∞ klasickΘho ripovßni DVD, VCD a film∙ obecn∞ sna╛φ o dosa╛enφ maximßlnφ kvality sv²ch releas∙ (odtud pramenφ vechny jejich *DUPE* a *PROPER* releasy). V souΦasnΘ dob∞ je Nandub postaven na GPL k≤du genißlnφho editovacφho programu od Avery Leeho VirtualDubu (http://www186.pair.com/vdub/).
V dob∞ psanφ tohoto nßvodu je poslednφ aktußlnφ verzφ verze 1.0rc.

Kde ho najit

Nßvody

TΘ╛ mi musφte prominout obΦasn² anglicky slang, proto╛e se jednak u╛ pßr m∞sφc∙ pohybuji v Φist∞ anglickΘm prost°edφ a za druhΘ nemajφ n∞kterΘ v²razy odpovφdajφcφ slova v Φe╣tin∞.

Zßkladnφ definice

Rozhodl jsem se p°idat nßsledujφcφ sekci ze dvou d∙vod∙ - jednak obΦas zam∞≥uji (mne bli╛╣φ) anglickΘ termφny s (ne nutnΘ srozumiteln∞j╣φmi) Φesk²mi termφny, a za druhΘ mßm pocit, ╛e je t°eba objasnit n∞kterΘ zßkladnφ termφny digitßlnφho videa:

Compression = komprese
Algoritmus/metoda kterak data, kterß zabφrajφ hodn∞ mφsta, vm∞stnat do mφsta men╣φho. Rozli╣ujeme kompresnφ metody bezztrßtovΘ (v╣echny .ZIPy . RARy apod. Φi nap°. videokodek HUFFYUV), kterΘ po encoding a nßslednΘm decoding vydajφ naprosto stejnß data jako na zaΦßtku, a kompresnφ metody ztrßtovΘ (nap°. JPEG, MP3 Φi v∞t╣ina videokodeku jako Indeo, Microsoft MPEG Φi jeho hack DivX), kterΘ se sna╛φ z dat odstranit to, co lidskΘ smysly nevnφmajφ Φi to co lze odstranit tak, aby to bylo co nejmΘn∞ poznat. Jin²mi slovy dojde b∞hem encoding k zahozenφ Φßsti dßt Φi jejich nahrazenφ komprimovateln∞j╣φ sekvencφ. B∞hem decoding samoz°ejm∞ k ╛ßdnΘ ztrßt∞ dßt nedochßzφ.

Encoding = zak≤dovßnφ
Obecn∞ proces ulo╛enφ dßt v n∞jakΘm formßtu. Pro tuto strßnku se tento pojem vztahuje k p°evodu videa (tj. posloupnosti RGB obrßzk∙) do jeho zkomprimovanΘ podoby (v∞t╣inou kodekem DivX). Podobn∞ jako u mp3ojek rozli╣ujeme konstantφ datovΘ toky (Constant Bitrate Encoding - CBR) a prom∞nlivΘ datovΘ toky (Variable Bitrate Encoding - VBR). Proto╛e se sna╛φme data zak≤dovat tak, aby do╣lo co k nejmen╣φ ztrßt∞ kvality a zßrove≥ co nejv∞t╣φmu zmen╣enφ, m∙╛e tento proces trvat °ßdov∞ a╛ 10x dΘle ne╛ vlastnφ dΘlka videa.

Decoding = dekodovani
Dek≤dovßnφ je proces rozbalenφ p°edtφm zabalen²ch dßt. Proto╛e u╛ nic neoptimalizujeme, ale pouze nafukujeme data p°edem definovan²m zp∙sobem, nenφ to proces tak CPU nßroΦn² (ale p°eci jen to chce cca frekcenci 300MHz, aby bylo p°ehrßvßnφ videa v reßlnΘm Φase ;-))

Keyframe = klφΦov² snφmek
Snφmek, kter² nenφ definovßn pomoci p°edchozφch snφmku, ale pln∞ sßm o sob∞ (tj. k jeho dek≤dovßnφ nepot°ebuji nic jinΘho)

Delta frame = delta snφmek
Snφmek, kter² je definovßn pomoci p°edchozφch snφmku (tj. k jeho dek≤dovßnφ pot°ebujφ nejbli╛╣φ p°edchßzejφcφ klφΦov² snφmek a v╣echny delta snφmky mezi)
StruΦn∞ lze vysv∞tlit vztah delta a klφΦov²ch snφmk∙ takto:
Kdybych m∞l nap°φklad tato p∙vodnφ data:
200, 199, 201, 300, 305, 306, 400, 401
Tak po p°epsßnφ do delta/key zßpisu mi vyjde:
200, -1, +2, +100, +5, +1, 400, +1
(kde klφΦovΘ snφmky jsou samoz°ejm∞ 200 a 400 a delta snφmky to ostatnφ zaΦφnajφcφ plusem Φi minusem)

Static Scene = statickß scΘna
ScΘna (filmu, videa), kterß neobsahuje p°φli╣ mnoho "pohybu". LΘpe °eΦeno - scΘna pro jejφ╛ zak≤dovßnφ pomocφ delta snφmk∙ nepot°ebuje kodek p°ili╣ mnoho bit∙. Nap°φklad mal² objekt pohybujφcφ se v∙Φi nehybnΘmu pozadφ.

Dynamic Scene = dynamickß scΘna
ScΘna (filmu, videa), kterß je pro kodek nßroΦnß. Obsahuje p°φli╣ mnoho "pohybu". Ov╣em je nutno zd∙raznit, ╛e to nemusi b²t nutn∞ scΘna s "dv∞ma do sebe navzßjem bu╣φcφmi karatisty", ale klidn∞ i zßb∞r kou°e, vln∞nφ vody Φi chv∞nφ list∙. (thx K5)

Bitrate = datov² tok
UrΦuje kolik dßt (za sekundu) dan² encoding proces pou╛φvß. ╚asto se m∞°i v kbps (kilobity za vte°inu)


VBR aneb proΦ to trvß 2x tak dlouho

Princip VBR (variable bitrate) videa spoΦφvß v optimßlnφ alokaci vφce bit∙ scΘnßm, kterΘ to pot°ebujφ (dynamickΘ), a souΦasnΘm odebφrßnφ bit∙ s men╣φ nßroΦnostφ na datov² tok (statickΘ scΘny). O to tu jde na prvnΘm mφst∞. Flasknout celΘ DVDΦko s konstantnφm datov²m tokem umφ kdekdo, ale optimßln∞ nakrmit dynamickΘ scΘny a naopak p°i╣krtit scΘny statickΘ umφ jen Nandub. Proto╛e Nandub nenφ v╣ev∞doucφ, musφ nejprve film prozkoumat (tzv. First pass) a pak a na zßklad∞ vytvo°enΘ statistiky provede vlastnφ zak≤dovßnφ (tzv. Second pass).

V rßmci First passu urΦφ Nandub tzv. "bitrate curve", tj. datovou nßroΦnost ka╛dΘho snφmku p°i maximßlnφ mo╛nΘ velikosti (tj. de facto dan² vstup komprimuje jako DivX low motion 6000 kbps)(tj. DRF=2x, viz dßle).(Nemusφte se bßt o mφsto, Nandub tohle MaxiAVI defaultn∞ nevytvß°φ.) ╚ist∞ teoreticky by nynφ ji╛ staΦilo spoΦφst velikost tohoto nejv∞t╣φho mo╛nΘho DivX souboru, dßle pak vzφt velikost cφlovou (typicky 700MB minus zvukovß stopa), tato dv∞ Φφsla pod∞lit a zφskat tφm jak²si ╣kßlovacφ faktor pro cel² film (a tφmpßdem i pro ka╛d² snφmek). StruΦn∞ °eΦeno, kdyby byl sv∞t dokonal², tak by staΦilo °φci:

Aktußlnφ_bitrate_pro_second_pass = bitrate_z_first_passu * (cφlovß_velikost / velikost_z_first_passu)

(co╛ je vlastn∞ klasickß 'lineßrnφ' trojΦlenka)

Bohu╛el jsou zde 2 zßkladnφ problΘmy:

Tak a te∩ je t°eba jednou prov╛dy rozbφt onen m²tus o kvalit∞ jednotliv²ch kodek∙:

Jedine dva rozdily mezi Low a High Motion DivX kodeky
jsou v rozsahu DRF a v p°izp∙sobivosti !!!

Tφm ale ne°φkßm, ╛e je Low Motion lep╣φ... (nejlep╣φ je Ferda). Jen chci °φci pouze to, ╛e kdo chce stßle d∞lat filmy s CBR, tak optimßlnφch v²sledk∙ dosßhne kdy╛ pro v∞t╣inu filmu pou╛ije Low Motion a na dynamickΘ "akΦnφ" scΘny zase High Motion. To ne°φkßm nic p°ekvapivΘho, ╛e... (v╛dy╗ i nßzvy kodek∙ tomu napovφdajφ). Ov╣em proΦ komplikovat v∞ci st°φhßnφm, kdy╛ Nandub umo╛≥uje p°φmo nastavit jakß komprese (2x-32x) bude pro dan² snφmek pou╛ita, na rozdφl od Low a High Motion kodek∙, kterΘ tento v²poΦet d∞lajφ samy. Dßle umo╛≥uje ovliv≥ovat p°izp∙sobivost kodeku mnoha zp∙soby (gauge, BR modulation, Crispness modulation apod.). Jin²mi slovy Nandub nejen╛e kombinuje v²hody obou kodeku, on d∞lß mnohem vφc....

Nandub umo╛≥uje dynamicky p°izp∙sobovat datov² tok tak, jak je mu °eΦeno, a ne tak, jak to mß v sob∞ "natvrdo" zak≤dovanΘ !!
To je ono "SBC = Smart Bitrate Control"
("chytrΘ" nastavenφ datovΘho toku)

Jeliko╛ byl DviX p∙vodn∞ navr╛en jako kodek pro low data-rate video, nelze se divit kdy╛ p°i archivaci DVD (kterΘ majφ relativn∞ vysok² datov² tok) nebudou komprese nap°. 16x a v²╣e v∙bec vyu╛ity. Optimßlnφ by bylo kdyby byly v╣echny scΘny v danΘm filmu v rozsahu tak 2x a╛ 5x, mo╛nß 2x a╛ 8x pro "akΦnφ" scΘny, ale ne o mnoho vφce proto╛e pak u╛ dochßzφ k p°φli╣nΘ ztrßt∞ kvality.. a o tu jde v Nandubu na prvnφm mφst∞.


Jak to probφhß I - "First pass" a "Second pass"

Jak ji╛ bylo °eΦeno, vlastnφ "encoding" je dvoufßzov² proces. Nejprve ("First pass") se dan² VFAPI pseudoAVI soubor naoko zak≤duje s co nejmen╣φ kompresφ. P°i tomto procesu se typicky AVI soubor nevytß°φ, pouze se shroma╛dujφ statistickΘ informace pro ka╛d² snφmek (datov² tok !!!, luminance a "pohyb"), kterΘ se ulo╛φ do .stats souboru.
V dal╣φ fßzi ("Second Pass") se informace o maximßlnφm datovΘm toku (tj. toku odpovφdajφcφmu minimßlnφ kompresi) p°e╣kßlujφ (klasickß trojΦlenka), mφrn∞ upravφ podle typu scΘny (luminance, "pohyb") a p°edajφ DivX kodeku jako datov² tok pro dan² okam╛ik. V tΘto fßzi je sice taktΘ╛ mo╛no shroma╛dovat informace do .stats souboru, ale hlavn∞ ji╛ dochßzφ k vytvß°enφ koneΦnΘho AVI souboru.


Jak to probφhß II - z pohledu u╛ivatele

Pozor tohle nenφ Flask !!! tohle jsou techniky pro pokroΦilΘ "rippery". Zßm∞rn∞ nßsledujφcφm p°φpravn²m postup∙m nev∞nuji tΘm∞° ╛ßdnou pozornost, proto╛e jsou dob°e a kvalitn∞ popsan² t°eba prßv∞ na www.doom9.net.

Pro zaruΦenΘ fungovßnφ Nandubu je zapot°ebφ mφt star², klasick² (plain, vanilla, unmodified) DivX 3.11 alpha kodek

To znamenß ne 3.22. (kodek OpenDIVX - v∞t╣inou s jmΘnem 4.0 alpha 48 apod. - mφt nainstalovßn m∙╛ete. Krom∞ matoucφho jmΘna nemß s p∙vodnφm "hackem" MS kodeku nic spoleΦnΘho.)

Tak tedy jak na to:

P°φprava Videa

Vlastnφ "Encoding"

Nynφ nastßvß to pravΘ.. Nßsledujφcφ kroky lze provßd∞t s jak²mkkoliv souborem, kter² Virtualdub otev°e (jß takhle obΦas z d∙vodu ·spory mφsta p°ek≤dovßvßm MPEGy).

ProΦ tyto 2 varianty:
Varianta #1 je star╣φ (v╣em programßtor∙m musφ b²t jasnΘ ╛e pro ·Φely lad∞nφ je lep╣φ v∞t╣φ proces rozd∞lit na dva men╣φ) a flexibiln∞j╣φ. Nenφ pravidlem, ╛e se povede "Second pass" hned napoprvΘ.
Dal╣φ mo╛nostφ je nechat si vygenerovat AVI soubor u╛ v "First Passu". (V tomto p°ßpad∞ doporuΦuji zatrhnout Video - SBC Options - Generate AVI, zadat mΘno stats suboru pod Video - SBC Options - SBC settings - Bitrate Curve a zadat File - Save AVI = F7) Touto volbou se vygeneruje stats soubor i ono Maxi AVI (zak≤dovanΘ s maximßlnφm mo╛n²m datov²m tokem (tzn. 6000 kbps Φi DRF=2x). Pro n∞kterΘ vysoce komprimovatelne filmy vyjde "First Passu" klidn∞ kolem 1000MB a pokud mi jde o 2CD encode, tak jsem hotov a nepot°ebujφ d∞lat 2nd pass. Varianta #2 je prost∞ jednodu╣╣φ, proto╛e umo╛≥uje v╣e nastavit a pak spustit oba passy najednou (t°eba p°es noc).
Dle mΘho nßzoru je nejlep╣φ spustit nejprve "Two passes" a potΘ p°φpadn∞ znovu "Second pass" s vylep╣en²m nastavenφm.

Profily:
VirtualDub (a proto i jeho potomek Nandub) mß vestav∞nou mo╛nost ulo╛it nastavenφ v╣ech mo╛nosti do souboru (File - Save processing settings) s p°φponou .vsf a jejich naslednΘho naΦtenφ (File - Load processing settings).
D°ive byly ze snahy o zjednodu╣enφ a automatizaci celΘho procesu dv∞ nejΦast∞j╣φ varianty (1 CD a 2CD) standartn∞ p°ilo╛eny s Nandubem. Pou╛itφ t∞chto profil∙ ov╣em nedoporuΦuji, proto╛e mnoho parametr∙ bylo pozm∞n∞no a nemusφ proto odpovφdat souΦasnΘ verzi Nandubu. Po p°eΦtenφ nßsledujφcφch strßnek by ka╛d² m∞l b²t schopen si sv∙j profil vygenerovat sßm.
I kdy╛ pou╛ijete profily, musφte nastavit datov² tok !!!

Audio


Next: Detailnφ vysv∞tlenφ r∙zn²ch nastavenφ Nandubu.
Index