[IT] Tutorial: come fare uno screenshot di un filmato ogni x secondi automaticamente

Premessa: in questo tutorial non vengono tenuti in considerazioni i metodi “manuali”, come per esempio cliccare su “Video -> Schermata” (Shift+S) in VLC o “File -> Save Image” (Alt+I) in Media Player Classic, in quanto comodi soltanto per catturare qualche screenshot estemporaneo e non una sequenza di screenshots in automatico.

Questo task può essere portato a termine in vari modi diversi, ma ad un’analisi più attenta ognuno di essi ha uno o più difetti che non lo rendono universale. Riassumiamone qualcuno per fare un po’ di chiarezza:

a) Metodo Virtualdub (interfaccia grafica). Tra le molteplici opzioni di questo grandioso editor video gratuito per Windows ve n’è una appositamente ideata allo scopo di esportare il filmato in una sequenza di immagini. Questa opzione, una volta aperto il filmato, è raggiungibile dal menù “File -> Export -> Image Sequence” e permette anche di scegliere il formato di output tra BMP, TGA, JPG e PNG, che può risultare comodo a molti. Ciò che però ne limita l’albito d’uso è il fatto che Virtualdub supporti soltanto i filmati AVI (Divx, Xvid..), per cui se dobbiamo “rippare” i fotogrammi da un filmato Matroska, MP4, FLV etc siamo tagliati fuori. In più non ha una voce che permetta di stabilire l’intervallo in secondi che deve trascorrere tra un fotogramma e un altro.

b) Metodo Image Grabber II (interfaccia grafica). Questo metodo, descritto accuratamente in questo mio vecchio tutorial, ha due grossi problemi: il software è decisamente buggato, crasha a ripetizione, non supporta molti formati e filmati molto grossi (memory leak?), per cui può andar bene soltanto per qualche AVI o WMV di media dimensione (spesso fa lo schizzinoso e crasha anche su quelli comunque…).

c) Metodo script VLC (linea di comando). VLC, indispensabile player video, grazie ai codec interni supporta praticamente qualsiasi formato video in circolazione, è multipiattaforma ed è possibile interagirci via linea di comando, caratteristica che amplia gli orizzonti a dismisura per chi come me adora creare scripts. Il problema è che, al momento in cui scrivo, non ha un’opzione per estrarre un fotogramma ogni x secondi, per cui in uno script un comando del genere:

vlc -I dummy -V image –start-time 3 –stop-time 4 –no-audio –image-out-format jpg –image-out-ratio 50 –image-out-prefix=fotogramma MyMovie.avi VLC:quit

andrebbe incastonato all’interno di un ciclo For fatto ad-hoc per accrescere automaticamente i parametri “start-time” e “stop-time” e raggiungere l’obiettivo che ci siamo preposti in questo tutorial. In più, i comandi di VLC sembrano variare leggermente da versione a versione, il che rende il tutto un po’ ostico, e a dare risultati assolutamente random in base al video di input. In sintesi, VLC legge qualsiasi formato video ma, in base ai miei test, è di fatto inaffidabile per l’obiettivo di questo tutorial.

Fatte queste premesse, ho deciso di ricorrere a MPlayer, riproduttore formalmente nato per piattaforma Linux, ma con portings disponibili anche per piattaforma Windows (che userò in questo tutorial) e Mac.

MPlayer, lo diciamo in apertura, ha una sintassi decisamente più usabile di quella di VLC e ha l’opzione che ci serve per salvare un fotogramma x secondi automaticamente. Ma vediamo come fare passo-passo:

1) scaricate e scompattate l’ultima versione di MPlayer (nel mio caso: MPlayer-p4-svn-31027-mt.7z);
2) aprite Blocco Note e scrivete il seguente script:

mplayer -vo png -nosound -sstep 1 -endpos 600 E:\MyMovie.mkv

dove:
– “png” è il formato di output in cui intendete salvare i vostri fotogrammi (di maggiore qualità rispetto a “jpg”);
– “nosound” evita che durante la fare di estrazione venga riprodotto l’audio del filmato (ed utilizzata maggiore cpu);
– “sstep” indica ogni quanti secondi estrarre un fotogramma, nel mio caso un fotogramma ogni secondo;
– “endpos” è il numero del secondo al quale fermare la procedura di estrazione (se volete che corrisponda al termine del film, calcolatene la durata in secondi e togliete 2-3 secondi da questo valore, perchè altrimenti MPlayer potrebbe andare in loop arrivato alla fine);
– “E:\MyMovie.mkv” è il percorso e nome del filmato (nel mio caso in formato Matroska);

e salvatelo come snapshot.bat nella cartella di MPlayer (nel mio caso: C:\Programmi Portable\MPlayer-p4-svn-31027-mt/)

3) doppio cliccate su snapshot.bat e godetevi la cartella di mplayer mentre si popola di immagini, una per ogni fotogramma!

Testato su vari filmati, tra cui un Matroska in alta definizione da 13 Gb e non ha fatto una grinza🙂

Buona estrazione!

2 risposte a [IT] Tutorial: come fare uno screenshot di un filmato ogni x secondi automaticamente

  1. napulenhio scrive:

    mmmm……interessante, ma funziona anche sotto linux?

  2. eldino scrive:

    @napulenhio
    non ho provato, ma la sintassi di MPlayer per Linux -dovrebbe- essere identica a quella del suo porting per Windows🙂

Lascia un commento

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...

%d blogger cliccano Mi Piace per questo: