Če se zgodi, da VirtualDub prikaže sliko v čudni velikosti, lahko s filtrom Resize (Video > Filters > Add) nastavimo zadeve na prave mere.

Zadnje čase se je pojavilo kar nekaj programčkov, ki omogočajo osnovno obdelavo in pretvorbo videa, so pa izredno preprosti za uporabo in od uporabnika ne zahtevajo posebnega znanja. Že Microsoft nam ponuja Windows Movie Maker, če pa malce pogledamo naokoli, najdemo še kup drugih orodij na to temo. Zakaj bi torej uporabljali VirtualDub, ki je sicer brezplačen, saj gre za odprtokodni program, a na prvi pogled dokaj zapleten za uporabo in daje vtis, kot da od uporabnika zahteva precej teoretičnega znanja?

Zato, ker videz vara in program za osnovne in najbolj uporabljane funkcije sploh ni zahteven za uporabo, in zato, ker že dolgo vsebuje nekatere funkcije, ki jih drugi programi še vedno nimajo. Ne nazadnje pa tudi zato, ker je velik le 1,6 megabajta, kar je veliko veliko manj kot recimo Windows Live Essentials, in ker ga sploh ni potrebno nameščati – dovolj je, da zaženemo njegovo izvršno datoteko.

KAJ ZNA?

VirtualDub je nastal v času analognega videa, ko smo za to, da prenesemo film iz kamere ali kamkorderja v računalnik, potrebovali posebno kartico za zajem in poseben program, ki zna sliko zajeti. In to je bil VirtualDub. Bil je program, ki je znal pretvoriti signal s kartice za zajem videa v podatke, ki jih je bilo mogoče shraniti v računalnik za nadaljnjo obdelavo. Zdaj je takšna funkcija pravzaprav odveč, saj s sodobnimi kamerami delamo podobno kot s fotoaparati, torej kopiramo podatke iz pomnilniškega medija kamere v računalnik v obliki datotek.

Čeprav njegova osnovna funkcija postaja odvečna, pa je VirtualDub še vedno nepogrešljivo orodje za vsaj tri vrste opravil: osnovno obdelavo videa, procesiranje videa in pretvorbo med različnimi formati. Pa si oglejmo malce te funkcije.

Kar zadeva osnovno obdelavo, ima VirtualDub nekaj, česar večina drugih programov nima. To je funkcija neposrednega kopiranja toka podatkov (direct stream copy). Sliši se zapleteno, a ni. Vzemimo, da imamo videoposnetek, v katerem nas zanima le del nekje na sredini. Z običajnimi programi za obdelavo videa bi težavo rešili tako, da bi želeni del izrezali, nato pa bi ga znova kodirali. Kodiranje pa traaaaja. Če imamo namen video shraniti v istem formatu, je to pravzaprav nelogično, saj je video že kodiran. Zakaj bi recimo datoteko MPEG znova kodirali, če pa smo od nje le odrezali določen del? To je tako, kot da bi morali dokument znova pretipkati zato, ker ste iz njega odstranili en odstavek. No, VirtualDub omogoča izvedbo nekaterih osnovnih obdelovalnih funkcij, kamor sodi tudi omenjeno rezanje, tako da se datoteka, če imamo vključeno neposredno kopiranje toka podatkov in jo pustimo v enakem formatu, shrani brez ponovnega kodiranja. To pa pomeni, da je postopek končan v nekaj sekundah namesto minutah ali urah, odvisno od dolžine videa. Če ste kdaj hoteli le malce popraviti film MPEG z Movie Makerjem, ste ugotovili, da ste stvar sicer obdelali v nekaj sekundah, nato pa tudi nekaj ur čakali na to, da program zadevo ponovno kodira.

