View Full Version : Creare video con altro video in riquadro piccolo: chiedo tutorial ;P
Ciao a tutti e buon anno nuovo!
Avrei l'esigenza di aggiungere ad un video principale, un altro video posizionato
in un angolo (es. in alto a destra rispetto il video principale) con dimensioni di circa 1/6 rispetto il video principale.
Sapreste dirmi se e come è possibile farlo con Avisynth + Virtualdub? (in realtà in passato avevo già trovato la spiegazione in questo forum, ma non trovo più nulla :( )
Potreste aiutarmi dandomi indicazioni passo passo o indicando link di tutorial in rete? :D
Ok ok ok, sono sempre io, non ho trovato il post, ma ho ritrovato alcuni appunti ... non rispondo completamente alla mia domanda, ma almeno eliminano le domande più banali ;P
Li riporto quì per chi può essere interessato (e anche per mè quando, tra qlc mese dimenticherò tutto e tornerò a chiedere ... ;P)
Ok, ora però mi dovreste aiutare a capire come fare lo script per un video grande senza audio + video piccolo con audio, sopra il video grande, posizionato in altro a destra, ma non esattamente nello spigolo bensì un poco discostato dai bordi (così fà più fico) e bordato con un bordo bianco (credo serva il comando ".addborders(2,2,2,2, color=$ffffff)" ) ...
Mi potreste aiutare?
-----------------------------------------------------------------------------
Ora vado a "spiegarmi" come ho ottenuto qualcosa di simile.
Allora, per ottenere questo video composto da 4 video piccoli + 2 video grandi:
http://i58.tinypic.com/302qsdc.jpg
serve:
- Avisynth per creare lo script che allego di seguito (basterebbe anche notepad, ma AvsP permette di vedere il preview del risultato).
- VirtualDub per caricare lo script di Avisynth e salvare come file .avi
il testo da inserire in Avisynth è il seguente:
A=AVISource("Z:\Documenti Luca\Video\AVSP\video-prova (1).avi"). ConvertToYuY2. BicubicResize(358,238).addborders(2,2,2,2, color=$ffffff)
B=AVISource("Z:\Documenti Luca\Video\AVSP\video-prova (2).avi"). ConvertToYuY2. BicubicResize(358,238).addborders(2,2,2,2, color=$ffffff)
C=AVISource("Z:\Documenti Luca\Video\AVSP\video-prova (3).avi"). ConvertToYuY2. BicubicResize(358,238).addborders(2,2,2,2, color=$ffffff)
D=AVISource("Z:\Documenti Luca\Video\AVSP\video-prova (1).avi"). ConvertToYuY2. BicubicResize(358,238).addborders(2,2,2,2, color=$ffffff)
E=AVISource("Z:\Documenti Luca\Video\AVSP\video-prova (2).avi"). ConvertToYuY2. BicubicResize(358,238).addborders(2,2,2,2, color=$ffffff)
F=AVISource("Z:\Documenti Luca\Video\AVSP\video-prova (3).avi"). ConvertToYuY2. BicubicResize(358,238).addborders(2,2,2,2, color=$ffffff)
G=AVISource("Z:\Documenti Luca\Video\AVSP\video-prova (4).avi"). ConvertToYuY2. BicubicResize(358,238).addborders(2,2,2,2, color=$ffffff)
H=AVISource("Z:\Documenti Luca\Video\AVSP\video-prova (1).avi"). ConvertToYuY2. BicubicResize(358,238).addborders(2,2,2,2, color=$ffffff)
st=StackVertical(e,f,g,d). BicubicResize(180,240)
st1=StackVertical(h,g). BicubicResize(360,240)
clip=StackHorizontal(st,st1,st)
Return clip
.. e per quello che mi ricordo:
"A=AVISource("percorso\video.avi")" assegna un "nome" ad ogni video
". ConvertToYuY2" ???
". BicubicResize(358,238)" assegna la dimensione
".addborders(2,2,2,2, color=$ffffff)" aggiunge i bordi di spessore 2 e il colore ffffff (bianco)
... a presto! :D
Ciao reggio.
Questo è lo script
x1=720
y1=400
clip1=AviSource("percorso_video",audio=false).BicubicResize (x1,y1)
x2=360
y2=200
clip2=AviSource("percorso_video").BicubicResize(x2,y2). Addborders (2,2,2,2, color=$ffffff)
offx=(x1-x2)-10
offy=10
clipT=Overlay(clip1, clip2,offx,offy)
audio= GetChannel(clip2, 1)
return AudioDub(clipt,audio)
Ora un pò di teoria :D
Audio=false toglie l'audio alla clip
x1 e y1 sono le dimensioni del video di sfondo, se non devi applicare un ridimensionamento del video nella riga successiva, quella che lo carica, puoi omettere il comando BicubicResize.
x2 e y2 sono le dimensioni del video da sovrapporre
offx calcola automaticamente la posizione orizzontale di questo video, il valore -10 serve per spostarlo verso sinistra di 10 pixel, puoi inserire il valore che vuoi.
offy determina la posizione verticale del video, 10 sono i pixel verso il basso, vale il discorso di prima.
Il filtro che unisce le clip è Overlay, (si poteva usare anche Layer) però l'audio è sempre quello della clip di sfondo che noi abbiamo eliminato quindi mentre la sintassi semplice sarebbe Overlay(clip1,clip2) dobbiamo agire diversamente:
Il filtro GetChannel prende l'audio dalla clip indicata.
Il filtro AudioDub prende il flusso video del primo argomento e il flusso audio del secondo e li unisce.
Se lo spazio colore dei due video è diverso lo script genera un'errore quindi alle prime righe di caricamento dei due video va aggiunto ConvertToyuy2 per renderle compatibili (e questo spero che ti spieghi perchè è stato usato anche nello script che hai descritto) ;)
GRANDE!! ESAVOC!!!!
Funziona alla grande!!! :D
Adesso però, mi vengo in mente altre 1000 domande per migliorare e aggiungere effetti ... ;)
... ad esempio
- se volessi che clip2 inizi dopo x secondi e sparisca prima della fine di x secondi?
- se volessi che clip2 "volteggi" sopra clip1?
- se volessi che si sentano 10sec di audio clip1, poi 5sec di silenzio poi 10sec di clip2 poi 5sec di silenzio e di nuovo da capo?
... te l'ho già chiesto mi pare, ma, tu.., dove diavolo le hai imparate tutte stè cose? non c'è un manualetto con i vari comandi usati separatamente con piccoli esempietti?
**aggiungo una domanda** partendo da 2 file da 17mb e 48mb, Virtualdub mi crea un avi di 5,3GB!!!!! perchè diventa così enorme?? :( (mi autorispondo: perchè in "Video/compression" non ho selezionato nessuna compressione ... sorry ... ;P)
Queste cose le ho imparate in rete, il wiki ufficiale di Avisynth lo trovi a questo indirizzo: http://avisynth.nl/index.php/Main_Page
Per limitare nel tempo la comparsa della clip puoi usare il comando Trim, per farlo con l'audio puoi usare AudioTrim ma ci devi lavorare un pò.
Per far svolazzare la clip... beh, Avisynth può molto ma non tutto, non è un'editor lineare quindi magari si può fare ma idrei che è piuttosto complicato specialmente per chi è alle prime armi.
Prova a usare il comando trim poi se hai dei problemi contattami pure che ti aiuto.
Per limitare nel tempo la comparsa della clip puoi usare il comando Trim, per farlo con l'audio puoi usare AudioTrim ma ci devi lavorare un pò.
Prova a usare il comando trim poi se hai dei problemi contattami pure che ti aiuto.
... ciao, altrochè prime armi :( sono proprio indietro forte ...
ho guardato quì: http://avisynth.nl/index.php/Trim
ed ho provato a smacchinare un poco, ho aggiunto il comando TRIM, che non dà errori, ma che non da luogo a nessun effetto ... :confused:
Immagino non sia applicato bene, ma purtroppo l'help di avisynth indica i comandi "puri", con esempi troppo stringati per chi è alle prime armi ...
Dove sbaglio sotto?
x1=720
y1=400
clip1=AviSource("Z:\Documenti Luca\Video\AVSP\Me and my broken heart.avi",audio=false).BicubicResize (x1,y1)
x2=180
y2=100
clip2=AviSource("Z:\Documenti Luca\Video\AVSP\Me and my broken heart (Andie Case Cover).avi").BicubicResize(x2,y2). Addborders (2,2,2,2, color=$ffffff)
Trim(clip2, 1000, 0)
offx=(x1-x2)-10
#offy=280
offy=(y1-y2)-10
clipT=Overlay(clip1, clip2,offx,offy)
audio= GetChannel(clip2, 1)
return AudioDub(clipt,audio)
L'errore è che scritto così il filtro Trim non funziona dato che successivamente il filtro Overlay va a caricare di nuovo la clip2 per intero.
Per farlo funzionare puoi:
Aggiungere il comando Trim alla riga dove dichiari la clip2
clip2=AviSource("percorso del video.avi").BicubicResize(x2,y2). Addborders (2,2,2,2, color=$ffffff). Trim(1000,0)
Oppure creare una nuova variabile a cui deve far riferimento il comando Overlay:
clip2=AviSource("percorso del video.avi").BicubicResize(x2,y2). Addborders (2,2,2,2, color=$ffffff)
clip3=Trim(clip2,1000,0)
....
clipT=Overlay(clip1, clip3,offx,offy)
Però così non riesci ad ottenere l'effetto che cerchi perchè la clip partirà dal frame 1000 ma contemporaneamente alla clip di sfondo.
Per farla sia partire che apparire dopo 1000 frame devi aggiungere qualche riga.
In genere si crea una funzione dedicata applicando il filtro Animate che deve agire sulla trasparenza e sul volume della clip in modo continuo ma si va nel complicato.
Un modo più "semplice" è questo:
Crei una prima sovrapposizione con la seconda clip con opacità a 0, volume a 0 di 999 frame
clip3=Overlay(clip1, clip2,offx,offy, opacity=0). Trim(0,999)
Per rendere compatibili i flussi audio, per portare a zero il volume non si può usare semplicemente KillAudio ma una strada più contorta:
audio=GetChannel(clip2, 1)
clip3a=AudioDub(clip3,audio). amplifydb(-20).Trim(0,350)
Crei una seconda sovrapposizione per il resto della clip
clip 4=Overlay(clip1, clip2,offx,offy). Trim (1000,0)
Aggiungi l'audio come nello script precedente
audio=GetChannel(clip2, 1)
clip4a=AudioDub(clip4,audio). Trim (351,0)
Unisci le clip
clipT=clip3a+clip4a
return clipt
Quindi lo script completo è:
x1=720
y1=400
clip1=Avisource("percorso del video").bicubicresize (x1,y1)
x2=360
y2=200
clip2=Avisource("percorso del video").bicubicresize(x2,y2). addborders (2,2,2,2, color=$ffffff)
offx=(x1-x2)-10
offy=10
clip3=Overlay(clip1, clip2,offx,offy, opacity=0)
audio=GetChannel(clip2, 1)
clip3a=AudioDub(clip3,audio). amplifydb(-20).Trim(0,350)
clip4=Overlay(clip1, clip2,offx,offy)
audio=GetChannel(clip2, 1)
clip4a=AudioDub(clip4,audio). Trim (351,0)
clipT=clip3a+clip4a
return clipt
Quindi lo script completo è:
x1=720
y1=400
clip1=Avisource("percorso del video").bicubicresize (x1,y1)
x2=360
y2=200
clip2=Avisource("percorso del video").bicubicresize(x2,y2). addborders (2,2,2,2, color=$ffffff)
offx=(x1-x2)-10
offy=10
clip3=Overlay(clip1, clip2,offx,offy, opacity=0)
audio=GetChannel(clip2, 1)
clip3a=AudioDub(clip3,audio). amplifydb(-20).Trim(0,350)
clip4=Overlay(clip1, clip2,offx,offy)
audio=GetChannel(clip2, 1)
clip4a=AudioDub(clip4,audio). Trim (351,0)
clipT=clip3a+clip4a
return clipt
Fantastico, grazie, funziona!! (Non avevo dubbi)
.. mi ci vorranno anni per capire tutto il codice, ma intanto sono riuscito a editare il video con le Barbie di mia figlia ;P
Grazie e a presto!
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.