Return to Articles Index.

Guida al DivX 4 by bgpop

bgpop@libero.it

Lista della spes... ops, volevo dire del materiale necessario ;-)

- Codec DivX 4.xx (consiglio 4.11 o successivo)

- Un programma per comprimere in DivX, come Flaskmpeg e Virtualdub


Non mi assumo alcuna responsabilità di danni dovuti e non all'uso della mia guida, né di un uso distorto della stessa: dovete possedere l'originale per effettuare una codifica e soprattutto, per conservare il risultato...


 

Premetto che in alcune punti della guida ho fatto un copia & incolla di parti corrispondenti nella guida di nandub (mi spiace, ma non ho molto tempo e se il concetto di base è lo stesso, perché dovrei ripetere con altre parole una cosa già detta?). Se vi sembra che abbia sbagliato in qualsiasi cosa della guida, o per semplici suggerimenti, il mio indirizzo email è in alto ;)

Nell'indice a sinistra ci sono i collegamenti alla descrizione dei singoli parametri nella guida. Tra parentesi vi è l'impostazione consigliata.

Introduzione (non fa mai male)

Come sapranno molti di voi, da poco (beh... relativamente) è nato una nuova stella nel firmamento della codifica video: il DivX... Tale miracoloso formato permette un rapporto qualità/spazio incredibile, al punto da permettere il salvataggio in 1 o 2 CD di film con qualità simile (anche se ovviamente non uguale) a quella DVD. Alla base di questo "prodigio", che molti penseranno essere il frutto del lavoro illegale di programmatori esperti (o "pirati" all'italiana), vi è uno studio durato molti anni da parte di una società chiamata MPEG (che non tanto incidentalmente dà nome al formato). Lo scopo primario di questo istituto era quello di condensare informazioni video nel minor spazio possibile. Non solo. Anche l'audio occupa spazio considerevole, e per questo furono applicati studi sullo spettro di frequenze audio eliminabili, e il frutto di questi studi è stato, progressivamente, L'mp1, l'mp2 e l'MP3 (che ormai conosce anche mia nonna). Badate bene: mp3 (come mp2 e mp1) non significa Mpeg3 (è un'altra cosa), ma Mpeg 1 Layer 3 (ovvero la terza versione del codec). Dovrei aggiungere anche il recente mp3 pro, ma essendo un'invenzione di una casa esterna, non mi sembra il caso (anche perché dovrei citare i vari formati concorrenti quali Wma, Vorbis, Vqf, Aupeg2, e chi più ne ha, più ne metta)

Col tempo essi hanno dato vita a 3 principali formati:

1)Mpeg 1: come lo stesso nome fa capire, è il primo risultato della fatica dei programmatori della Motion Picture, ma nonostante ciò è ancora largamente utilizzato per i VideoCD, nonostante le sue scarse potenzialità rispetto ai codec + moderni. Infatti, anche ad un bitrate di 1150kbit/sec (VideoCD standard), si hanno spesso scene cubettose su un filmato 320x240!!!. Insieme a questo formato video furono progettati i vari formati audio mpeg di cui parlavo sopra. Lo scopo per cui fu creato era quello di ottenere qualità video e audio accettabili (simili al VHS) in un bitrate pari a quello di un CD audio (non compresso), ovvero c.a. 1300kbit/sec. (audio incluso).

2)Mpeg2: La seconda generazione di mpeg è quella usata oggi nei tanto acclamati ma neanche tanto diffusi DVD (che noi amiamo convertire ;). I suoi pregi rispetto al predecessore sono risoluzione molto superiore (720x576 è lo standard PAL), qualità eccezionale e tante altre belle cosette... Ma ogni cosa esistente ha i suoi difetti: infatti tale formato è studiato su bitrate MOLTO elevati (la media dei DVD è 6/7 Mbit/sec), e dunque possono essere usati solo su supporti adeguati (e i DVD calzano a pennello). Chissà, magari nel futuro la velocità di rete sarà talmente grande da poterli scaricare in tempo reale da internet...). Spesso è accompagnato da un formato audio studiato per un numero di canali audio superiore ai canonici 2, ovvero il famigerato ac3. 