Čas pa ni edina prednost VirtualDuba. Vsak digitalni video je shranjen v kodirani obliki, saj bi shranjevanje sliko po sliko, kot je to na analognem filmu, zasedalo daleč preveč prostora. In kako deluje kodiranje? Pravzaprav dokaj podobno. Gre za to, da se na disk ne shranijo vse slike oziroma okvirji (frames), ampak le nekateri, za vse, kar je vmes, pa le deli, ki se spreminjajo. Več o tem preberite v okvirju.

Kaj je kodiranje? Kodiranje je MPEG, kodiranje je DivX, Xvid, WMV in vsi drugi videoformati. Če zadeve ne kodiramo, kakovost ostane enaka. Vsako kodiranje pa pomeni izgubo kakovosti. Zakaj bi torej znova kodirali že kodirano in izgubljali kakovost?

Rezanje pa ni edina funkcija, ki ji neposredno kopiranje »dobro dene«. Podobno je z združevanjem dveh ali več videoposnetkov. Če so ti v istem formatu, ločljivosti in hitrosti (frame rate), potem jih zna VirtualDub zlepiti skupaj brez ponovnega kodiranja. To je v primeru, ko imamo več posnetkov iz kamere ali fotoaparata, dokaj uporabna možnost.

Še ena zadeva je, ki jo ima VirtualDub in je zato nekaj posebnega, čeprav zanjo tudi pogostejši uporabniki največkrat ne vedo. To je izdelava filma iz fotografij. VirtualDubu lahko poveste, kje imate fotografije, ta pa jih bo povezal v predstavitev in »izpljunil« v obliki filma.

Govorili smo, da ima VirtualDub vgrajene funkcije, ki naredijo delo s filmom hitrejše. Hiter pa je tudi program sam. Eden od razlogov je ta, da je program ena redkih sodobnih aplikacij, ki vsebuje kodo, pisano v zbirnem jeziku, torej assemblerju, kot se mu je reklo in ki ga danes skoraj nihče več ne pozna, saj programerji uporabljajo »višje« programske jezike, kot so Visual Basic, C++ in podobne. Zbirni jezik je prišel do izraza pred kakšnimi desetimi ali dvajsetimi leti, ko so bili procesorji več desetkrat počasnejši od sedanjih, poleg tega pa ni bilo sodobnik prevajalnikov, ki bi znali optimirati programsko kodo. Sicer je takšno programiranje danes dokaj »tvegana« zadeva, saj imamo prevajalnike, ki lahko kodo bistveno bolje optimirajo, kot pa to lahko naredimo ročno, a ostaja dejstvo, da je VirtualDub hiter. Kodira večinoma precej hitreje od drugih tovrstnih programov.

NAŠA NALOGA

V naslovu smo zapisali, da je z VirtualDubom mogoče pretvoriti film na DVD-ju v DivX ali podoben format. Kako pa? Najprej nekaj o DVD-ju. Podatki na DVD-jih so shranjeni v različnih datotekah, ustrezno standardu DVD. Če malce pogledate po kakšnem DVD-ju, ugotovite, da sta na njem dva imenika oziroma mapi. Mapa Audio_ts je običajno prazna, to, kar iščemo, pa je v mapi Video_ts. Ta vsebuje med drugim tudi več datotek tipa VOB, ki so v bistvu naš film. Te datoteke so običajno označene z imenom VTS_ 01_1.VOB, VTS_01_2.VOB in tako naprej, velike pa so en gigabajt, razen zadnje. Če torej hočemo film z DVD-ja pretvoriti v format DivX ali drugega, moramo pretvoriti te datoteke.

Nekakšen kuharski recept, kako postopek izvedemo, najdete na naslednjih dveh straneh. Tam je po korakih opisano, kaj je treba narediti. Program VirtualDub in dodatek za MPEG najdete tudi v Mikro orodjarni na spletni strani www.mojmikro.si.


