Resize di file AVI per encoding DVD

Ci sono due modi per farlo, e i loro creatori (e sostenitori) di tutte e due le parti credono quasi religiosamente che il loro modo sia il migliore. C'é la modalità ITU e la modalità usata dai lettori software di DVD. Tutte le mie guide sono basate su quest'ultimo metodo (anche se con il procedimento all'incontrario, DVD -> AVI), e continuerò a fare così anche per questa guida. Chiedete ai "faziosi" di ITU quale è la loro soluzione.

Iniziamo. Immaginiamo di dover fare un DVD NTSC e la nostra sorgente ha una risoluzione di 640x272. La nostra risoluzione finale deve essere di 720x480. Come possiamo vedere subito, il nostro AVI è troppo piccolo :

E allora cosa fare? Allungare diagonalmente il video in modo che che riempa tutto lo schermo come nella figura sotto?

L'idea è buona, ma è sbagliata. Se allunghi in questo modo il video, non avrai problemi quando encoderai il video. Ma se vai a guardare il DVD, l'immagine risulterà compressa. Ma perché?



Semplice: perché la risoluzione di playback non è 720x480. Ipotizzando di non avere un AVI compresso e anamorfico, dobbiamo creare un DVD con aspect ratio di 4:3. E la risoluzione di playback di un DVD NTSC 4:3 è 720x(720/4*3) = 720x480 (maggiori informazioni sulle risoluzioni DVD le potete trovare qui). Ricominciamo daccapo, ma questa volta consideriamo la risoluzione di playback:

La risoluzione verticale di playback rimane immutata, però il filmato deve risultare corretto alla risoluzione di playback appunto, ovvero 640x480. Siccome il nostro video è già a 640 pixel orizzontali, rientra perfettamente in questa regola. Tutto quello che dobbiamo fare è aggiungere delle barre nere per riempire lo spazio verticale. Dobbiamo aggiungere 480 - 272 / 2 = 104 linee orizzontali di nero sia sopra che sotto al nostro AVI.

Usando AviSynth, dobbiamo creare uno script con questa linea:

AddBorders(0, 104, 0, 104)



Adesso abbiamo una immagine per il playback perfetta. Però, il nostro encoder si aspetta un video di dimensione 720x480. Beh, questo è tutto fuorché un problema. Adesso possiamo allungare orizzontalmente fino a 720 pixel. Risulterà allungata a vederla così, ma questo non ci interessa perché il lettore software effettuerà i passaggi all'incontrario di come li abbiamo eseguiti noi fino ad ora.

In AviSynth, aggiungete la seguente linea al vostro script:

BicubicResize(720,480,0,0.5)

E questo è tutto. Il vostro script ha queste tre linee:

AviSource("c:\movies\somemovie.avi")
AddBorders(0, 104, 0, 104)
BicubicResize(720,480,0,0.5)



Bene, questo era un esempio semplice. Perché non fare un esempio più complesso? Immaginiamo che il nostro file AVI abbia una risoluzione di 576x240. Guardiamo come si può raffrontare questo esempio con la risoluzione di playback (eh già, non facciamo lo stesso errore di prima e preocciamoci della risoluzione per l'encoding)

Abbiamo il rettangolo verde, e dobbiamo allargare il filmato per riempire tutta l'area grigia. Per allungare orizzontalmente dobbiamo utilizzare un fattore uguale a 640 / 576 = 1.11111

Dobbiamo anche allungare verticalmente con lo stesso fattore e che ci restituisce una risoluzione orizzontale di 240 * 1.111 = 266.6. Arrotondiamo il tutto al più vicino dei numeri dispari, quindi 266. Nello script, i nostri parametri per l'allargamento sarà questo comando:

BicubicResize(640,266,0,0.5)



Ehi, dove andate? Non abbiamo ancora finito. Dobbiamo riempire l'area bianca dell'immagine con le bande nere. Per fare questo usiamo questa linea in Avisynth:

AddBorders(0, 106, 0, 108)

Come ho fatto a ricavare quei numeri? Ricordate che la risoluzione verticale allungata è di 266, e che la risoluzione del DVD è di 480. Questo significa che dobbiamo aggiungere 480 - 266 / 2 = 107 linee di nero sia sopra che sotto l'immagine. Sfortunatamente, 107 è un numero dispari, quindi scegliamo due numeri pari al suo posto: aggiungiamo 106 pixel sopra e 108 sotto.

Non abbiamo ancora finito: dobbiamo allargare l'immagine fino alla risoluzione del DVD: 720x480.

Come prima, si può fare con questo comando::

BicubicResize(720,480,0,0.5)

Uhm... vi state chiedendo come mai ci sono due comandi di resize. Non possiamo combinarli insieme? Sì, possiamo farlo. Invece che fare uno zoom lineare sulla sorgente per riempire la risoluzione di playback, possiamo allungarla verticalmente fino alla risoluzione desiderata, mentre orizzontalmente allarghiamo l'immagine fino a riempire la risoluzione di playback come mostrato in figura (invece che fare uno zoom sull'area grigia utilizziamo l'area grigia e blu). Quindi, la nostra prima linea dello script diventa:

BicubicResize(720,266,0,0.5)

L'aggiunta delle bande nere è la solita storia, quindi:

AddBorders(0, 106, 0, 108)

Ricapitolando:

Dobbiamo allungare il filmato linearmente in modo che risulti compatibile con la risoluzione di playback (640x480 per un DVD NTSC). Dopo dobbiamo aggiungere le bande nere per riempire l'immagine se non è già stata riempita dopo l'allungamento (se la vostra sorgente è un film 4:3 non dovete aggiungere niente). Infine allunghiamo il nostro video alla risoluzione del DVD. Quando verrà visualizzato verrà eseguito tutto il procedimento all'incontrario e lo vedremo senza problemi.

E questo è tutto lo script AviSynth che serve:

AviSource("c:\movies\somemovie.avi")
BicubicResize(720,266,0,0.5)
AddBorders(0, 106, 0, 108)


Questo documento è stato aggiornato il 15/04/2004
Questo documento è stato tradotto da _YuSaKu_ il 24/05/2004

>> INDIETRO