4) Mpeg4: No, non è un errore: l'mpeg3 è stato saltato a piè pari dalla società, forse per non confonderlo con l'omonimo formato audio, o chissà per quale motivo. In ogni caso, l'mpeg4 è un sistema di compressione (anche se si dovrebbe definire specifica - serie di regole -, in quanto i vari formati da esso mutuati seguono le specifiche dettate dalla mpeg, ma sono diversi tra loro per il diverso modo di implementarle...) ad oggetti (un po' come il c++, anche se in un ambito completamente diverso), studiato per condensare nel minor spazio possibile le informazioni del video per poter essere trasmesse con mezzi di comunicazione lenti come internet.

Quest'ultimo formato è quello che sta alla base dei formati di compressione moderni quali il wmv, l'asf (entrambi di "mamma" Microsoft, il divx (3 e 4), il 3ivx, ecc. La prima a creare un codec basandosi sulle specifiche è stata la Microsoft, che dobbiamo in questo senso ringraziare, primo perché gli strumenti per codificare nel suo formato sono gratuiti (e non come la real, a pagamento), secondo perché il DivX non è altro che un hack della terza versione del suo formato. I programmatori francesi che hanno provveduto a fornirci di tale strumento sono gli stessi che hanno lavorato al nuovo DivX 4, soggetto di questa guida. La loro volontà e generosità è certo da premiare: essi ci hanno fornito un codec video fantastico e per di più gratis (ma solo per uso privato, non commerciale). Se volete conoscere tutta la travagliata storia che sta dietro al DivX (che mi esimio da raccontarvi in questa sede), visitate il sito ufficiale www.divx.com . Ma bando ai convenevoli e passiamo al sodo:

DivX 4

Per chi non avesse usato una delle prime versioni del divx 4 (chiamata opendivx), specifico che i programmatori hanno fatto un ottimo lavoro, implementando funzioni che andavano ricercate in programmi complessi, come il multipass (nandub - guarda caso oggetto di un'altra mia guida), o il deinterlace direttamente nel codec!!! E non solo: essi hanno certamente effettuato tantissime prove, al punto che i settaggi predefiniti sono nella maggior parte dei casi quelli che danno i migliori risultati!! ;-)

Dopo aver impostato a dovere il nostro programma di de/codifica preferito (flaskmpeg, virtualdub, ecc. per maggiori informazioni sulle procedure leggete la mia guida su nandub su  Digital Digest), ci apparirà una bella finestra come questa:

Non spaventatevi per le numerose impostazioni, sono qui a spiegarvi a cosa servono!! :-)

Notiamo subito che DivX 4 presenta più modalità di codifica (3 per l'esattezza): 1-pass, 1-pass quality based, 2-pass (divisi in 1° e 2° passaggio). Andrò ora ad analizzarli nel dettaglio:

 

 

 

 

1-PASS: questa modalità corrisponde pressappoco alla codifica normale con il Divx 3 (quella senza ausilio di SBC, ecc.), che veniva spesso effettuata tramite la regola del cento (in pratica x ottenere il bitrate si moltiplica altezza x larghezza e si divide x 100.es: 640x288/100= 1843 kbit/sec). E' puramente VBR (ovvero adatta il bitrate alle scene) ed è quella che solitamente produce la peggiore qualità tra le 3 disponibili (ma comunque superiore ad una codifica "liscia" con il DivX 3. E' solo questione di gusti ed esigenze, ma se il tempo non è un problema e/o si ha una CPU potente, consiglio di lasciarla da parte per usare il 2-pass.

1-PASS QUALITY BASED: come si vede dalla foto sotto, sono scomparsi numerosi parametri, ma è disponibile un'altro (encoding quality). La suddetta modalità è una sorta di CBR (costant bitrate), ovvero cerca di assegnare ad ogni scena un bitrate costante, che viene definito non con un valore di bitrate numerico, ma con un valore percentuale. In teoria esso dovrebbe rappresentare la qualità che si ottiene dalla codifica, un po' come la modalità CQ (costant quality) dell'Mpeg2. Premesso che non ho fatto molte prove con tale modalità (preferisco la 2-pass, perché sono fortunatamente dotato di una CPU particolarmente potente - AMD thunderbird 1.33Ghz), ma da ciò che leggo nei forum tale modalità può risultare un'arma a doppio taglio: in percentuali elevate, infatti, anche la variazione di un solo punto percentuale può portare a variazioni di dimensioni su disco considerevoli (un esempio: il passaggio da 99% a 100% è addirittura "drammatico" in quanto a variazione di spazio occupato). Questa modalità è utilizzata soprattutto da gente con CPU non particolarmente potenti, perché permette di ottenere ottima qualità in 1/2 del tempo della 2-pass (anche se è + rischiosa). Concludo dicendo che i programmatori del codec hanno progettato tale modalità per l'acquisizione... In ogni caso da ciò che ho provato e che ho letto, il valore migliore per la codifica di un film su 2 CD (attenzione: non vi garantisco che ci stia nei 1300mb di 2 CD) è 98%. Purtroppo non conosco valori per il singolo CD, e sarei grato se me li poteste suggerire (ovviamente li aggiungerei alla guida e colui che me li suggerisse avrebbe il magnifico premio di essere citato - e scusate se è poco :-)

2-PASS: Questa modalità di codifica è a mio avviso la migliore di quelle disponibili: come il nome stesso suggerisce, essa è costituita da due codifiche ("passaggi"), atte a ottenere la miglior qualità possibile nel (poco) spazio disponibile. Nel primo passaggio il codec analizza il flusso video e scrive su un file ASCII (divx.log) la compressibilità e la quantità di movimento di ogni scena, frame x frame, al fine di ottimizzare la codifica; in questo modo, infatti, durante il secondo passaggio il codec può assegnare il bitrate nel modo migliore: le scene poco movimentate, che non richiedono molte informazioni per essere salvate (perché i cambiamenti nella scena sono esigui), avranno una quantità di bitrate limitato, mentre quelle più movimentate, che al contrario richiedono un'enorme quantità di bit, ne avranno di più. Inoltre, l'occhio umano non è in grado di distinguere i particolari nelle scene molto movimentate, e quindi il codec rimuove anche essi, diminuendo ancora di più lo spazio occupato . La potenza del codec non finisce certo qui, ma essendo come struttura simile a nandub, vi invito a leggere la rispettiva guida se volete saperne di più... (QUI).

Consigliato: 2-PASS

Ora andrò ad analizzare i singoli parametri (o perlomeno i più importanti):

PERFORMANCE/QUALITY: come è intuibile dal nome, rappresenta il tempo che il codec impiega ad analizzare il flusso video e applicare l'algoritmo di compressione. Aumentare il tempo a disposizione (rallentando il processo) vuol dire ottenere una maggiore qualità, in quanto il codec ha più tempo per fare le sue scelte. Fastest, secondo gli stessi autori del codec, è consigliato solo per l'acquisizione (dove conta la velocità pura), insieme a 1pass quality-based. In ogni caso, suggerisco di impostare slowest, che tra l'altro è ben più veloce del codec 3.xx (sul mio athlon 1.33ghz supero i 25fps).

Valore consigliato: SLOWEST

OUTPUT VIDEO BITSTREAM AT: (non disponibile in modalità 1pass quality-based) è in poche parole il bitrate intorno al quale vogliamo che il codec si mantenga, nonostante sia VBR (variabile bitrate). Per chi usa lame, è il corrispettivo del metodo ABR, in cui il codec, VBR, cerca di mantenere l'oscillazione del bitrate attorno al valore scelto. L'unico vero VBR, infatti, è quello usato nella codifica MPEG2 (es: Tmpgenc), chiamato CQ (costant quality): il bitrate oscilla a suo piacere ma la qualità si mantiene costante in tutto il flusso video (qualità che è impostata secondo un valore % - da non confondere con la modalità di codifica CBR di DivX 4, l'1pass quality-based). Il metodo migliore di trovare il valore è quello di usare un calcolatore di bitrate (ne trovate a bizzeffe su www.digital-digest.com). Solitamente si usano valori <= 1000 per un CD, e compresi tra 1200 e 2000 per 2CD (attenzione: il bitrate è espresso in migliaia di bit 1k=1000bit, a differenza del codec 3.xx, dove 1k=1024bit). In ogni caso tali valori sono approssimativi, perché ogni film è diverso dall'altro e l'unico modo di avere una certa sicurezza è quello di usare il 2-pass. (non mi è mai successo che con tale metodo il film fosse + grosso di quanto impostato, al punto da non stare sui 2CD).

Valore consigliato: non c'è, usate una calcolatrice (x i film). Consiglio per filmati acquisiti (352x288, 320x240) un bitrate di 550kbit/sec

MAXIMUM KEY FRAME INTERVAL: come il divx 3.11+patch o il 3.22, anche il DivX 4 è VKI (variable keyframe interval), cioè provvede a mettere keyframes nei cambi di scena, in modo da migliorare la qualità. in pratica il valore indica il tempo tra un keyframe e l'altro. Non va confuso con la codifica normale, perché questo valore sarà guardato solo se dopo tale tempo il sistema interno di SCD (scene change detection - ovvero rilevamento di cambio di scena) non inserisce un keyframe. In tal caso provvede il codec. (PS: un keyframe è un'immagine codificata interamente come ad esempio nello Jpeg. L'MPG di cui DivX fa parte usa, per risparmiare spazio, anche i Delta Frames, in altre parole scrive solo la differenza che c'è tra un frame e l'altro, che è evidentemente meno esosa di spazio. Ma quando c'è un cambio di scena tutta l'immagine cambia, quindi è più conveniente codificare l'immagine completamente invece di scrivere le differenze - e questo è ciò che fa il meccanismo SCD). A differenza del codec 3.xx, dove il valore da inserire era in secondi, il codec 4.xx ci permette di avere maggior controllo perché l'impostazione è in frames. Poiché i film PAL hanno un framerate di 25fps, un valore di 25 corrisponde ad un secondo. Non è consigliabile impostare a valori troppo bassi quest'opzione: un numero eccessivo di keyframe comporterebbe un notevole spreco di bitrate, che potrebbe essere utilizzato altrove. Viceversa, un numero troppo esiguo porterebbe a notevoli difficoltà di seeking (in pratica il passaggio da un punto all'altro del video), in quanto il lettore dovrebbe decodificare tutti i  delta frame tra un keyframe e l'altro. Il valore che a mio avviso costituisce il miglior rapporto velocità/dimensioni è 2 secondi, ovvero 50 frames.

Valore consigliato: 50

MAX CPU USAGE: tale valore indica la percentuale della CPU che il codec userà durante la modifica (se non attivato, cercherà di usare il 100%). Se durante la codifica desiderate usare il PC per altre cose (anche se non ve lo consiglio - meglio lasciarlo lavorare un pomeriggio che rischiare di mandare in crash il pc e dover rifare tutto...), impostate un valore più basso (80-90%). 

Consigliato: DISATTIVATO x le massime prestazioni

DEINTERLACE: può capitare (soprattutto con il formato NTSC) di trovarsi di fronte a film interlacciati, in cui cioè il video è alternato a linee nere (sgradevolissime). Tale fenomeno (ben conosciuto da chi acquisisce), è dovuto alle limitazioni degli standard televisivi (che continuano a rimanere uguali da + di 50 anni!!!): l'immagine nella fase di invio viene scomposta a linee alternate ("odd field", "Even Field"). La televisione, ricevuto il flusso video, scrive sullo schermo prima le righe dispari, poi quelle pari, ad una velocità di aggiornamento di 50 linee al secondo (25 immagini complete al secondo) nello standard PAL, c.a 60 linee al secondo (29.976 immagini complete al secondo) nello standard NTSC. Ma le normali schede di acquisizione non sono capaci di catturare più di 30 scritture al secondo. Risultato: un video inguardabile. Tale opzione è stata progettata per risolvere il problema, interlacciando i punti e sfumando i contorni. Può sembrare positiva, ma il modo in cui è implementato è da dimenticare: il risultato spesso è peggio di quando non lo si usa!. Perciò consiglio vivamente di NON usarla. Se avete bisogno di deinterallacciare un video, usate piuttosto uno dei filtri di virtualdub o avisynth.

Consigliato: DISATTIVATO

DEFAULT POSTPROCESSING LEVEL: tale valore non influisce minimamente sulla fase di codifica (a dispetto di cosa dicono alcune persone): è posto nel pannello di configurazione solo perché Windows Media Player 7 e 8 non permettono di impostare le proprietà dei filtri. Questa è, a mio avviso, la funzione migliore del codec 4.xx, perché è l'unica che il codec 3 non possiede (a parte la 1-pass quality-based) e perché può migliorare considerevolmente la qualità di visione del film (ma non di codifica, ripeto). Persino la codifica 2-Pass, anche se non presente effettivamente nel codec 3, è riproducibile tramite l'ausilio di nandub. In ogni caso vi sono 6 livelli di postprocessing: DivX 4, in pratica, applica a seconda di questo parametro filtri di Deblocking e di Deringing sulle linee e sul colore. In pratica DivX tratta l'immagine digitale come «una sagoma in bianco e nero sulla quale sono "incollati" "pezzi" di colore» (da "Nicky guide to DivX 4"). Gli artifizi che esso utilizza per ridurre il bitrate possono portare, spesso a datarate molto bassi, al fenomeno del "blocking", ovvero la cubettosità di un'immagine. Il primo dei filtri, dunque, sfuma leggermente i contorni e il colore, e li interpola, rendendo meno visibile tale fenomeno (è un po' quello che fa l'antialiasing delle schede video moderne). Il ringing è il prodotto della compressione a bitrate bassi. Il DivX nel comprimere il video ed evitare di perdere dettaglio nelle scene più importanti, può provocare tale effetto: in pratica intorno ai bordi di una sagoma (ad esempio il personaggio di un cartone animato), si vedono (come in figura) delle "scintille" (diamine, è più difficile da spiegare che da vedere), come delle "lucette" che si muovono continuamente (oppure come se lo sfondo fosse liquido). So che non sono stato per nulla esaustivo, ma sono sicuro che avete provato tale fenomeno (magari senza saperne il nome). Ciò che fa il filtro, in definitiva, è "spalmare" il colore in modo da evitare che ciò accada.

Non è tutto. Poiché l'occhio umano non è in grado di distinguere cambiamenti veloci di colore come è capace di fare con la luce (sappiamo che la vista umana è più suscettibile alla luce che al colore), il codec applica tali filtri solo alla luminosità e ai contorni  con il "postprocessing" impostato a 1, 2 e 3 (la differenza tra questi valori è quale dei due filtri usare e in quale modo), mentre attiverà il postprocessing anche al colore con un'impostazione superiore a 3 (4, 5 e 6). Attenzione: sebbene il codec sia stato notevolmente ottimizzato rispetto alle beta, l'applicazione dei filtri richiede un processore potente. Pertanto consiglio di disattivarlo se non si ha una CPU a 400Mhz o superiore, e di non superare il valore 2 se non si ha un processore a 700Mhz o superiore (sul mio "vecchio" P3 600 il video mi scattava se superavo il valore consigliato). Personalmente uso un'impostazione di 6, tranne per i film non resized (ovvero a risoluzione di 704xXXX), in cui imposto 5. (ma la mia CPU è un Athlon Thunderbird 1.33ghz).

Consigliato: CPU <= 400Mhz: 0 (o al massimo 1); CPU <= 700: 2; CPU > 1200Mhz: 5 o 6.

MINIMUM QUANTIZER/MAXIMUM QUANTIZER: corrisponde ai DRF di nandub. Rappresenta il livello di compressione usato dal codec per ottenere qualità e bitrate desiderati. Tali valori, in %, variano da 0x a 32x. 0x vuol dire non usare compressione, mentre 32x usare la massima compressione possibile. Per semplificare, DivX 3.xx Low Motion usa valori compresi tra 2x e 11x, mentre il Fast motion tra 7x e 16x. Devo dire che i programmatori francesi hanno fatto un buon lavoro, perché i valori di default nella maggior parte dei casi sono quelli migliori (o perlomeno per codifiche in 1 CD). Io però preferisco metterci le mani ;) (anche perché codifico sempre in 2CD). In pratica, nel campo "Min" mettiamo sempre 2x, a meno che si abbiano SERI problemi di spazio o dimensione, in tal caso non lamentatevi della qualità. Nel capo Max, invece, il valore ottimale è 9. Numeri minori possono produrre film sovradimensionati senza dare grandi differenze di qualità, mentre valori più grandi possono provocare perdite di qualità. Per farla breve: Min: 2; Max: 9. Ricordiamo che un'errata configurazione di questi parametri può provocare risultati fuori dalle aspettative. Se il film è sovradimensionato, questo è il primo punto in cui guardare. Nel caso del 2-pass il funzionamento è il seguente: prima DivX 4 effettua la compensazione del moto (ovvero controlla di quanto il frame corrente differisce dal frame precedente e quanto "movimento" c'è) , poi crea un'immagine che ha 32 pixel aggiuntivi per ogni lato, quindi decide quanto dettaglio dare al fotogramma (basandosi sul movimento), poi comprime il frame a 1x, infine controllando il log del primo passaggio decide il livello di compressione in base al parametro Quantizer che noi abbiamo inserito. Se si sceglie la modalità 1-PASS, invece, il codec non ha molti dati su cui basarsi, pertanto applica impostazioni predefinite a seconda del bitrate: se ha successo, la scena ottiene un'ottima qualità; altrimenti, sorry (come l'ABR di lame). Per questo motivo consiglio l'utilizzo del 2-PASS: avendo a disposizione un log contenente la quantità di moto di ogni frame, il codec è in grado di gestire perfettamente la compressione di ogni fotogramma, dando quasi sempre il massimo della qualità possibile per il bitrate selezionato.

Consigliato:

1CD: 2/11

2CD: 2/9

Filmato 320x240: 2/12 (default)

Le (3) opzioni che seguono dovrebbero essere lasciate ai loro valori di default, perché influiscono considerevolmente sul processo di codifica e potrebbero rovinare completamente il film se impostate male.

RATE CONTROL AVERAGING PERIOD, FRAMES: questa impostazione controlla quanti fotogrammi (frames) sono usati dal codec per determinare la compressione della scena: il valore predefinito, 2000, vuol dire che il codec analizzerà 2000 frames dopo quello corrente per stabilire quanto bitrate assegnare. La funzione influenza sia la codifica 1-PASS che quella 2-PASS, anche se nel 2° caso il codec legge le impostazioni dal .log generato nel primo passaggio oltre che i singoli fotogrammi. Valori superiori potrebbero aumentare la qualità, ma richiedono più tempo e soprattutto memoria (quindi a meno che non abbiate una bandwith della RAM > 1GB/sec effettivi non è consigliato modificare il valore).

Consigliato: 2000 (default)

RATE CONTROL REACTION PERIOD, FRAMES: controlla la quantità di bitrate da assegnare alle scene statiche e quelle dinamiche, l'una a discapito dell'altra. In pratica, valori più elevati privilegiano le scene movimentate, a discapito di quelle statiche, e viceversa. Dalle mie prove, non conviene modificare il valore di default (perché ben bilanciato), a meno che il film sia al 99% statico (in questo caso abbassate di poco il valore, come 9).

Consigliato: 10 (default)

RATE CONTROL DOWN/UP REACTION: controlla la sensibilità del codec nel distinguere scene statiche da scene dinamiche. In pratica il valore inserito indica a che livello di differenza (%) tra un fotogramma e l'altro il codec considererà la scena dinamica. Se noi settiamo il valore troppo alto, il codec considererà ogni scena dinamica e aumenterà il bitrate per conservare la qualità (ma rischiando di rendere il film troppo grande). Viceversa, se settato troppo basso DivX 4 tenderà a considerare ogni scena statica, limitando il bitrate e quindi la qualità. E' consigliabile mantenere il valore di default, ma ovviamente se si vuole trovare un valore adatto ad un particolare film è necessario sperimentare.

Consigliato: 20 (default)

LOG FILE: influenza solo la codifica 2-PASS (anche perché con impostazioni diverse non è selezionabile ;), ed indica in pratica dove salvare/leggere il file .log in cui il codec salva le informazioni durante il primo passaggio. io lo lascio sempre nell'impostazione di default, ma se preferite salvare il log da un'altra parte, fate pure...

FRAME DROP: indica quale percentuale di fotogrammi del film deve essere letterariamente eliminata. Sebbene normalmente non sia necessaria, può essere utile per bitrate molto bassi. Può essere utilizzata solo nella modalità di compressione 2-PASS,  perché il codec si basa sul log per individuare le scene eliminabili  dal flusso video in modo da non influire troppo sul film, come ad esempio scene statiche et similia... In conclusione, lasciare a 0.

Consigliato: 0%

Abbiamo finito!!! Forse ci risentiremo presto (ho in mente un'ideuccia...)

Bgpop@libero.it

 


Return to Articles Index.



Duplication of links or content is strictly prohibited. (C) DIGITAL DIGEST - DVD 1999 - 2002