[TUTORIAL] Come creare delle ottime GIF

Viaggio tra i segreti del tuo pc...

Moderatori: Super Zeta, AlexSmith

Regole del forum
Non aprite topic per ogni sciocchezza, usate quelli già presenti!
Rispondi
Messaggio
Autore
Avatar utente
+Fracassato+
Bannato
Bannato
Messaggi: 3406
Iscritto il: 28/06/2011, 16:24
Località: Copyright ©

[TUTORIAL] Come creare delle ottime GIF

#1 Messaggio da +Fracassato+ »

[TUTORIAL] Come creare delle ottime GIF

In questo tutorial vi mostrerò come creare delle ottime GIF in un modo ( relativamente ) semplice. Niente di complicato, dovrete solo ricordarvi giusto qualche passaggio.
Non spaventatevi dall'inglese perché i passaggi saranno tutti spiegati nel dettaglio e non dovrete prestarci troppa attenzione.
Nel caso poi farò un elenco degli errori più comuni e ve li spiegherò, prima che andiate in tilt e iniziate a postare domande.

Gli strumenti che vi servono sono:

Avisynth - AviSynth_150419.exe ( appena si apre la pagina scaricate questo file )

FFmpeg - http://ffmpeg.zeranoe.com/builds/ ( a questo link scaricate la versione a 32 bit statica di FFmpeg. Dovrebbe essere tipo: Download FFmpeg git-(serie di numeri) 32-bit Static - Per gli utenti di Windows XP sembra che il team di FFmpeg abbia aggiunto recentemente una libreria che non è presente su XP, quindi l'ultima versione funzionante per voi è questa ffmpeg-20150525-git-8ce564e-win32-static.7z, scaricabile da questo indirizzo link)

AvsPMod - AvsPmod_v2.5.1.zip ( anche qui appena si apre la pagina cliccate sul link che porta il nome AvsPmod_v2.5.1.zip e partirà il download )
[Scopri]Spoiler
MPC-HC - link al download ( mi raccomando, scaricate la versione a 32-bit !!! ) MPC-HC è un video player come lo è VLC, mpv, MPlayer e molti altri. Forse avreste sentito parlare solo di VLC per i meno interessati di questo campo perché è il più popolare, ma a differenza di MPC-HC, VLC non può riprodurre file Avisynth, quindi nel nostro caso è inutile. MPC-HC vi servirà per riprodurre ciò che con Avisynth avrete editato. Principalmente servira per vedere come effettivamente si presenterà sul video player il file video a fine editing. In fin dei conti serve solamente a chi edita un video con operazioni più complesse, quindi è per questo che l'ho messo sotto spoiler, perché non necessario per le GIF, dato che AvsPMod può riprodurre in anteprima tracce video - senza audio - per vedere il risultato )

==================================================
Pagine utili
================
Avisynth

pagina principale della Wiki di Avisynth
filtri interni di Avisynth
filtri esterni di Avisynth

A noi ci interessa particolarmente questo plugin:

FFmpegSource plugin scaricabile a questo indirizzo link ( scaricate la versione 2.21; il file si chiama ffms2-2.21-icl.7z )
================

================
FFmpeg

link alla documentazione

A noi ci interessano particolarmente questi due filtri:

palettegen
paletteuse
================

================
Tutorial vero e proprio

Per semplicità d'utilizzo, create un'unica cartella denominata Avisynth-workspace e scaricateci ( ed estraeteci nel caso del file zippati ) tutti gli strumenti necessari elencati poco sopra: Avisynth, FFmpeg e AvsPMod.

================
Come installare Avisynth

Per installare Avisynth basterà semplicemente avviare l'installer che farà partire un'installazione autoguidata.
Vi rendo le cose ancora più semplici e vi mostro il tutto con degli screenshots.
avviate l'installer ha scritto:Immagine
scegliete la lingua d'installazione in italiano ha scritto:Immagine
accettate la licenza open-source ha scritto:Immagine
proseguite avanti scegliendo l'installazione standard ha scritto:Immagine
scegliete il percorso che desiderate e cliccate poi su installa ha scritto:Immagine
A questo punto il file che avete precedentemente scaricato, ovvero ffms2-2.21-icl.7z, non è altro che il plugin che servirà per caricare qualsiasi traccia audio/video che la libreria FFmpeg può decodificare ( praticamente quasi tutto ).

Estraete il tutto nella cartella Avisynth-workspace, per poi copiarlo nella cartella plugins di Avisynth che si trova all'interno della cartella dove risiedono gli altri vostri programmi. Una situazione come questa:
immagine ha scritto:Immagine
================

Ora che abbiamo finito di installare e copiare tutto il necessario in Avisynth, non ci resta che iniziare il nostro lavoro di editing.

