Cepam XviD, kā labāk?

Ik pa laikam kādam lietotājam rodas jautājums, par to, kā filmu (piem., safilmēto video no kāda sarīkojuma vai uztaisīt DVD->XviD) nokonvertēt uz formātu “lai varētu ierakstīt CD700MB matricā”. Nu ko, sākam no “a” un tad uz priekšu…

Video materiāli mēdz būt ļoti dažādi, tāpēc sākumā pastāstīšu par pamatelementiem un terminiem. Droši vien visi zina, ka video sastāv no secīgu attēlu (kadrs = frame) plūsmas, bet ir vēl citi raksturojoši parametri.

Frames per second (fps) = kadru skaits sekundē, kadru frekvence;
Fields per second = lauku skaits sekundē, lauku frekvence;
Resolution = izšķirtspēja, kadra izmērs pikseļos;
Interlacing = savīšana (kadrus sašķeļ pa laukiem);
DeInterlacing = pretējs process Interlacing (no laukiem izveido kadru);
Aspect ratio = malu attiecība (platums : augstums, piem., 16:9, 4:3);
Bit depth = bitu dziļums (ar cik bitiem apraksta krāsu, piem, 8,16,24);
Bitrate = bitu biežums, datu plūsmas intensitāte;
Macro block = video kadru veidojošs bloks (parasti 16×16 pikseļi);
PostProcessing = Pēcapstrāde (dekoderis veic dekodētās informācijas apstrādi ar mērķi mazināt defektus);
VBV = Video Buffer Verifier, video bufera pārbaude, kas nodrošina to, lai datu plūsma nepārsniegtu bufera izmēru dekoderī;

Daudzi video cepēji pieļauj visdažādākās kļūdas, biežākās no tām ir nepareiza malu attiecība (kadrs ir saspiests/izstiepts), kļūdas, kas saistītas ar Interlacing/DeInterlacing (kadrā parādās strīpas) vai arī vienkārši pārcenšās ar kodeka iestatījumiem (“uzskrūvē” pa augstu) un daudzi lietotāji šo filmu nevar normāli noskatīties, jo filma raustās/nespēlējas vispār. Šādu video nosaukumā parasti piekabina vārdu “NUKED”. Nu bet, lai visiem viss būtu labi, pastāstīšu par dažiem XviD kodeka iestatījumiem (kas? ko? kapēc?).

Lai saprastu nākamos parametrus, vispirms ir jāsaprot dažādie kadru tipi un to sastāvdaļas. Kadri sastāv no tā suktajiem makroblokiem (parasti 16×16 pix), makrobloki var (ne)mainīties starp kadriem. Katram makroblokam aprēķina tā saukto kustības vektoru, kas norāda bloka kustības virzienu.

Kadru tipi:

Intra-frame (i-frame, Independent-frame, key-frames):
* Pilns kadrs;
* Satur tikai attēla informāciju (nav kustības vektoru);
* Nav atkarīgs no citiem kadriem;
* Tiek ielikti tad, kad B vai P kadri ir lielāki;
* Lieto lai atvieglotu secīgu kadru dekodēšanu;
* Garāka atstarpe starp I kadriem nozīmē arī ilgāku kadru rekonstruēšanu, kas noved pie ilgāka meklēšanas laika, kad filma tiek patīta uzpriekšu/atpakaļ vai arī ilgāku atsākšanas laiku ja filma tiek skatīta plūsmas veidā (internet streaming video).

Predicted-frame (P-frame, delta-frame)
* Satur daļējus datus par attēlu;
* Var saturēt gan attēla datus gan kustības vektorus;
* Ir vienvirziena attiecībā uz citiem kadrim;
* Tiek veidots, kad nākamo kadru var izveidot iepriekšējam kadram pievienojot izmaiņas;
* Aizņem mazāk vietas kā i-frame;

Bi-directional frame (B-frame, B-VOPs)
* Satur tikai daļējus datus;
* Var saturēt gan attēla datus gan kustības vektorus;
* Attiecas uz iepriekšējo un uz nākamo kadru;
* Tiek veidots, kad tiek secināts, ka nepieciešama divvirzienu informācija;
* Vismazākais no kadru tipiem;

Pirmais ar ko būtu jāsāk ir profila izvēle. Šis iestatījums nosaka to, kādi ir ierobežojumi (bitrate, resolution, macroblocks) konkrētā materiāla kodēšanai, jeb citiem vārdiem sakot, kāds dekoderis spēs šo materiālu reālajā laikā dekodēt. MPEG-4 standartā ir definēti vairāki profili. Biežāk lietotais ir tā suktais “Advanced Simple” profils, kam definēti 6 līmeņi:
līmenis 0 – 3 = bitrate ierobežojumi 128 … 768 kbps;
līmenis 4,5 = Savīšanas atbalsts un bitrate ierobežojumi 3Mbps … 8Mbps;

Bet ir arī citi profilu veidi (nav MPEG standartā) un patreiz visvairāk būtu jāpievērš uzmanību tā sauktajiem “DivX profiliem” un tie ir trīs.

PLATFORM
Support all resolutions up to maximum of 176 x 144 @ 15fps 352 x 240 @ 30 fps
352 x 288 @ 25 fps
720 x 480 @ 30fps
720 x 576 @ 25fps
Macroblocks per second 1485 9900 40500
Maximum average bitrate 128 kbps 768 kbps 4000 kbps
Maximum peak bitrate during any 3 seconds of video 400 kbps 2000 kbps 10000 kbps
Minimum VBV buffer size (kbytes) 32k bytes 128k bytes 384k bytes

