GUIDA DIVX4LOG 0.45

 

Scritta da  :  Strek

in collaborazione con  www.quellicheilpc.it

Creare filmati compressi con il Divx è un percorso ad ostacoli continuo. Uno degli ostacoli più grossi è quello della dimensione finale del file, in quanto tutti sappiamo che il bitrate variabile del codec non ci consente di fare un calcolo esatto e non è bello dover fare una nuova compressione per colpa di 4 o 5 Megabyte di troppo. Non solo. Anche l'occhio vuole la sua parte e quindi vorremmo tutti che il risultato fosse uguale, se non migliore dell'originale ;o).

Divx4log è una potente utility di calcolo e modifica del file log del primo passo della codifica a due passi. Riesce a prevedere con buona approssimazione la dimensione finale del file e a spostare preziosissimi bits da scene con maggiore movimento (dove l'occhio non riesce a cogliere i particolari) a scene più lente (e in questo caso abbiamo tutto il tempo per cercare il "pelo" nell'uovo).
 

PRIMO PASSO

Uno dei presupposti fondamentali affinché Divx4log faccia bene il proprio lavoro è quello di creare un file di log per mezzo del codec Divx 5.0 con alcune caratteristiche. Le impostazioni da dare al codec durante il primo passo sono le seguenti:

IMPORTANTE Il bitrate deve essere settato al massimo (10000), consiglio di usare il file MV che rende più veloce il secondo passo e "dovrebbe" essere compatibile con Divx4log (salvo nuove indicazioni). Consiglio fortemente di usare il "Bidirectional Encoding", altrimenti sarebbe inutile il ricorso al Divx 5.0 e basterebbe usare la versione 4.12. Sconsiglio l'uso del Quarter Pixel e del GMC in quanto hanno prodotto effetti indesiderati sulle immagini. Eventualmente fatelo a vostro rischio e pericolo.

Consiglio di effettuare il crop e il resize dal codec in quanto molto più veloci di qualsiasi altro programma (1). I valori dipendono dal film e da altri fattori che esulano dagli scopi prefissi da questa guida. Il "Max Keyframe interval" è settato a 125 anziché i classici 250 per ridurre il peso di alcuni deltaframes dopo un passaggio di scena "fluido" e non "tagliato" (2). Non usate il deintarlacciamento del codec in quanto non funziona! Se necessario fate un fake avi con Vfapi e usate un filtro di VirtualDub PRIMA di dare i dati "in pasto" al codec, ma è raro trovare una sorgente interlacciata.


 

 

 

 

 

 

 

 

 

 

 

IMPORTANTE I valori in "Maximum quantizer" e "Minimum quantizer" DEVONO essere settati a 2 entrambi. Per il resto vanno bene i valori di default in quanto non influiscono sul risultato. A questo punto si può dare il via al processo e... farsi quattro passi.
 

DIVX4LOG

Alla fine del lavoro come risultato abbiamo un piccolo file AVI illeggibile e completamente inutile, ma nel contempo è stato creato il file LOG che andremo ad aprire ed elaborare con Divx4log.


 

 

 

 

 

 

 

 

Prima di tutto apriamo il nostro file LOG che, in questo caso , abbiamo chiamato log.log Sulla prima schermata verranno fuori alcuni dati statistici relativi al file LOG che abbiamo aperto, ma non sono particolarmente significativi.


Adesso è il turno di mettere le mani sui titoli di coda. Se vi piace leggerli belli definiti saltate pure questo passo. Se preferite riservare un po' di bitrate per il resto del film seguite queste indicazioni. Aprite con DVD2AVI o FlaskMpeg o quello che preferite il vostro VOB rippato e posizionate il cursore all'inizio dei titoli di coda, scrivete il numero del frame corrispondente nel campo "At frame" della sezione "Zones" di Divx4log. Premete "Add Zone", settate gli altri valori come da figura (se volete potete diminuire un po' i valori B), posizionatevi sull'ultima riga e premete "Change Zone"


 

 

 

 

 

 

 

N.B.: L'ultima zona che abbiamo appena creato non sarà più modificata in automatico dal programma, quindi non dobbiamo più preoccuparci di lei.
Con questa operazione forziamo il codec ad usare i valori che abbiamo scritto al posto di quelli che lui vorrebbe. In pratica durante il secondo passo i frame successivi al X-esimo che abbiamo scelto saranno compressi con i Quantizer che noi abbiamo scelto. Ricordatevi che Quantizer maggiore significa maggiore compressione e minore qualità.


Adesso passiamo alla analisi della sezione "Settings" dove troviamo un sacco di opzioni e due valori FONDAMENTALI: "Size" e "Bitrate". Il primo indica la dimensione finale stimata del file video in Byte, il secondo il corrispondente bitrate in base ai frames per secondo che devono essere impostati nel campo in basso a sinistra "FPS" (di solito 25 se la sorgente è PAL oppure 30 se è NTSC).



Iniziamo a parlare della "I Frames Rule" (regola per i frame I). Serve per dire al programma come assegnare i quantizer, che noi decidiamo, ai keyframe. Tutto ciò in base alla dimensione del keyframe stesso. Più "grande", "pesante" e "complesso" sarà il Keyframe e maggiore sarà il Quantizer che gli sarà assegnato per il secondo passo. La regola "Linear" genera una distribuzione direttamente proporzionale fra grandezza e Quantizer. Quella "Root" (radice quadrata) assegna in media valori più alti di quantizer per frame poco più complessi del minimo. Quella "Square" (quadrato) assegna valori bassi di quantizer tranne che per frame molto complessi. Con la distribuzione Root diminuiamo la dimensione del file e il bitrate, ma di conseguenza diminuiamo anche la qualità del risultato. Con quella Square aumentiamo dimensione, bitrate e qualità. Il mio consiglio è quello di lasciare "Linear" e non scendere mai a "Root" tranne in casi estremi di necessità di spazio (se poi lo spazio avanza nessuno vieta di usare Square!!). Quello detto finora si può estendere tranquillamente alle due sezioni successive, ovvero "P Frames" e "B Frames" nella rispettiva sezione "Rule". Scegliere quale usare in questo caso diventa un po' più complesso. Iniziamo settando tutto alla migliore qualità, ovvero "Square", poi dopo il prossimo capitolo ci potremo rimettere le mani.
Nella sezione "Source" di questi possiamo invece scegliere se assegnare i Quantizer in base alla dimensione (Size) o al movimento (Motion) del frame. Io suggerisco di usare "Motion" in quanto nelle scene veloci una qualità inferiore salta meno all'occhio, mentre potrebbe esistere una scena lenta ma molto "pesante" che se venisse compressa molto perderebbe troppo di qualità e si noterebbe subito.
Non mi sono scordato di parlare del campo "B mult", ma per espressa dichiarazione dell'autore (3) non produce alcun effetto, in quanto non ancora implementato. La funzione "+ AVI overhead" serve ad aggiungere 24 bit per ogni frame, rispettando la struttura interna del formato AVI, in modo da avere una previsione del formato finale più esatta possibile (consiglio di spuntarlo per evitare sorprese di oversizing alla fine di tutto il lavoro).


Il passo successivo è quello di scegliere i limiti per la distribuzione dei quantizer nei vari frames delle varie scene.



Quelli scritti accanto sono i valori da cui io parto per poi muovermi e trovare quelli ottimali.

Come si nota ho scelto di dare i quantizer minimi ai Keyframe (Colonne I) in modo da averli alla miglior qualità possibile (qualcuno avrà già capito che il tipo di distribuzione per "I Frames" della sezione precedente non ha più senso in quanto non c'è differenza fra minimo e massimo). Gli altri valori nel gruppo "Fast" sono leggermente superiori ai corrispondenti del gruppo "Slow" questo per il famoso motivo per cui una scena veloce è visivamente accettabile anche più compressa e qualitativamente meno definita. I valori dei frame "B" sono più alti in quanto la loro dimensione può essere inferiore visto che sfruttano l'appoggio sia dei frame precedenti che di quelli successivi. Consiglio di partire da questi valori e vedere un po' cosa viene fuori dopo la procedura di "Autosplit".


Sotto al menù "Action" cliccare sulla voce "Autosplit e si apre una finestra che chiede due parametri.


In parole povere Divx4log crea una media del valore "motion" del file di log e fa il confronto con il valore del frame in analisi. Se il "motion" del frame è superiore alla media allora è classificato come "Fast" e seguirà le regole che abbiamo impostato nella schermata precedente sotto la sezione "Fast", altrimenti seguirà quelle della sezione "Slow".

"Averaging radius" è il numero dei frame usati per creare la media (in questo caso 750 frames prima di quello in analisi e 750 dopo - ovvero 30 secondi prima e 30 secondi dopo in caso di video PAL). Io non scendo moltissimo al di sotto di questo valore in quanto il programma riesce a gestire solo 250 sezioni e diminuendolo aumenta sì la precisione del calcolo, ma anche il numero di sezioni con il rischio di crash del programma o del SO. Un buon range è fra 750 e 2000.

"Frame step" è il salto fra due diverse analisi, ovvero, in questo caso analizzeremmo un frame ogni 5. Serve a diminuire il tempo di analisi, ma visto che il programma è velocissimo possiamo diminuirlo per aumentare la precisione del calcolo. Attenzione che le conseguenze sono le stesse del parametro precedente. Fra 3 e 5 dovrebbe funzionare bene. A questo punto premiamo "OK" e aspettiamo (non molto).




Torniamo alla sezione "Settings"



Come vediamo sono aumentati notevolmente sia la dimensione che il Bitrate. Adesso lo scopo del lavoro di rifinitura è quello di avere dimensione o Bitrate come noi lo vogliamo in base ai vari calcolatori, numero di CD, etc...

Per diminuire (sia dimensione che bitrate) possiamo iniziare a settare "B Frames" - "Rule" - "Linear". Poi ripetere con i "P Frames". Prima di arrivare a settare la regola su "Root" è bene rifinire i valori nella sezione "Splitting" aumentando di pochissime unità i valori di Max o Min B e P nelle sezioni Fast e Slow. Suggerisco di seguire questo ordine poiché è meglio "peggiorare" scene mosse che deteriorare quelle statiche. Una volta impostati nuovi valori basta rifare l'Autosplit e vedere il risultato. Il tutto va ripetuto fino ad avvicinarsi ai valori desiderati. Una volta che siamo vicini è sufficiente modificare le due caselline "Trim by" per piccole variazioni di pochi bit (nel bitrate ovviamente! Nella dimensione saranno cambiati molti Byte).
Che cosa fanno queste opzioni? Per chi è interessato dico solo che riducono la varianza della distribuzione dei valori "motion" o "size" allo scopo di eliminare i casi estremi. In gruppo di 10 ragazzi di cui nove alti 170 cm e uno di 200 cm l'altezza media è di 173 cm; se tolgo quello di due metri scendo subito di 3 bit (scusate volevo dire cm). Se il vostro scopo è, invece, quello di aumentare dimensione e bitrate (beati voi) basta diminuire i valori messi nella sezione "Splitting" e rifare l'Autosplit. Suggerisco di ottenere una dimensione o un bitrate leggerissimamente inferiori a quello ipotizzato per evitare spiacevoli sorprese.



Dopo tutto questo lavoro non scordiamoci di salvare il nuovo file log con un nome diverso dal precedente (Es. "2pass.log" ). Menù file "Save Target".

SECONDO PASSO

Poche parole per dire di riaprire il file VOB con il vostro encoder e salvare il file AVI definitivo impostando il codec con il bitrate che è risultato da Divx4log e MI RACCOMANDO: in "Variable bitrate mode" selezionate "2-pass, second pass" e in "Two-pass encoding log files" selezionate il nuovo file di log. Ancora un po' di attesa e potrete vedere il risultato.

I valori riportati sono di esempio e possono dare risultati diversi con film diversi, quindi non speriamo nel miracolo. Con le prove effettuate sono riuscito a diminuire il bitrate anche di 400-500 (da 1400 a 900) con degli ottimi risultati, ma le prove sono state molte prima di trovare un compromesso ottimale, quindi Buon Encoding a Tutti!

Strek
strek @ email.it

(1) Grazie a Iuzzo
(2) Grazie a LucaIT
Grazie a Dimitry per aver creato Divx4log

 

return to home page