• COMUNICATO IMPORTANTE: ACCOUNT BLOCCATI (16/02/2024) Clicca sul link per leggere il comunicato
  • Non sono ammesse registrazioni con indirizzi email temporanei usa e getta

Come ottenere l'effetto "Rallenty" (o Slow motion)?

AmbientVisions

Digital-Forum New User
Registrato
23 Maggio 2016
Messaggi
2
Buongiorno a tutti! Utilizzando la fotocamera compatta Nikon Coolpix S225 ho registrato un filmato di pochi secondi in formato AVI. Come faccio ad applicargli l'effetto Rallenty come in questo video? Vi riporto le specifiche del filmato: frequenza dei fotogrammi è 30 fotogrammi al secondo e la risoluzione è 640 x 480. Preferirei che l'effetto a rallentatore divenisse molto fluido. Grazie.
 
Si tratta di diminuire il frame-rate (quei 30 FPS), in corrispondenza della parte di filmato che ti interessa rallentare, per poi riconvertire il frame-rate al valore standard di 30 FPS, quindi in realta` devono essere duplicati i fotogrammi nella stessa zona interessata; e il filmato sara` di durata maggiore dell'originale. Cosi` facendo pero` otterresti un effetto probabilmente non molto fluido, ma dipende anche dal tipo di contenuto, in alcuni casi puo` andare gia` bene. Quella fluidita` si ottiene non semplicemente "rallentando" il video, ma invertendo un po' l'ordine dei fotogrammi vicini, in modo da "ingannare" l'occhio (in pratica e` lo stesso principio su cui si basa la conversione 24 o 25 -> 30fps); se fai caso infatti nel filmato che hai linkato, lo sfondo e` praticamente immobile - e gia` questo aiuta - e cio` che cambia sono gli spruzzi del tuffo; se osservi la sequenza degli spruzzi infatti non va in ordine perfettamente cronologico: si nota soprattutto nella parte a sinistra... poi gli effetti della compressione video che degradano la qualita` dei dettagli in questo caso aiuta anch'essa.

Io uso script Avisinth; con questo sicuramente si puo` ottenere quell'effetto, ma magari non e` molto agevole se non hai almeno un'infarinatura con il linguaggio di programmazione. Con altri programmi non saprei.
 
Ultima modifica:
Io uso script Avisinth; con questo sicuramente si puo` ottenere quell'effetto, ma magari non e` molto agevole se non hai almeno un'infarinatura con il linguaggio di programmazione. Con altri programmi non saprei.

Ho provato a diminuire i fotogrammi (da 30 fps a 12.500 con VirtualDub e Premiere Pro) ma il filmato esce a scatti, non è fluido come nel video che ho linkato. Si tratta di un filmato ripreso sott'acqua da una fotocamera compatta. Ho letto da questo articolo che per poter "rallentare" il video sono necessarie fotocamere/videocamere che abbiano come valore di fps 50/60, è vero? La mia arriva a 30 fps. Inoltre potresti dirmi come creare l'effetto slow motion con AvySynth? Un'infarinatura di linguaggio di programmazione l'ha possiedo.
 
Ho letto da questo articolo che per poter "rallentare" il video sono necessarie fotocamere/videocamere che abbiano come valore di fps 50/60, è vero?
Diciamo che piu' e' alto il frame-rate, nativo meglio e', in quanto si hanno più fotogrammi a disposizione; ma si dovrebbe raggiungere una fluidita' soddisfacente anche partendo da video a 30 fps nativi (intanto sempre meglio che 24 o 25); inoltre e' preferibile preventivamente separare i fotogrammi interi in semi-quadri (o campi), quindi in pratica si lavora a 60 fps con altezza dimezzata (per cui ci perdi in definizione spaziale, su quella temporale ci "guadagni" e cio' e' funzionale a migliorare la fluidita' nel rallentare il video). Il segreto sta poi nel non limitarsi a rallentarlo ma a "mischiare" i fotogrammi, come dicevo...

La mia arriva a 30 fps. Inoltre potresti dirmi come creare l'effetto slow motion con AvySynth? Un'infarinatura di linguaggio di programmazione l'ha possiedo.
Beh, se possiedi gia' un'infarinatura, non dovrebbe esser difficile. Puoi installare Avisinth e dare un'occhiata anche al manuale allegato che e' fatto abbastanza bene; se sai l'inglese, ancora meglio: in alcune parti e' piu' esaustivo quello inglese e (forse) viceversa.
Le funzione 'cuore' su cui basare lo script da applicare alla parte da rallentare, e' questa:

selectevery()

Esempio:
Codice:
video1=avisource("C:\filmato.avi")
video1=video1.separatefields()
spezzoneVideo1=video1.split(100, 500)
spezzoneVideo1rallentato = spezzoneVideo1.selectevery(8, 0,1, 2,3,2, 5,4, 7,6,7)
spezzoneVideo1rallentato = spezzoneVideo1rallentato.weave()
return spezzoneVideo1rallentato

E' uno script un po' rudimentale, giusto per dare un'idea... adesso mi rendo conto che sono un po' arrugginito non usandolo da un po'.

La funzione separatefields divide i fotogrammi interi in campi, per cui se il tuo video e' 640*480 a 30fps; con questa funzione diventa 640*240 a 60 fps, per cui non si pone piu' il problema che 30fps sarebbero pochi (il prezzo è la metà altezza in definizione).

split credo sia intuitivo... prende la parte di "video1" che va dal fotogramma 100 a 500 (supponendo che si vuole rallentare tale parte).

selectevery: nell'esempio ho usato quello che si fa nel "rallentamento" per portare il frame-rate da 24 a 30 fotogrammi: significa che 8 sono i fotogrammi considerati; cioè ogni 8 fotogrammi di "spezzoneVideo1", se ne aggiungono 2, ovvero vengono duplicati il 2 e il 7 in questo caso e come vedi il 5 e 4 sono invertiti e anche dal 3 al 2 o dal 7 al 6 si ha un ordine non cronologico ed è questo che inganna l'occhio dando maggiore fluidita' rispetto a non fare tale inversione. Nel tuo caso, visto che vuoi un rallentamento ben maggiore dovrai vedere quanti fotogrammi duplicare/mischiare, ad esempio puoi selezionane 10 e raddoppiare la sequenza dei fotogrammi 0123456789 in 0102132435465768798.
weave semplicemente riunisce i campi ottenendo di nuovo l'altezza 'originale'; nel tuo caso tornerebbe un 640*480 30fps (ma interlacciati, non progressivi se erano progressivi); per deinterlacciare si puoi usare uno dei tanti filtri (anche virtualdub stesso ne ha uno).

return: passa in uscita il video specificato; in questo caso torna a virtualdub (se apri lo script .avs con vdub) solo lo spezzone rallentato; lo script che ho fatto e' quindi solo un esempio "grezzo", perche' andrebbero sommate le parti non rallentate, quindi video1.split(0, 99) e la parte finale...

Il tutto poi andrebbe convertito ad un framerate standard, per questo si puo' usare prima di "return" la funzione changeFPS() (ma nel manuale di Avisinth mi ricordo che ce ne sono diverse); oppure ripassando il video con un ulteriore "selectevery()" stesso, impostato in modo che il numero di fotogrammi rientri in uno 'standard' (30,60,120fps...)
 
Ultima modifica:
Indietro
Alto Basso