giovedì 7 novembre 2013

Unire e velocizzare video con FFMPEG

Quando ero piccolo e guardavo Quark ero affascinato dalle riprese di persone che dormono (e soprattutto di quanto una persona si muova nel sonno) ..avrei voluto vedermi mentre dormivo

Naturalmente all'epoca non c'era ancora la diffusione dell'elettronica a basso costo di oggi ed avrei comunque dovuto dormire a finestra aperta. Oggi invece per pochi euro si possono comprare delle video camere ad infrarossi con illuminatori che permettono l'impiego in stanze di normali dimensioni completamente al buio. Il modello che ho comprato io era disponibile su Alibaba per meno di 20 euro (ovviamente e' privo di marca riconoscibile)


La video camera e' comoda perche' registra su una micro SD in formato GP3 ed ha solo dell'alimentazione da rete tramite il cavo USB ed il trasformatore allegato (fra parentesi il lettore microSD incluso nella confezione si e' rifiutato di lavorare sia su Windows che su Linux)

Alla fine si hanno file GP3 della lunghezza ciascuno di 30 minuti... il mio obbiettivo era quindi di avere un unico filmato accelerato (anche perche' vedere a tempo reale una registrazione di 7 ore di una persona che dorme e' francamente noioso). Cio' puo' essere fatto con FFMpeg
Per prima cosa si crea un file txt con all'interno la lista dei file che si vogliono unire secondo la seguente sintassi
-----------------------
file '1.gp3'
file '2.g3'
------------------------
chiamato questo file lista i vari video possono essere concatenati e convertiti in un unico passaggio con il comando
ffmpeg -f concat -i lista.txt -c copy night.avi

a questo punto si puo' velocizzare l'esecuzione con il comando
ffmpeg -i night.avi -r 40 -filter:v "setpts=0.05*PTS" -an n_veloce.avi

che permette di comprimere in 20 minuti oltre 7 ore di registrato (piu' veloce diventa schizofranico)