Cliccate sull'icona di AvsPMod ( una specie di gomma bianca e blue ) e vi si aprirà il prorgramma con una pagina bianca; è lì che scriverete il vostro script.
Il caso più semplice può essere questo:

Codice: Seleziona tutto

/* PLUGINS */

LoadPlugin("C:\Program Files\AviSynth2.6\plugins\ffms2-2.21-icl\x86\ffms2.dll")

/* SCRIPT */
vid = FFVideoSource("Percorso completo del file video da cui vorrete trarre la vostra GIF, racchiuso tra doppi apici poiché il nome viene trattato come una stringa")

return vid
Questo qui sopra - come già detto - è il caso più semplice di script che potrete creare, ovvero essere in grado di visualizzare il file video semplicemente usando la funziona del plugin ffms2, che è FFVideoSource.

L'inconveniente del plugin ffms2 è che deve indicizzare ogni nuovo file che gli si presenta, quindi quando vorrete caricare dei file in HD, i computer meno potenti faranno più fatica se non addirittura falliranno nell'indicizzare il file. Perciò fate attenzione e scegliete file non troppo grandi, di solito meno di 500 MB per file sarebbe l'ideale.

Ritornando al nostro lavoro di editing, come si può immaginare, nessuno vorrà fare una GIF di un intero video, ma sceglierà un particolare momento del video che più gli piace e farci su la sua animazione.

Qua entra in gioco la funzione interna di Avisynth chiamata Trim. Per approfondimenti sulla funzione visitare questa pagina.

In sostanza la funzione Trim prende due argomenti. Il primo frame del video e l'ultimo frame del video nell'intervallo dei valori che avete scelto.
Per rendere le cose più semplici, riprendiamo lo script di prima e facciamo un esempio pratico:

Codice: Seleziona tutto

/* PLUGINS */

LoadPlugin("C:\Program Files\AviSynth2.6\plugins\ffms2-2.21-icl\x86\ffms2.dll")

/* SCRIPT */
vid = FFVideoSource("Percorso completo del file video da cui vorrete trarre la vostra GIF, racchiuso tra doppi apici poiché il nome viene trattato come una stringa")

vid = vid.Trim( 100, 200 )

return vid
In questo esempio la funzione Trim restituirà SOLO i frame del video che vanno dal numero 100 al 200.

La funzione Trim può anche essere chiamata più volte consecutivamente, del tipo:

Codice: Seleziona tutto

vid = vid.Trim( a, b ).Trim( c, d ).Trim( e, f )...è così via
I casi più utilizzati della funzione Trim sono:

Codice: Seleziona tutto


/* !!! ATTENZIONE !!! La variabile [b]vid[/b] è solo un esempio !!! Potete usare qualsiasi nome !!! Come sempre vale la regola che ogni variabile debba avere un nome appropriato per il suo scopo, altrimenti non si capirebbe niente. */

/* Primo caso */
vid = vid.Trim( a, b ) #prende in considerazione solo l'intervallo compreso tra gli estremi [b]a[/b] e [b]b[/b] inclusi.

/* Secondo caso */
vid = vid.Trim( a, 0 ) #prende in considerazione solo i frame a partire dal frame [b]a[/b] fino alla fine del video

/* Secondo caso */
vid = vid.Trim( a, -b ) #prende in considerazione solo i primi [b]b[/b] frame a partire dal frame [b]a[/b]. Una sorta di sottrazione.
Infine, se avrete bisogno di ridurre le dimensioni della GIF perché troppo grande, potete scalare l'immagine con molti algoritmi di resampling.
Quello che a noi interessa è l'algoritmo di resampling di Lancozs, che è l'algoritmo migliore poiché è quello che riesce a preservare più dettagli ad alti bitrate, e siccome il formato GIF è un formato lossless ( cioè senza perdita di informazioni, quindi bitrate alto ), questo algoritmo farà al caso nostro.

Lo script diventerà così:

Codice: Seleziona tutto

/* PLUGINS */

LoadPlugin("C:\Program Files\AviSynth2.6\plugins\ffms2-2.21-icl\x86\ffms2.dll")

/* SCRIPT */
vid = FFVideoSource("Percorso completo del file video da cui vorrete trarre la vostra GIF, racchiuso tra doppi apici poiché il nome viene trattato come una stringa")

vid = vid.Trim( 100, 200 ).LanczosResize( 640, 360 )

return vid
Quando avrete finito di stendere il vostro script, cliccate sul triangolino nero in basso a sinistra e apparirà l'anteprima del vostro lavoro.
Vi consiglio di cliccare il triangolo la prima volta subito dopo che il plugin ffms2 avrà indicizzato il file video, poi basterà cliccare sull'anteprima per aggiornare automaticamente le operazioni che avete fatto.