Kaj je ključni okvir ali keyframe?
V programih za obdelavo videa boste prej ali slej naleteli na izraz keyframe ali I-frame. Zakaj je ta tako pomemben? Vrnimo se malce nazaj. Celuloidni film je bil narejen kot serija fotografij, ki so se predvajale z določeno hitrostjo, ki je dajala vtis enakomernega naravnega gibanja. Zadeva je jasna, a v digitalnem svetu žal neuporabna. Če bi namreč v digitalnem svetu morali shranjevati vsako sličico posebej, bi to pomenilo ogromno količino podatkov. In kaj je to ogromno? Malce matematike: vzemimo, da je slika filma iste velikosti kot v običajnem DVD-filmu, torej 768 x 576 pik. Ko to dvoje zmnožimo, vidimo, da sliko sestavlja 442.368 pik. Vsaka pika je pri 24-bitni barvni globini (lahko je tudi 32-bitna) opisana s tremi bajti, torej moramo vse skupaj še množiti s tri in dobimo, da je vsaka slika velika vsaj 1.327.104 bajtov oziroma okoli 1,3 megabajta. Če vemo, da je v standardu PAL, ki ga imamo mi, za vsako sekundo videa potrebno 25 sličic, je to dobrih 32 megabajtov za vsako sekundo filma in skoraj 2 gigabajta za vsako minuto. To pa je neuporabno. Tudi če bi vsako sličico stisnili v format JPEG, bi bilo podatkov še vedno preveč. Zato so pametni ljudje iznašli načine, kako stisniti podatke tako, da je količina podatkov spodobna.

Vsako stiskanje podatkov pa nujno prinaša s seboj izgubo kakovosti. Izraz stiskanje pravzaprav niti ni najbolj posrečen, saj bi si mislili, da gre za načelo, ko recimo dva bajta stisnemo skupaj tako, da dobimo enega. Pa ni tako. Gre za to, da se iz filma odstranijo informacije, ki za njegov prikaz niso nujno potrebne. In če nekaj odstranimo, se mora to nekako poznati. In tudi se, saj ste verjetno sami opazili razliko med kakovostjo filma, recimo, v YouTubu in kakovostjo DVD-ja ali filma visoke ločljivosti.

In po kakšnem principu se podatki odstranjujejo? Če pogledamo nek film vidimo, da se posamezni slike oziroma okvirji (frames) večinoma med seboj ne razlikujejo veliko. Vzemimo poročila na televiziji. Tam se na sliki spreminja pravzaprav le govorec, vse drugo pa je večinoma pri miru. In prav to lastnost videa uporabljajo algoritmi za stiskanje. Ti namreč ugotavljajo, kako se slika (oziroma okvir) razlikuje od druge, nato pa shranijo le razlike. S tem se statični podatki shranijo le enkrat, posledica pa je precejšnje zmanjšanje količine podatkov. Toda to načelo ima »luknjo«. Kaj pa ko se scena popolnoma spremeni, ko je na vrsti na primer poročilo s seje parlamenta? Takrat med prejšnjo in naslednjo sličico ni več nobene podobnosti. No, takrat pa programi za stiskanje naredijo ključno sličico, keyframe ali I-frame. Ta sličica pa ni več le razlika med prejšnjo in naslednjo, pač pa je shranjena slika v celoti, in algoritem stiskanja jo uporabi kot referenco za računanje nadaljnjih sprememb.

Ključne sličice pa imajo še eno nalogo. So namreč tiste, na katerih se lahko ustavimo, če se v videu pomikamo naprej ali nazaj. Če torej hočemo imeti v filmu dokaj ostro sliko in če se hočemo premikati naprej in nazaj tako, da kaj pametnega vidimo, mora biti v film vključenih dovolj ključnih sličic. V praksi se zato ključne sličice vključujejo vsakih 10 do 15 sekund in seveda ob spremembi scene. Kaj to pomeni v praksi? Če imamo video PAL, kjer imamo 25 sličic na sekundo, se bo v celoti shranila le vsaka 375-ta slika, kar je ogromno zmanjšanje količine podatkov.