Visbiežāk lietojamais ir “Home Theater” profils. Šo sertifikātu arī ir ieguvuši (izsniedz “DivX Networks”) daudzi DVD atskaņotāji, kas spēj dekodēt arī MPEG4/DivX/XviD, piemēram PHILIPS DVP630, DVP762,… Ja iekārta ir sertificāta un atbilst kādam profilam un konkrētais materiāls atbilst šim pašam profilam, tad ir garantēts, ka šo videomateriālu varēs bez broblēmām atskaņot uz konkrētās ierīces (filma neraustīsies, nebremzēs, …). Tieši tāpēc profila izvēla ir iestatījums numur viens. Un tā, pirmais nedarbs nu ir veikts, bet jau nākamais tiek steigts. 🙂

Nākamais svarīgais lēmums ir tas vai video konvertēšana notiks vienā vai divos (vairākos) gājienos. Ja viss notiek vienā gājienā, tad kodeks nezin kas būs tālāk, līdz ar to kodekam pie dotajiem ierobežojumiem ir DAUDZ grūtāk nodrošināt kvalitāti, jo iespējams ka dotie resursi jau pārtērēti. Ja kodēšanu veic divos gājienos, tad pirmajā gājienā kodeks veic materiāla sarežģītības analīzi un pieraksta iegūtos rezultātus. Otrajā gājienā kodekam jau ir zināma kodējamā materiāla sarežģītība, un tāpēc var zināt, ka lūk šeti ir nedaudz jāpietaupa resursu, jo priekšā būs lielāka vajadzība vai otrādāk. Īsāk sakot, kodeks var lietderīgāk izmantot pieejamos resursus un nodrošināt DAUDZ augstāku kvalitāti.

Nākamais lēmums. Cik baitiņus mēs tam visam pasākumam atvēlēsim? XviD kodekā ir iebūvētais kalkulators ar kuru varam visu sarēķināt. Ievadam filmai atvēlamo vietas apjomu, filmas ilgumu, norādam audio un iegūstam datu plūsmas vidējo intensitāti (ieteicams ~1000Kbps), ko nokopējam un ielīmējam attiecīgajā lauciņā.

Nu un tad nāk čupiņa parametru ar kuriem var spēlēties un kuru noklusēto (default) vērtību lietotājs visbižāk mainīs… (tātad sākam ar default vērtībām)

Adaptive Quantization: Metode, kas attēla datus kas ir ļoti tumšās/gaišās attēla daļās saspiež vairāk kā citur, tādā veidā atvēlot vairāk resursu vidēja gaišuma zonām. Šis triks ir izmantojams tāpēc, ka cilvēka acss grūtāk pamana dažāsus kropļojumus ļoti tumšās/gaišās vietās.

Max consecutive BVOPs: Maksimālais secīgo B-kafru skaits. Noklusētā vērtība ir 2, nav ieteicams lietot vairāk kā 3. Bet es ieteiktu lietot 1, jo bieži daudzu B-kadru dēļ rodas tāds nepatīkams efekts, ka attēls izskatās tāds kā šķids un nedaudz skalojās. Tas rodas makrobloku kustības dēļ, jo reālajā dzīvē jau NEnotiek precīza 2D kustība, rezultātā rodas kļūda kas izsauc šādu efektu. Bet šī parametra vērtība 1 ir zelta vidusceļš starp vizuālo kvalitāti un kompresiju.

Quarter pixel (Q-Pel): NAV ieteicams. Aprēķinot makrobloku kustību, aprēķinus veic ar 1/2 pikseļa izšķirtspēju, tas ir, minimālā kustība ir 0.5 pikseļi, bet Q-Pel nozīmē to, ka kustība tiek rēķināta ar 1/4 pikseļa izšķirtspēju. Varētu likties ka šim parametram būtu jābut ieslēgtam pēc noklusējuma, bet tūdaļ pateikšu kāpēc tā nav. Aktivizējot Q-Pel gan koderim gan dekoderim ir jāveic DAUDZ lielāki aprēķini, tātad nepieciešama DAUDZ lielāka skaitļošanas jauda, kas dekoderim var ĻOTI traucēt šo filmu dekodēt reālajā laikā. DivX “Home Theater” profilā šis parametrs arī nav aktivizēts, jo reti kurš DVD atskaņotājs atbalsta šo iespēju. Ticiet man, Jūs neredzēsiet atšķirību starp 1/2-pel un 1/4-pel. Nepieciešamā skaitļošanas jauda neattaisno iegūto rezultātu.

Global Motion Compensation (GMC): NAV ieteicams. Līdzīgi kā Q-Pel, arī šīs fīčas prasa krietni lielāku kodera/dekodera jaudu. Idejas pamatā ir kustību vektoru normalizēšana, kuras pamatā ir kadra kopējās kustības noteikšana. Makrobloku kustību nosaka bloka kustības vektors + GMC vektors. DivX “Home Theater” profilā šis parametrs arī nav aktivizēts. Reti kura ierīce to atbalsta.

Vēl jau daudz ko varētu rakstīt, bet galu galā šis nav manual, šis ir padoms. 🙂

Share on facebook
Share on twitter
Share on linkedin
Share on whatsapp

Atbildēt

Jūsu e-pasta adrese netiks publicēta. Obligātie lauki ir atzīmēti kā *

Datuve.lv – IT un Tehnoloģiju ziņas || Copyright © 2004-2020 || Kontaktinformācija: info@datuve.lv  || Contact Us