DVD2AVI & MPEG2DEC

Un plugin uscito recentemente per l' Avisynth rende possibile velocizzare il frameservering dal DVD2AVI mantenendo i dati nel formato nativo del dvd, con impostazione di colore in YUV2 (VFAPI lavora in RGB quindi convertire tutto abbisogna di tempo). Tra l'altro, in combinazione con la versione ottimizzata per MMX dell'Avisynth, potete aspettarvi un buon incremento di performance. Sulla mia macchina ho guadagnato 4 fps usando questa combinazione per encodare DivX (facendo riferimento alla normale via tramite VFAPI). Ma, mentre di buono c'è che è più veloce, d'altro lato è molto più complesso quindi fintanto che non siete pratici nel VFAPI (spiegato per bene in qualunque guida in cui si usa il DVD2AVI) vi suggerisco di non perdere tempo con questo metodo.

Dato che in questa guida useremo l'avisynth, e non un programma di frameserving sempliciotto (lo useremo anche per croppare è resizare) ti suggerisco caldamente di fare un giro sulla Avisynth homepage e leggerti il tutorial dell'Avisynth oltre che l'Avisynth scripting reference (spiega tutti i comandi in modo esaustivo NDT). Uscirtene fuori senza aver letto tutto questo è come farlo per un qualunque programma complesso: Le altre persone non faranno altro che darti il classico RTFM! (tradotto: leggiti il fottuto manuale NDT)

Devi usare questi software per la guida:

MMX optimized Avisynth
DVD2AVI 1.76 o successivi
MPEG2DEC Avisynth plugin.

Incominciamo!

Punto 1: Crea il progetto DVD2AVI

Prima di tutto apri i tuoi files VOB. Se i files sono nominati in modo prograssivo, caricando il primo VOB gli altri saranno aggiunti automaticamente.

La prossima mossa è scoprire con che tipo di formato abbiamo a che fare. Premi F5 per avviare la preview. Lasciala scorrere per un pò e controlla la status window.

Ci sono due cose che devi scriverti: La prima è l'Aspect Ratio. Nell'esempio è 16:9 (tu puoi avere anche 4:3). L'altro è il frame type.

Frame Rate = 25.000 fps: il video è PAL e puoi tranquillamente saltare il punto successivo.

Frame Rate = 29.970 fps: Lascia andare la preview per un paio di minuti, e poi controlla il Video Type: Se c'è scritto FILM con una percentuale maggiore o uguale a 95% puoi attivare l'opzione Forced FILM come spiegato sotto. Altrimenti devi applicare l'IVTC.

 

 

 

 

 

Il prossimo punto è il decoding dell' audio. Puoi usare il tuo preferito audio decoder oppure lasciar fare a DVD2AVI.

Dato che io preferisco lasciarlo fare a Graphedit seleziono sempre "None" . Seleziona la guista traccia se vuoi che DVD2AVI ne decodi l'audio. Se hai bisogno del downsampling attiva l'opzione "downsampling" nel submenu "48 -> 44.1KHz". Usa High quality se fai questa operazione.

Infine nel submenu Dolby Digital attiva decode.

Adesso assicuriamoci che il video rimanga in formato YUV. Assicurati che sia selezionato YUV, altrimenti non otteremo la velocità sperata.

La prossima cosa è trovare i parametri per il cropping che effettueremo in un secondo momento (i VCD&SVCD non ne hanno bisogno). Muovi lo slider principale del DVD2AVI fino ad una posizione dove puoi vedere una figura a schermo (colorata abbastanza da delineare i bordi dell'area video NDT), poi attiva "Clip & Resize" dal submenu Video e spunta la casella in alto a destra:

Nota: alcune opzioni sono disattivate e saranno implementate in futuro.

Muovi gli slider Top e Bottom finchè non scompaiono le bande nere supra e sotto il tuo video. Sfortunatamente al momento non è possibile croppare un singolo pixel, quindi se pensi che un certo valore lasci ancora un pò di banda nera mentre uno più alto taglia già l'immagine usa un valore medio.

I valori riportati nello screenshot sono quelli per un film di formato 1:2.35 (16:9), ma questi valori non sono validi per tutt i film quindi è meglio che tu faccia un pò di prove invece di fidarti ciecamente dei valori racimolati dal web.

Una volta trovati i giusti valori disattiva la casella di prima (quella in alto a destra NDT).

Adesso devi creare il file DVD2AVI project che sarà utilizzato tra poco.

Punto 2: Avisynth setup & creazione dello script

Prima di tutto l'installazione. Dopo aver decompresso i files copia AVISYNTH.dll nella seguente directory:

Windows 9x/ ME: c:\windows\system
Windows NT / 2000: c:\winnt\system
Windows XP: c:\windows\system32

Poi dippio click su install.reg ed assicurati di fare il reboot della macchina.

Adesso controlliamo che l'Avisynth sia correttamente installato creando il seguente script:

AviSource("c:\temp\test.avi")

Scrivi questa linea con Notepad, poi salvalo come c:\test.avs. Assicurati che sotto filetype nella schermata di salvataggio sia scritto All Files(tutti i files) (*.*) e NON Textfile (file di testo) (*.txt). Ora clikka con il destro sul c:\test.avs in explorer, seleziona "apri con.." e scegli il Media Player dalla lista. Se lo apre, tutto è andato bene e possiamo andare avanti.

Per caricare il plugin MPEG2Dec dobbiamo usare il comando LoadPlugin e dargli come argomento la path completa ed il nome del file del plugin. Poi dobbiamo aprire il file DVD2AVI project usando il comando mpeg2source. Nota che è MPEG2Dec che fornisce questo comando quinto se ti scordi di mettere la riga con il LoadPlugin non funzionerà nula. Poi facciamo un semplice script che apra il file .d2v .

LoadPlugin("c:\temp\MPEG2DEC.DLL")
mpeg2source("D:\matrix\matrix.d2v")

Se apri questo script con un qualunque programma di encoding che possa leggere i files .avs avrai a video l'otput del DVD2AVI, che è il file MPEG-2 decompresso senza che sia resizato (quindi l'aspect ratio non sarà rispettato).

La prossima cosa da fare è il cropping. Puoi saltare questa parte se stai creando un SVCD. Adesso sono utili le impostazioni scritte prima quando usavamo il DVD2AVI. Il Cropping viene effettuato con la funzione Crop del Avisynth. Ci vogliono 4 argomenti: Sinistra, alto, dimensione d'output orizzontale e dimensione d'output verticale. Questo è un esempio per croppare un video in 16:9 1:2.35 NTSC:

Crop(0,60,720,360)

Così verranno tagliate 60 linee del video dall'alto, e 60 dal basso(ricordati che il video in origine era 720x480, quindi se porti via 60 linee, mantieni 360 linee, dato che hai tagliato anche 60 linee dal basso: 60 (banda nera alta) + 360 (video) + 60 (banda nera bassa) = 480. Se metti la liea che ho scritto sopra in uscita avrai un video di 720x360 pixel senza bande nere, solo di dati video.

DivX resizing

Adesso l'ultima operazione: il resizing. Avisynth ti permette di scegliere tra Bilinear e Bicubic resize. Bicubic è più preciso e lento, e dovrebbe essere usato per lavori d'alta qualità (2 CD DivX o SVCD). Gli argomenti da immettere sono gli stessi per entrambi i metodi: Specifica la dimensione verticale ed orizzontale che desideri in uscita. Ad esempio per ridimensionare il video a 640x272 usando il Bilinear resizing scrivi questa linea nello script:

BilinearResize(640,272)

Per usare il Bicubic Resize la linea sarebbe stata: BicubicResize(640x272).

Allora, uno script completo che legge il d2v project, croppa e ridimensiona a 640x272 è il seguente:

LoadPlugin("C:\temp\MPEG2DEC\MPEG2DEC.DLL")
mpeg2source("d:\matrix\matrix-unresized.d2v")
Crop(0,60,720,360)
BilinearResize(640,272)

Nota: E' anche possibile fare il resizing ed il cropping usando normali filtri. Per farlo basta che scrivi i parametri di crop a seguito dei parametri per il resize come riportato sotto:

BilinearResize(640,272,0,60,720,360)

SVCD resizing

Come spiegato prima qua non c'è bisogno di cropping. Ma ancora una volta dobbiamo fare il letterboxing. Coloro che usano il VirtualDub per il SVCD frameserving sanno già che quello che dobbiamo fare è ridimensionare a 480x362, ed aggiungere le bande nere. Per mettere bordi neri usiamo il comando AddBorders che necessita dei seguenti 4 argomenti: Sinistra, Alto, Destra, basso. Nel linguaggio dell'Avisynth si scrive così:

BicubicResize(480,360)
AddBorders(0,60,0,60)

Quindi lo script diventerebbe:

LoadPlugin("C:\temp\MPEG2DEC\MPEG2DEC.DLL")
mpeg2source("d:\matrix\matrix-unresized.d2v")
BicubicResize(480,360)
AddBorders(0,60,0,60)

Fai attenzione che per un video PAL sarebbe dovuto essere:

LoadPlugin("C:\temp\MPEG2DEC\MPEG2DEC.DLL")
mpeg2source("d:\matrix\matrix-unresized.d2v")
BicubicResize(480,432)
AddBorders(0,72,0,72)

Audio:

Se hai trattato l'audio con il DVD2AVI puoi caricarlo dallo script dell'Aviynth. Per far questo usiamo la funzione WavFile con la path ed il nome del file WAV come argomento. Ed ora entriamo un pò più nella programmazione. Non so se sia completamente corretto ma a me sembra che mpeg2source ricrei il video mpeg2 stream e tutte le seguenti operazioni siano applicate su questo flusso in uscita. Se aggiungi wavsource("d:\matrix\audio.wav") dopo mpeg2source finirai con l'avere un pò di problemi, dato che Avisynth cercherebbe di applicare il cropping al flusso wave, ed ovviamente questo non può esser fatto. Quello che devi fare è definire variabili temporanee per il video e l'audio. Ad esempio:

video=mpeg2source("d:\matrix\matrix-unresized.d2v")
audio=wavsource("d:\matrix\audio.wav")
audiodub(video,audio)

L'ultima linea incolla il video e l'audio audio in un solo fluso. Adeso puoi mettere le tue linee per il crop & resize.

LoadPlugin("C:\temp\MPEG2DEC\MPEG2DEC.DLL")
video=mpeg2source("d:\matrix\matrix-unresized.d2v")
audio=wavsource("d:\matrix\audio.wav")
audiodub(video,audio)
Crop(0,60,720,360)
BilinearResize(640,272)

Questo è il risultato finale che dovresti avere scritto nello script.

Adesso puoi aprire il file .avs dal programma di encoding. Non allego le guide per continuare l'encoding dato che creerebbero solo casono,dato che se sei arrivato fin qui saprai sicuramente di quale guida hai bisogno per continuare il tuo lavoro diencoding.

Un ultima parolina: In VirtualDub devi impostare il video a "Fast Recompress" per approfittare del surplus in velocità. Cioè vuol dire che non puoi usare altri filtri :/

Traduzione : 21-07-2002