{"id":1418,"date":"2013-05-28T10:47:08","date_gmt":"2013-05-28T08:47:08","guid":{"rendered":"http:\/\/blog.sfsoft.it\/?p=1418"},"modified":"2013-05-28T10:47:08","modified_gmt":"2013-05-28T08:47:08","slug":"creare-un-filmato-da-una-serie-di-immagini-con-avconv-ex-ffmpeg","status":"publish","type":"post","link":"http:\/\/www.sfsoft.it\/blog\/2013\/05\/28\/creare-un-filmato-da-una-serie-di-immagini-con-avconv-ex-ffmpeg\/","title":{"rendered":"Creare un filmato da una serie di immagini con AVCONV (ex FFMPEG)"},"content":{"rendered":"<p>Una prerogativa di quasi tutte le webcam IP di fascia madio\\bassa \u00e8 quella di non avere un sistema di salvataggio dello streaming su filmato ma solo di poter salvare le schermate ogni tanto e memorizzarle in un percorso remoto, magari via <em>FTP<\/em>.<\/p>\n<p>Possiamo convertire queste immagini in un filmato in pochi passaggi tramite il programma <em>avconv<\/em> ( ex <em>ffmpeg<\/em> ):<\/p>\n<pre lang=\"bash\">sudo apt-get install ffmpeg<\/pre>\n<p>Nonostante il nuovo nome del programma sia <em>avconv<\/em> si installa ancora con il vecchio nome per un discorso di retrocompatibilit\u00e0, il programma stesso comunque se eseguito come <em>ffmpeg<\/em> avverte:<\/p>\n<pre lang=\"bash\">$ ffmpeg\r\nffmpeg version 0.8.6-4:0.8.6-0ubuntu0.12.04.1, Copyright (c) 2000-2013 the Libav developers\r\n  built on Apr  2 2013 17:00:59 with gcc 4.6.3\r\n*** THIS PROGRAM IS DEPRECATED ***\r\nThis program is only provided for compatibility and will be removed in a future release. Please use avconv instead.<\/pre>\n<p>Innanzitutto impostiamo la webcam IP di nominare le foto nel formato <em>image_YYYYMMDD_HHMMSS.jpg<\/em> per avere il riferimento temporale, di scattare una foto ad esempio ogni 3 secondi e di salvarla in un percorso <em>FTP<\/em> ( ogni dispositivo ha le sue impostazioni ).<\/p>\n<p>Se il percorso <em>FTP<\/em> remoto punta gi\u00e0 alla nostra macchina abbiamo gi\u00e0 i file in locale, altrimenti dobbiamo collegarci al server <em>FTP<\/em> per prelevare le immagini, per questo \u00e8 possibile utilizzare <em>curlftpfs<\/em> che ci permette di montare un percorso <em>FTP<\/em>:<\/p>\n<pre lang=\"bash\">sudo apt-get install curlftpfs<\/pre>\n<p>Questo script esegue tutte le operazioni di lettura delle immagini e di conversione in filmato mettendo nel nome i riferimenti temporali delle immagini:<\/p>\n<pre lang=\"bash\">#!\/bin\/bash\r\n\r\n# Percorso dove viene montato la cartella FTP remota\r\nPATHR=\"\/percorso\/locale\"\r\n\r\n# Percorso dove verranno spostate le immagini da processare\r\nPATHIMG=\"\/percorso\/immagini\"\r\n\r\n# Percorso dove salvare il filmato\r\nPATHMOV=\"\/percorso\/filmati\"\r\n\r\n# Esegue il mount del percorso FTP\r\ncurlftpfs ftp:\/\/utente:password@server\/percorso\/remoto $PATHR\r\n\r\n# Legge tutti i files da processare\r\nfor fullfile in $PATHR\/*\r\ndo\r\n  if [[ -f $fullfile ]]; then\r\n    # Ottengo solo il nome del file escludendo il percorso\r\n    file=$( \/usr\/bin\/basename \"$fullfile\" )\r\n    array_files[${#array_files[*]}]=$file\r\n  fi\r\ndone\r\n\r\n# Ottiene il primo e l'ultimo file per reperire i riferimenti temporali\r\nFILEFROM=${array_files[0]}\r\nFILETO=${array_files[${#array_files[@]} - 1]}\r\n\r\n# Ottiene la parte YYYYMMDD_HHMMSS del primo file\r\nFILEEXT=(${FILEFROM\/\/.\/ })\r\nFILE=${FILEEXT[0]}\r\nEXT=${FILEEXT[1]}\r\nFILEPARTS=(${FILE\/\/_\/ })\r\nFROM=\"${FILEPARTS[1]}_${FILEPARTS[2]}\"\r\n\r\n# Ottiene la parte YYYYMMDD_HHMMSS dell'ultimo file\r\nFILEEXT=(${FILETO\/\/.\/ })\r\nFILE=${FILEEXT[0]}\r\nEXT=${FILEEXT[1]}\r\nFILEPARTS=(${FILE\/\/_\/ })\r\nTO=\"${FILEPARTS[1]}_${FILEPARTS[2]}\"\r\n\r\n# Sposta i files e li rinomina con un ID numerico progressivo\r\nx=1;\r\nfor i in \"${array_files[@]}\"; do\r\n  counter=$(printf %03d $x);\r\n  \/bin\/mv $PATHR\/$i $PATHIMG\/\"$counter\".jpg\r\n  x=$(($x+1));\r\ndone\r\n\r\n# Crea il filmato, il parametro -r 5 indica i FPS da usare, se omesso usa 25\r\n\/usr\/bin\/avconv -f image2 -r 5 -i $PATHIMG\/%03d.jpg \"${PATHMOV}\/movie-${FROM}-${TO}.avi\"\r\n\r\n# Rimuove le immagini\r\n\/bin\/rm $PATHIMG\/*\r\n\r\n# Scollega il percorso remoto\r\numount $PATHR<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Una prerogativa di quasi tutte le webcam IP di fascia madio\\bassa \u00e8 quella di non avere un sistema di salvataggio dello streaming su filmato ma solo di poter salvare le schermate ogni tanto e memorizzarle in un percorso remoto, magari via FTP. Possiamo convertire queste immagini in un filmato in pochi passaggi tramite il programma [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[15,3,23],"tags":[182,52,181,16,8,5],"_links":{"self":[{"href":"http:\/\/www.sfsoft.it\/blog\/wp-json\/wp\/v2\/posts\/1418"}],"collection":[{"href":"http:\/\/www.sfsoft.it\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.sfsoft.it\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.sfsoft.it\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.sfsoft.it\/blog\/wp-json\/wp\/v2\/comments?post=1418"}],"version-history":[{"count":1,"href":"http:\/\/www.sfsoft.it\/blog\/wp-json\/wp\/v2\/posts\/1418\/revisions"}],"predecessor-version":[{"id":1419,"href":"http:\/\/www.sfsoft.it\/blog\/wp-json\/wp\/v2\/posts\/1418\/revisions\/1419"}],"wp:attachment":[{"href":"http:\/\/www.sfsoft.it\/blog\/wp-json\/wp\/v2\/media?parent=1418"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.sfsoft.it\/blog\/wp-json\/wp\/v2\/categories?post=1418"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.sfsoft.it\/blog\/wp-json\/wp\/v2\/tags?post=1418"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}