Mi raccomando, salvate sempre prima che si inchiodi il programma se avete un computer poco potente, altrimenti dovrete rifare tutto da capo.

Ed ecco l'immagine che spiega il tutto visivamente.
immagine ha scritto:Immagine

A questo punto la parte finale.

Nella cartella Avisynth-workspace dovreste avere la cartella zippata del file ffmpeg-20150525-git-8ce564e-win32-static.7z ( prendo in considerazione l'ultima versione funzionante per XP solo per comodità ).

All'interno di questa cartella ci dovrà essere un file BATCH nominato ff-prompt; cliccatelo e il file batch aprirà il prompt dei comandi aggiungendo temporaneamente il percorso del programma ffmpeg ( che si trova nella cartella bin ) nella vostra PATH del sistema, così da permettere di richiamare il programma ffmpeg da qualsiasi directory senza specificare la sua locazione originale.

Ora dobbiamo dare in pasto il nostro script ad ffmpeg.
Qui entrano in gioco i due filtri di ffmpeg le cui pagine di documentazione ho linkato all'inizio del post.

Per la prima volta semplicemente copiate quello che scrivo qui sotto.
Pimo passaggio ( copiate nel prompt solo quello che c'è scritto nel tag code, ovviamente cambiando la stringa nei doppi apici col vero percorso del file in input e del file in output ).

Codice: Seleziona tutto

ffmpeg -i "Percorso dello script" -vf "palettegen=stats_mode=full" -y "Percosrso dove volete salvare l'immagine" 
Ricordate di salvare l'immagine in formato PNG ( esempio palette.png ) poiché il formato PNG è anche lui un formato lossless ( senza perdita di informazioni ) e quindi è l'ideale per salvare la palette che conterrà la tabella dei colori essenziali da riprodurre nella GIF.

Secondo passaggio ( stesse raccomandazione del primo passaggio )

Codice: Seleziona tutto

ffmpeg -i "Percorso dello script" -i " Percorso di palette.png" -lavfi "paletteuse=dither=bayer:bayer_scale=3" -y "Percorso dove volete salvare la GIF"
Anche qui ricordatevi di salvare l'output dell'immagine nel formato GIF ( per esempio output.gif ) e avrete la vostra bella immagine GIF !!!
Ecco un'anteprima del fantastico lavoro che può fare ffmpeg.

Immagine

Personalmente sono risucito ad ottenere migliori risultati con l'algoritmo di bayer in scala 3. Ho provato con gli altri algoritmi riportati nella documentazione del filtro, ma c'era troppo colour banding e altri artifatti fastidiosi.

Guida un pò lunghetta, non fatevi spaventare, perché ne vale la pena. Potete sbizzarrirvi quanto volete e creare tantissime GIF !!!
Se avete dubbi o avete bisogno di chiarimenti, fate le vostre domande qua sotto.

Più avanti posterò un file BATCH che automatizza tutto il processo di pipeing in FFmpeg, in modo da evitare tutta quel copia-incolla su riga di comando che alla lunga diventa noioso ( anche perché non mi sembra che il prompt di Windows abbia una cronologia dei comandi come su Unix, quindi ogni volta che spegnete e riaccendete il PC dovrete copia-incollare sempre la prima volta le righe di comandi di FFmpeg ).

Spero che questa guida sia utile a qualcuno !!!

Avatar utente
federicoweb
Storico dell'impulso
Storico dell'impulso
Messaggi: 26487
Iscritto il: 25/10/2007, 1:17
Località: Milano
Contatta:

Re: [TUTORIAL] Come creare delle ottime GIF

#2 Messaggio da federicoweb »

solo a Sensibilmente !
cmq grazie
Chi non ha mai posseduto un cane, non sa cosa significhi essere amato ( Arthur Schopenhauer )
" Ste sgallettate che non sanno fare un cazzo e non partoriscono un concetto nemmeno sotto tortura
sono sacchi a pelo per il cazzo " ( Cit. ZETA )

Avatar utente
+Fracassato+
Bannato
Bannato
Messaggi: 3406
Iscritto il: 28/06/2011, 16:24
Località: Copyright ©

Re: [TUTORIAL] Come creare delle ottime GIF

#3 Messaggio da +Fracassato+ »

Dato che non posso modificare il mio post d'apertura, segnalo che lo sviluppo di Avisynth in fase alpha è terminato, quindi il nuovo file da scaricare è questo:

AviSynth_260.exe

maverick_mav
Nuovi Impulsi
Nuovi Impulsi
Messaggi: 124
Iscritto il: 08/05/2011, 21:49

Re: [TUTORIAL] Come creare delle ottime GIF

#4 Messaggio da maverick_mav »

grazie proverò

Rispondi

Torna a “InformaticHard”