StefanoLaguardia.eu

[Linux] Videosorveglianza con webcam: facile come bere un bicchiere d'acqua, grazie a Motion!

Sono sempre stato incuriosito dalla possibilità di uso non convenzionale della mia webcam. Onestamente da quando l’ho acquistata quasi un anno fa l’avrò usata al massimo in 3 o 4 occasioni. Così, mi sono detto che forse era il caso di usare la webcam per un uso diverso dalle videochiamate e visto che mi trovo spesso a stare lontano dal mio desktop che resta acceso anche in mia assenza, non è del tutto sbagliata l’idea di videosorvegliarlo. Ovviamente con Linux si può fare TUTTO, anche l’inimmaginabile… basta un po’ di tempo ed un po’ di esperienza ed il gioco è fatto. Oggi si parla di Motion, software capace di rilevare movimenti in una fonte video (quale una webcam) e registarli in file video ed immagini.

Lo so, siete in molti a conoscere Motion. Ma, da quanto ho visto in giro per la rete, non esistono guide in italiano che ne spieghino in maniera esaustiva l’uso e la configurazione. Ecco perchè ho deciso di scrivere qualche parola in tal proposito.

Chi ha già avuto modo di leggere i miei articoli sa che farò riferimento all’installazione di Motion su Debian e Ubuntu, ma come al solito è possibile riprodurre quanto scrivo anche su altre distribuzioni. Inoltre, considererò che abbiate una webcam già installata e funzionante. Se così non fosse, cercate la guida per far funzionare la vostra webcam su Linux… qui una lista di periferiche compatibili o meno con Linux.

Inziamo l’installazione come sempre con terminale di root:

# apt-get install motion

Verrà installato il necessario per usare Motion. Infatti, sin da subito, se la vostra webcam è funzionante, Motion inizerà a captare le immagini e vi ritroverete nella cartella /tmp/motion una miriade di immagini Jpg. Proprio per questo motivo è opportuno configurare per bene il software in modo da renderlo adatto alle nostre esigenze.

Procediamo, in primis, con lo spegnimento del software. Da un terminale di root digitate il seguente comando:

# /etc/init.d/motion stop

Adesso siamo pronti a ritoccare il file “/etc/motion/motion.conf” ed eventualmente i file “/etc/motion/thread1.conf” e seguenti. Il primo file menzionato contiene tutte le direttive necessarie al funzionamento di Motion e necessarie al funzionamento di una sola webcam. I files “threadX.conf” (dove al posto di X c’è un numero progressivo) devono essere editati solo ed esclusiva,ente nel caso in cui abbiate più di una webcam da collegare alla vostra station di videosorveglianza 😀 Badate bene… il team di sviluppo di motion sconsiglia di usare tutte telecamere USB, a meno che non abbiate apposite schede PCI capaci di gestire singolarmente le singole “prese” usb. Infatti, una webcam su USB è molto facile che saturi il canale su cui è attaccata! Ma andiamo avanti.

Editiamo il file “motion.conf” con il nostro editor di testi preferito. Io userò vim, ma se volete potete usare il più comodo Gedit o Kedit sostituendo al comando che segue la parola “vim” con l’editor che più vi aggrada:

# vim /etc/motion/motion.conf

Verrà aperto un file molto lungo e ricco di opzioni. Alcune di esse è preferibile lasciarle come sono, a meno di non sapere esattamente cosa si sta per fare. Io vi mostrerò come ritoccare alcune opzioni in modo da far salvare le immagini in una directory più comoda da consultare, come configurare alcuni parametri della registrazione ed, infine, in che modo usare l’interfaccia web proteggendola con username e password (non abilitate di default!).

Iniziamo con il configurare Motion come demone. Quindi editiamo una delle prime righe come segue:

# Start in daemon (background) mode and release terminal (default: off)
daemon on

Proseguiamo modificando la directory dove Motion creera il suo pid. Questo ci sarà utile quando avvieremo il software da utente semplice e non all’avvio del computer come avviene normalmente:

# File to store the process ID, also called pid file. (default: not defined)
process_id_file /VOSTRA/HOME/motion.pid

Recatevi nella sezione del file di configurazione definita “Capture device options” ed editate le righe relative alla definizione della vostra webcam:

# Image width (pixels). Valid range: Camera dependent, default: 352
width 640

# Image height (pixels). Valid range: Camera dependent, default: 288
height 480

Io ho inserito un valore pari a 640×480 perchè la mia webcam supporta immagini ad 1 Megapixel. Ovviamente voi dovrete inserire i valori relativi alla vostra webcam. Potete trovarli sul sito del produttore oppure sui manuali di istruzione 🙂 Qualora non li troviate, lasciate tutto come lo trovate!

Poco più sotto c’è lariga relativa al numero di fotogrammi al secondo che devono essere catturati. Il valore che troveretre di default è “2”. Personalmente ho preferito alzarlo a 5 🙂

# Maximum number of frames to be captured per second.
# Valid range: 2-100. Default: 100 (almost no limit).
framerate 5

Se avete una webcam di rete e non una cam USB, Motion permette di rilevare il suo flusso dei dati indicando l’indirizzo dove si trova il flusso stesso o le immagini catturate. Per renderla funzionante dovete editare queste righe:

# URL to use if you are using a network camera, size will be autodetected (incl http:// ftp:// or file:///)
# Must be a URL that returns single jpeg pictures or a raw mjpeg stream. Default: Not defined
; netcam_url value

# Username and password for network camera (only if required). Default: not defined
# Syntax is user:password
; netcam_userpass value

Ovviamente dovrete rimuovere il simbolo del “punto e virgola” ed inserire i valori corretti! Subito dopo avremo la possibilità di regolare la luminosità, il contrasto e la saturazione che dovranno essere usati nell’acquisizione delle immagini. Queste opzioni hanno ragione di esistere solo se la webcam non ha il rilevamento automatico, come accade con le webcam più economiche (come nel mio caso!). Io ho scelto i valori dopo un po’ di prove, ecco perchè vi consiglio di testare quelli a voi più congeniali:

auto_brightness off

# Valid range 0-255, default 0 = disabled
brightness 24

# Valid range 0-255, default 0 = disabled
contrast 25

# Valid range 0-255, default 0 = disabled
saturation 5

Il resto delle opzioni, per il momento, lasciamole ai valori di default. Spostiamoci adesso nella sezione definita “FFMPEG related options“. Se avete un computer non troppo vecchio abilitiamo la compressione al volo dei fotogrammi tramite l’uso di ffmpeg:

# Use ffmpeg to encode mpeg movies in realtime (default: off)
ffmpeg_cap_new on

Successivamente proseguiamo nello scorrimento del file di configurazione fino ad arrivare alle righe dove si stabilisce la codifica dausare per la creazione del filmato da realizzare nel caso la cam capti movimento davanti a sè. Di default il filmato creato sarà swf. Io preferisco usare qualcosa di diverso ed infatti ho chiesto a Motion di creare un filmato avi 🙂

# Codec to used by ffmpeg for the video compression.

ffmpeg_video_codec mpeg1

Nelle sezioni successive di motion.conf possiamo configurare in che modo devono essere salvati i file delle immagini ed i file video. Personalmente ho lasciato tutto di default, riservandomi di stabilire in un momento successivo se modifcare qualcosa. L’unico parametro modificato è stato quello relativo alla directory dove salvare i files. Di default questa viene settata su “/tmp/motion”. Tuttavia non mi piaceva molto e mi sono creato una cartella nella mia home:

$ mkdir ~/motion

Quest’ultima l’ho, poi, inserita nel file di configurazione di Motion modificando quella di default:

# Target base directory for pictures and films
# Recommended to use absolute path. (Default: current working directory)
target_dir /home/zeno/motion

Adesso passiamo alla configurazione di username e password per l’interfaccia web. Infatti, come detto poco fa, possiamo controllare Motion tramite una minimale e semplicissima interfaccia web. Questa, però, sarebbe accessibile a chiunque acceda al nostro computer perchè non è protetta da alcuna password. Siccome a noi non piace ciò, inseriamo i parametri delle password. Rechiamoci nella sezione del file di configurazione di Motion chiamata “HTTP Based Control” e modifichiamo la riga che ci interessa come segue:

# Authentication for the http based control. Syntax username:password
# Default: not defined (Disabled)
control_authentication VOSTRO_USERNAME:VOSTRA_PASSWORD

Continuando nella configurazione, scopriamo qualcosa di interessantissimo: è possibile configurare Motion in modo che quando rileva movimento dica al nostro computer di compiere un’azione. Immaginate quale azione potremmo far compiere? Che ne dite di una bella e-mail? O magari un SMS? Potete farlo modificando queste righe:

# Command to be executed when an event starts. (default: none)
# An event starts at first motion detected after a period of no motion defined by gap
; on_event_start value

# Command to be executed when an event ends after a period of no motion
# (default: none). The period of no motion is defined by option gap.
; on_event_end value

aggiungendo un comando da lanciare su “on_event_start <comando>”, verrà, ad esempio, inviata una mail quando viene rilevato l’inizio di movimento su webcam ed una successiva e-mail potremmo farla inviare quando il movimento ha termine! Il limite di ciò che potrete fare è dettato solo dalla vostra fantasia!

La parte finale del file di configurazione riguarda l’eventuale uso di un database per memorizzare le immagini, molto utile se volesimo effettuare un vero e proprio sistema di videosorveglianza professionale, dove devono essere memorizzate una gran quantità di immagini ed in maniera molto veloce. Ancora, le ultimissime righe di motion.conf servono a stabilire le configurazioni di eventuali ulteriori webcam oltre alla prima. In quest’ultimo caso è indispensabile editare il file threadX.conf, uno per ogni webcam. Il suo editing è semplicissimo ed intuitivo. Sappiate che in Debian ed Ubuntu i file di esempio sono già presenti nella directory “/etc/motion/threadX.conf” e vi sarà sufficiente editare quelli!

Adesso siamo pronti ad effettuare gli ultimi ritocchi per lanciare manualmente l’avvio di motion ed evitare che si avvii in automatico ad ogni avvio del computer. Iniziamo con l’inserire il nostro utente nel gruppo di Motion in modo da permettere all’utente stesso di usare motion, i suoi comandi ed il suo file di configurazione originale e che abbiamo appena modificato. Apriamo un terminale di root (se non lo avete già aperto) e digitiamo il seguente comando:

# adduser VOSTRO_USER motion

Tenete presente che affinchè quest’ultima modifica abbia effetto sarà necessario riavviare il server X. Lo potete fare sin da subito oppure finire prima di seguire la guida e poi riavviare il server grafico. Scegliete voi!

A questo punto eliminiamo l’avvio automatico di motion quando si accende il computer:

# update-rc.d -f motion remove

Da questo momento in poi saremo noi a stabilire quando far avviare Motion e videosorvegliare, ad esempio, il nostro PC 😀 Il tutto con un semplice comando da terminale e da utente semplice:

$ motion

Quando sarà avviato il demone, la gestione di motion può avvenire tramite interfaccia web. Aprite il vostro browser e puntate questo indirizzo:

http://localhost:8080

Avrete accesso ad un’interfaccia minimalissima di Motion con la quale potrete modificare il file di configurazione, rilevarne le attuali impostazioni e soprattutto avviare o mettere in pausa il motion detection. Inoltre, potrete monitorare in tempo reale cosa sta captando la webcam sempre tramite interfaccia web. Sarà sufficiente puntare il browser a quest’altro indirizzo:

http://localhost:8081

E con questo abbiamo terminato. Divertitevi a videosorvegliare il vostro computer quando voi non ci siete!

Ti è piaciuto questo articolo? Iscriviti alla newsletter per essere sempre informato sugli aggiornamenti del blog:


 

33 Responses

  1. Questo articolo è stato segnalato su ZicZac.it….

    Sono sempre stato incuriosito dalla possibilità di uso non convenzionale della mia webcam. Onestamente da quando l’ho acquistata quasi un anno fa l’avrò usata al massimo in 3 o 4 occasioni. Così, mi sono detto che forse era il caso di usare la…

  2. mauro21 says:

    sembra andare… cioe lo faccio partire col comando motion, poi quando “capita qualcosa” mi salva la foto nella dir motion… e fin qui tutto ok… solo che dopo si stoppa il demone…

    perchè?

  3. stefano says:

    @ mauro21:
    Ciao Mauro,
    dovremmo cercare di capire qual’è il problema procedendo in questo modo:
    1) edita il file /etc/motion/motion.conf in modo da non far partire il software in modalità demone, quindi cambia la riga “daemon on” in “daemon off”;

    2) riavvia motion da un terminale e leggi l’output. Stai sicuro che apparirà sul terminale il motivo dello spegnimento.

    Ad ogni modo mi piacerebbe capire se lo spegnimento del demone lascia una sola immagine nella cartella. In tal caso è un problema di diritti di scrittura nella directory dove vengono salvate le immagini ed il filmato 🙂 Basta un semplice chmod 777 sulla dir di riferimento ed il demone funziona a dovere 🙂

    Fammi sapere!

  4. […] : http://www.stefanolaguardia.eu Tag:motion, sicurezza, sorveglianza, webcam Categoria: ubuntu  |  Commento (RSS) […]

  5. cvd says:

    ciao, anche io ho lo stesso problema di mauro…
    la console riporta questo output :

    motion
    [0] Processing thread 0 – config file /etc/motion/motion.conf
    [0] Motion 3.2.9 Started
    [0] Motion going to daemon mode
    luca@trinity-64:~$ motion
    [0] Processing thread 0 – config file /etc/motion/motion.conf
    [0] Motion 3.2.9 Started
    [0] Motion going to daemon mode
    luca@trinity-64:~$ sudo geany /etc/motion/motion.conf
    luca@trinity-64:~$ motion
    [0] Processing thread 0 – config file /etc/motion/motion.conf
    [0] Motion 3.2.9 Started
    [0] ffmpeg LIBAVCODEC_BUILD 3352064 LIBAVFORMAT_BUILD 3344896
    [0] Thread 1 is from /etc/motion/motion.conf
    [1] Thread 1 started
    [1] cap.driver: “uvcvideo”
    [1] cap.card: “Laptop Integrated Webcam”
    [1] cap.bus_info: “0000:00:1d.7”
    [1] cap.capabilities=0x04000001
    [1] – VIDEO_CAPTURE
    [1] – STREAMING
    [1] Supported palettes:
    [1] 0: MJPG (MJPEG)
    [1] 1: YUYV (YUV 4:2:2 (YUYV))
    [0] motion-httpd/3.2.9 running, accepting connections
    [0] motion-httpd: waiting for data on port TCP 8080
    [1] Test palette YUYV (640×480)
    [1] Using palette YUYV (640×480) bytesperlines 1280 sizeimage 614400 colorspace 00000008
    [1] found control 0x00980900, “Brightness”, range 0,200
    [1] “Brightness”, default 90, current 90
    [1] found control 0x00980901, “Contrast”, range 5,50
    [1] “Contrast”, default 30, current 30
    [1] found control 0x00980902, “Saturation”, range 0,100
    [1] “Saturation”, default 64, current 64
    [1] found control 0x00980903, “Hue”, range 0,255
    [1] “Hue”, default 0, current 0
    [1] found control 0x00980910, “Gamma”, range 1,4
    [1] “Gamma”, default 2, current 2
    [1] found control 0x08000000, “Backlight Compensation”, range 0,3
    [1] “Backlight Compensation”, default 3, current 3
    [1] found control 0x08000001, “Power Line Frequency”, range 0,2
    [1] “Power Line Frequency”, default 2, current 2
    [1] mmap information:
    [1] frames=4
    [1] 0 length=614400
    [1] 1 length=614400
    [1] 2 length=614400
    [1] 3 length=614400
    [1] Using V4L2
    [1] Started stream webcam server in port 8081
    [1] *** mpeg1 support for normal videos has been disabled ***
    [1] ffopen_open error creating (new) file [/home/aaa/motion/01-20080901103520]: Invalid argument
    [1] File of type 1 saved to: /home/aaa/motion/01-20080901103520-01.jpg
    [1] Thread exiting
    [0] httpd – Finishing: Success
    [0] httpd Closing
    [0] Motion terminating

    ultima cosa ho fatto una copia dell’articolo a questo indirizzo : http://linux.cividini.org/blog/2008/09/videosorveglianza-con-webcam-motion/

  6. cvd says:

    edit : il problema è nella codifica video, riportandola ad swf non da più problemi!

    grazie per la guida!

  7. stefano says:

    @ cvd:
    Grazie a te per aver scritto in merito a come risolvere l’errore 🙂 Come vedi basta leggere l’output di Motion per capire che…

    [1] *** mpeg1 support for normal videos has been disabled ***
    [1] ffopen_open error creating (new) file [/home/aaa/motion/01-20080901103520]: Invalid argument
    [1] File of type 1 saved to: /home/aaa/motion/01-20080901103520-01.jpg
    [1] Thread exiting

    🙂

  8. mauro21 says:

    risolto anche io mettendo swf… perfect…
    un’altra cosa: ma come si fa a fargli fare qualcosa quando “succede qualcosa” (tipo amndare mail, emettere un suono ecc)??

    grazie

  9. stefano says:

    mauro21 wrote:

    risolto anche io mettendo swf… perfect…
    un’altra cosa: ma come si fa a fargli fare qualcosa quando “succede qualcosa” (tipo amndare mail, emettere un suono ecc)??
    grazie

    Puoi usare 2 metodi. Il primo è quello che ti ho in guida e consiste nell’inserire i due valori delle stringhe “on_event_start” ed “on_event_end”. Il secondo metodo è quello di inserire un valore alla stringa “on_motion_detected”. In quest’ultimo caso potrai, ad esempio, richiamare un comando di lettura file wav quando viene rilevato un movimento.

  10. mauro21 says:

    e ma come li devo scrivere? in qualche linguaggio?
    x es x mandare una mail o x aprire un suono come devo fare?

  11. stefano says:

    mauro21 wrote:

    e ma come li devo scrivere? in qualche linguaggio?
    x es x mandare una mail o x aprire un suono come devo fare?

    Assolutamente! Nessun linguaggio! Si deve inserire un comando esattamente come lo inseriresti in un terminale. Se ad esempio volessi far avviare un suono wav potresti inserire questa stringa:

    on_motion_detected aplay /home/USER/suono.wav

    Ovviamente dopo aver modificato i lfile /etc/motion/motion.conf dovrai riavviare motion 🙂

  12. dado says:

    ciao e innanzitutto complimenti per la guida, io ho una domandina. Avendo uno spazio web illimitato e avendo paura di furti vorrei salvare i video sullo spazio web. Non ho trovato altra soluzione che creare uno script semplice montando la cartella web tramite curlftpfs e poi dare quella directory come output. Hai altre soluzioni piu’ veloci e pratiche? anche perché non l’ho ancora testato ma curl mi ha sempre dato grossi problemi col mount e spesso cade tutto. Fammi sapere DaDo

  13. stefano says:

    @ dado:
    Ciao,
    così su due piedi penso che la soluzione che stai adottando sia valida. Altra possibilità dipende molto da cosa puoi fare con il tuo spazio web. Se puoi accedervi tramite shell potresti fare davvero un sacco di belle cose. Un esempio su tutti potrebbe essere quello di sincronizzare la cartella remota con quella locale in modo che la cartella remota sia copia speculare di quella locale… rsync ti dice nulla?

  14. dado says:

    @ stefano:
    si certo rsync lo usavo anche in lan per sincronizzare firefox, comunque ho messo in piedi la mia idea e ho buoni risultati, tanto che nello spazio web ho creato unp script php (copiato in realta’) che usato come index mi permette di ottenere una lista dei file per vedere le foto e i video. Ora mi inforno se aruba mi permette una shell… grazie ancora DaDo

  15. dado says:

    “ora mi inforno”…. sara’ che sono pizzaiolo e si capisce ma volevo dire informo!!! lol

  16. stefano says:

    dado wrote:

    “ora mi inforno”…. sara’ che sono pizzaiolo e si capisce ma volevo dire informo!!! lol

    auhzahzuuazhzuahuaz
    questa si che è bella!
    Se hai aruba mi dispiace ma non hai shell 🙁 A meno che non hai una vps 🙂

  17. Paolo says:

    Fantastico!!! Grazie, è la prima volta che uso il terminale ma hai spiegato davvero bene e mi funziona benissimo con un netbook!

  18. stefano says:

    @Paolo:
    Sono contento di essere stato d’aiuto 😉

  19. roxdragon says:

    ciao ragazzi ma funziona anche con questo tipo di webcam?

    Bus 002 Device 003: ID 05a9:a511 OmniVision Technologies, Inc. OV511+ Webcam

    senno ne devo acquistare un altra

  20. roxdragon says:

    @roxdragon

    ragazzi ho risolto mettendo un altra webcam

    Aiuto please… appena cerco di modificare la directory, motion non registra più… cambio da tmp a home/nome/motion

    ma motion non va più.. non registra.. mentre se lascio tutto come originale funziona e mi salva le cose su tmp.. mi date qualche dritta???
    Grazie

  21. zudamix says:

    Vorrei utilizzare motion su un rtr pirelli con openwrt e vi chiedevo come impostare motion.conf per l’acquisizione video tramite adattatore USB (acquisitore video con ingressi RCA) e salvare il tutto su un’hard disk di rete nell’ambito della mia lan interna.
    grazie per l’attenzione.

  22. Pierpaolo says:

    Dopo aver fatto un po’ di tentativi senza successo, ho pensato bene di cancellare la dir /etc/motion con tutto il suo contenuto per reistallare tutto.
    Dopo aver cancellato tutto (con i privilegi di root) non riesco più ha reistallare motion.
    La dir /etc/motion è stata ricreata ma è vuota.
    qualcuno sa dirmi come fare per cercare di ripristinare il tutto.
    grazie

  23. Stefano says:

    @ Pierpaolo:
    Prova a lanciare da utente root il seguente comando:

    dpkg-reconfigure motion

  24. Pierpaolo says:

    buongiorno Stefano,
    ho provato ma la risposta è:
    /usr/sbin/dpkg-reconfigure: motion è rovinato o non completamente installato
    hai qualche altra idea?
    grazie ancora

  25. Stefano says:

    @ Pierpaolo:
    allora.. in primo luogo io proverei a dare un:

    apt-get clean

    in modo da ripulire la cache dei pacchetti scaricati.

    A quel punto lancerei un:

    apt-get install –reinstall motion

    Quindi, verificherei se ha riscritto i files in /etc/motion; in caso negativo, in considerazione del fatto che per il funzionamento di motion *dovrebbe* essere sufficiente il solo file motion.conf, provvederei a scaricarne uno dalla rete… si tratta di un workaround che dovrebbe funzionare 😛

  26. Pierpaolo says:

    Ciao Stefano,
    ho provato a seguire il tuo consiglio; fino a “apt-get clean” tutto ok, ma poi:

    Impossibile trovare il pacchetto –reinstall

    Ho quindi provato a ritrovare i file motion.conf e gli altri 3. Ho trovato qualcosa ma non sono uguali infatti ieri mi faceva il video e lo snapshot anche se tutto grigio (ad eccezione dela data eora sovrimpressa).
    In ogni caso mi si prenta lo stesso problema di prima, ovvero schermo totalmente grigio (questa voltà però funziona solo snapshot.

    La web cam funziona sicuramente perchè sia con Camorama che Cheese si vede bene, ed entrambi cercano la cam su /dev/video0.

    Ti chiederi quindi di avere, anche via mail i file che vanno in /etc/motion e poi se sai darmi un consiglio per lo schermo grigio.

    Grazie per la tua disponibilità e buona serata

  27. Pierpaolo says:

    questo è quello che mi appare sul terminale:

    [1] Retrying until successful connection with camera
    [1] cap.driver: “pac7302”
    [1] cap.card: “USB Camera (093a:2621)”
    [1] cap.bus_info: “usb-0000:00:10.2-1”
    [1] cap.capabilities=0x05000001
    [1] – VIDEO_CAPTURE
    [1] – READWRITE
    [1] – STREAMING
    [1] Config palette index 8 (YU12) doesn’t work.
    [1] Supported palettes:
    [1] 0: PJPG (PJPG)
    [1] Unable to find a compatible palette format.
    [1] ioctl (VIDIOCGCAP): Invalid argument

  28. Stefano says:

    @ Pierpaolo:
    Per quanto riguarda l’errore dell’ultimo commento, prova a dare uno sguardo a quanto dicono qui:
    https://bugs.launchpad.net/ubuntu/+source/webcam-server/+bug/318191

    C’è un workaround che puoi vedere se funziona anche nel tuo caso 😉

    Poi, sui blog WordPress come il mio capita che il doppio trattino “-” venga interpretato in un unico trattino lungo… ecco perchè il comando dpkg – – reconfigure non ti funzionava 🙂

  29. Pierpaolo says:

    Grazie mille, Stefano.
    sono riuscito a “ripristinare” motion.conf, ma purtroppo non riesco ancora a risolvere il problema:
    “[1] Config palette index 8 (YU12) doesn’t work”
    Anche dopo aver provato tutti e 8 i possibili settaggi.
    Grazie ancora per la disponibilità e per l’aiuto.

  30. Stefano says:

    @ Pierpaolo:
    ma cosa succede quando tira fuori quel problema? Si spegne motion? Non funziona qualcosa?
    Potresti postare su “pastebin.com” tutto l’output che tira fuori motinio avviato da terminale ed il tuo file di conf?

    Inoltre, che distro usi? La tua webcam che marca/modello è? 🙂

  31. Pierpaolo says:

    Ciao Stefano,
    premetto che mi sembra di averti già rubato troppo tempo e che effettivamente avrei potuto spiegarti meglio il problema fin dall’inizio, per cui non mi aspetto che tu mi risponda.
    Tuttavia mi sembrava troppo maleducato non risponderti per cui di seguito ti porto tutte le informazioni che hai citato.
    ANCORA GRAZIE PER LA TUA CORTESIA.

    semplicemente succede che non succede nulla ovvero se vado a vedere su “http://localhost:8081/” vedo solo una schermata grigia con sovrimpressa: data, ora e la scritta “UNABLE TO OPEN VIDEO DEVICE”.

    se lancio il comando “motion -n”, appare :

    [1] Unable to find a compatible palette format.
    [1] ioctl (VIDIOCGCAP): Invalid argument
    [1] Retrying until successful connection with camera
    [1] cap.driver: “pac7302”
    [1] cap.card: “USB Camera (093a:2621)”
    [1] cap.bus_info: “usb-0000:00:10.3-1”
    [1] cap.capabilities=0x05000001
    [1] – VIDEO_CAPTURE
    [1] – READWRITE
    [1] – STREAMING
    [1] Config palette index 8 (YU12) doesn’t work.
    [1] Supported palettes:
    [1] 0: PJPG (PJPG)
    [1] Unable to find a compatible palette format.
    [1] ioctl (VIDIOCGCAP): Invalid argument

    mentre il mio motion.conf è:
    # Rename this distribution example file to motion.conf
    #
    # This config file was generated by motion 3.2.9

    ############################################################
    # Daemon
    ############################################################

    # Start in daemon (background) mode and release terminal (default: off)
    daemon on

    # File to store the process ID, also called pid file. (default: not defined)
    process_id_file /var/run/motion/motion.pid

    ############################################################
    # Basic Setup Mode
    ############################################################

    # Start in Setup-Mode, daemon disabled. (default: off)
    setup_mode off

    ###########################################################
    # Capture device options
    ############################################################

    # Videodevice to be used for capturing (default /dev/video0)
    # for FreeBSD default is /dev/bktr0
    videodevice /dev/video0

    # Tuner device to be used for capturing using tuner as source (default /dev/tuner0)
    # This is ONLY used for FreeBSD. Leave it commented out for Linux
    ; tunerdevice /dev/tuner0

    # The video input to be used (default: 8)
    # Should normally be set to 1 for video/TV cards, and 8 for USB cameras
    input 8

    # The video norm to use (only for video capture and TV tuner cards)
    # Values: 0 (PAL), 1 (NTSC), 2 (SECAM), 3 (PAL NC no colour). Default: 0 (PAL)
    norm 0

    # The frequency to set the tuner to (kHz) (only for TV tuner cards) (default: 0)
    frequency 0

    # Rotate image this number of degrees. The rotation affects all saved images as
    # well as mpeg movies. Valid values: 0 (default = no rotation), 90, 180 and 270.
    rotate 0

    # Image width (pixels). Valid range: Camera dependent, default: 352
    width 640

    # Image height (pixels). Valid range: Camera dependent, default: 288
    height 480

    # Maximum number of frames to be captured per second.
    # Valid range: 2-100. Default: 100 (almost no limit).
    framerate 15

    # Minimum time in seconds between capturing picture frames from the camera.
    # Default: 0 = disabled – the capture rate is given by the camera framerate.
    # This option is used when you want to capture images at a rate lower than 2 per second.
    minimum_frame_time 0

    # URL to use if you are using a network camera, size will be autodetected (incl http:// ftp:// or file:///)
    # Must be a URL that returns single jpeg pictures or a raw mjpeg stream. Default: Not defined
    ; netcam_url value

    # Username and password for network camera (only if required). Default: not defined
    # Syntax is user:password
    ; netcam_userpass value

    # URL to use for a netcam proxy server, if required, e.g. “http://myproxy”.
    # If a port number other than 80 is needed, use “http://myproxy:1234”.
    # Default: not defined
    ; netcam_proxy value

    # Let motion regulate the brightness of a video device (default: off).
    # The auto_brightness feature uses the brightness option as its target value.
    # If brightness is zero auto_brightness will adjust to average brightness value 128.
    # Only recommended for cameras without auto brightness
    auto_brightness off

    # Set the initial brightness of a video device.
    # If auto_brightness is enabled, this value defines the average brightness level
    # which Motion will try and adjust to.
    # Valid range 0-255, default 0 = disabled
    brightness 127

    # Set the contrast of a video device.
    # Valid range 0-255, default 0 = disabled
    contrast 127

    # Set the saturation of a video device.
    # Valid range 0-255, default 0 = disabled
    saturation 127

    # Set the hue of a video device (NTSC feature).
    # Valid range 0-255, default 0 = disabled
    hue 0

    ############################################################
    # Round Robin (multiple inputs on same video device name)
    ############################################################

    # Number of frames to capture in each roundrobin step (default: 1)
    roundrobin_frames 1

    # Number of frames to skip before each roundrobin step (default: 1)
    roundrobin_skip 1

    # Try to filter out noise generated by roundrobin (default: off)
    switchfilter off

    ############################################################
    # Motion Detection Settings:
    ############################################################

    # Threshold for number of changed pixels in an image that
    # triggers motion detection (default: 1500)
    threshold 1500

    # Automatically tune the threshold down if possible (default: off)
    threshold_tune off

    # Noise threshold for the motion detection (default: 32)
    noise_level 32

    # Automatically tune the noise threshold (default: on)
    noise_tune on

    # Enables motion to adjust its detection/noise level for very dark frames
    # Don’t use this with noise_tune on. (default: off)
    night_compensate off

    # Despeckle motion image using (e)rode or (d)ilate or (l)abel (Default: not defined)
    # Recommended value is EedDl. Any combination (and number of) of E, e, d, and D is valid.
    # (l)abeling must only be used once and the ‘l’ must be the last letter.
    # Comment out to disable
    ; despeckle EedDl

    # PGM file to use as a sensitivity mask.
    # Full path name to. (Default: not defined)
    ; mask_file value

    # Dynamically create a mask file during operation (default: 0)
    # Adjust speed of mask changes from 0 (off) to 10 (fast)
    smart_mask_speed 0

    # Ignore sudden massive light intensity changes given as a percentage of the picture
    # area that changed intensity. Valid range: 0 – 100 , default: 0 = disabled
    lightswitch 0

    # Picture frames must contain motion at least the specified number of frames
    # in a row before they are detected as true motion. At the default of 1, all
    # motion is detected. Valid range: 1 to thousands, recommended 1-5
    minimum_motion_frames 2

    # Specifies the number of pre-captured (buffered) pictures from before motion
    # was detected that will be output at motion detection.
    # Recommended range: 0 to 5 (default: 0)
    # Do not use large values! Large values will cause Motion to skip video frames and
    # cause unsmooth mpegs. To smooth mpegs use larger values of post_capture instead.
    pre_capture 0

    # Number of frames to capture after motion is no longer detected (default: 0)
    post_capture 0

    # Gap is the seconds of no motion detection that triggers the end of an event
    # An event is defined as a series of motion images taken within a short timeframe.
    # Recommended value is 60 seconds (Default). The value 0 is allowed and disables
    # events causing all Motion to be written to one single mpeg file and no pre_capture.
    gap 60

    # Maximum length in seconds of an mpeg movie
    # When value is exceeded a new mpeg file is created. (Default: 0 = infinite)
    max_mpeg_time 0

    # Number of frames per second to capture when not detecting
    # motion (saves CPU load) (Default: 0 = disabled)
    low_cpu 0

    # Always save images even if there was no motion (default: off)
    output_all off

    ############################################################
    # Image File Output
    ############################################################

    # Output ‘normal’ pictures when motion is detected (default: on)
    # Valid values: on, off, first, best
    # When set to ‘first’, only the first picture of an event is saved.
    # Picture with most motion of an event is saved when set to ‘best’.
    # Can be used as preview shot for the corresponding movie.
    output_normal best

    # Output pictures with only the pixels moving object (ghost images) (default: off)
    output_motion off

    # The quality (in percent) to be used by the jpeg compression (default: 75)
    quality 75

    # Output ppm images instead of jpeg (default: off)
    ppm off

    ############################################################
    # FFMPEG related options
    # Film (mpeg) file output, and deinterlacing of the video input
    # The options movie_filename and timelapse_filename are also used
    # by the ffmpeg feature
    ############################################################

    # Use ffmpeg to encode mpeg movies in realtime (default: off)
    ffmpeg_cap_new on

    # Use ffmpeg to make movies with only the pixels moving
    # object (ghost images) (default: off)
    ffmpeg_cap_motion off

    # Use ffmpeg to encode a timelapse movie
    # Default value 0 = off – else save frame every Nth second
    ffmpeg_timelapse 0

    # The file rollover mode of the timelapse video
    # Valid values: hourly, daily (default), weekly-sunday, weekly-monday, monthly, manual
    ffmpeg_timelapse_mode daily

    # Bitrate to be used by the ffmpeg encoder (default: 400000)
    # This option is ignored if ffmpeg_variable_bitrate is not 0 (disabled)
    ffmpeg_bps 400000

    # Enables and defines variable bitrate for the ffmpeg encoder.
    # ffmpeg_bps is ignored if variable bitrate is enabled.
    # Valid values: 0 (default) = fixed bitrate defined by ffmpeg_bps,
    # or the range 2 – 31 where 2 means best quality and 31 is worst.
    ffmpeg_variable_bitrate 0

    # Codec to used by ffmpeg for the video compression.
    # Timelapse mpegs are always made in mpeg1 format independent from this option.
    # Supported formats are: mpeg1 (ffmpeg-0.4.8 only), mpeg4 (default), and msmpeg4.
    # mpeg1 – gives you files with extension .mpg
    # mpeg4 or msmpeg4 – give you files with extension .avi
    # msmpeg4 is recommended for use with Windows Media Player because
    # it requires no installation of codec on the Windows client.
    # swf – gives you a flash film with extension .swf
    # flv – gives you a flash video with extension .flv
    # ffv1 – FF video codec 1 for Lossless Encoding ( experimental )
    ffmpeg_video_codec swf

    # Use ffmpeg to deinterlace video. Necessary if you use an analog camera
    # and see horizontal combing on moving objects in video or pictures.
    # (default: off)
    ffmpeg_deinterlace off

    ############################################################
    # Snapshots (Traditional Periodic Webcam File Output)
    ############################################################

    # Make automated snapshot every N seconds (default: 0 = disabled)
    snapshot_interval 0

    ############################################################
    # Text Display
    # %Y = year, %m = month, %d = date,
    # %H = hour, %M = minute, %S = second, %T = HH:MM:SS,
    # %v = event, %q = frame number, %t = thread (camera) number,
    # %D = changed pixels, %N = noise level, \n = new line,
    # %i and %J = width and height of motion area,
    # %K and %L = X and Y coordinates of motion center
    # %C = value defined by text_event – do not use with text_event!
    # You can put quotation marks around the text to allow
    # leading spaces
    ############################################################

    # Locate and draw a box around the moving object.
    # Valid values: on, off and preview (default: off)
    # Set to ‘preview’ will only draw a box in preview_shot pictures.
    locate off

    # Draws the timestamp using same options as C function strftime(3)
    # Default: %Y-%m-%d\n%T = date in ISO format and time in 24 hour clock
    # Text is placed in lower right corner
    text_right %Y-%m-%d\n%T-%q

    # Draw a user defined text on the images using same options as C function strftime(3)
    # Default: Not defined = no text
    # Text is placed in lower left corner
    ; text_left twitter.com/junglecrawler

    # Draw the number of changed pixed on the images (default: off)
    # Will normally be set to off except when you setup and adjust the motion settings
    # Text is placed in upper right corner
    text_changes off

    # This option defines the value of the special event conversion specifier %C
    # You can use any conversion specifier in this option except %C. Date and time
    # values are from the timestamp of the first image in the current event.
    # Default: %Y%m%d%H%M%S
    # The idea is that %C can be used filenames and text_left/right for creating
    # a unique identifier for each event.
    text_event %Y%m%d%H%M%S

    # Draw characters at twice normal size on images. (default: off)
    text_double off

    ############################################################
    # Target Directories and filenames For Images And Films
    # For the options snapshot_, jpeg_, mpeg_ and timelapse_filename
    # you can use conversion specifiers
    # %Y = year, %m = month, %d = date,
    # %H = hour, %M = minute, %S = second,
    # %v = event, %q = frame number, %t = thread (camera) number,
    # %D = changed pixels, %N = noise level,
    # %i and %J = width and height of motion area,
    # %K and %L = X and Y coordinates of motion center
    # %C = value defined by text_event
    # Quotation marks round string are allowed.
    ############################################################

    # Target base directory for pictures and films
    # Recommended to use absolute path. (Default: current working directory)
    target_dir /home/pierpaolo/Scrivania/fotocam

    # File path for snapshots (jpeg or ppm) relative to target_dir
    # Default: %v-%Y%m%d%H%M%S-snapshot
    # Default value is equivalent to legacy oldlayout option
    # For Motion 3.0 compatible mode choose: %Y/%m/%d/%H/%M/%S-snapshot
    # File extension .jpg or .ppm is automatically added so do not include this.
    # Note: A symbolic link called lastsnap.jpg created in the target_dir will always
    # point to the latest snapshot, unless snapshot_filename is exactly ‘lastsnap’
    snapshot_filename %v-%Y%m%d%H%M%S-snapshot

    # File path for motion triggered images (jpeg or ppm) relative to target_dir
    # Default: %v-%Y%m%d%H%M%S-%q
    # Default value is equivalent to legacy oldlayout option
    # For Motion 3.0 compatible mode choose: %Y/%m/%d/%H/%M/%S-%q
    # File extension .jpg or .ppm is automatically added so do not include this
    # Set to ‘preview’ together with best-preview feature enables special naming
    # convention for preview shots. See motion guide for details
    jpeg_filename %v-%Y%m%d%H%M%S-%q

    # File path for motion triggered ffmpeg films (mpeg) relative to target_dir
    # Default: %v-%Y%m%d%H%M%S
    # Default value is equivalent to legacy oldlayout option
    # For Motion 3.0 compatible mode choose: %Y/%m/%d/%H%M%S
    # File extension .mpg or .avi is automatically added so do not include this
    # This option was previously called ffmpeg_filename
    # movie_filename %v-%Y%m%d%H%M%S
    movie_filename video

    # File path for timelapse mpegs relative to target_dir
    # Default: %Y%m%d-timelapse
    # Default value is near equivalent to legacy oldlayout option
    # For Motion 3.0 compatible mode choose: %Y/%m/%d-timelapse
    # File extension .mpg is automatically added so do not include this
    timelapse_filename %Y%m%d-timelapse

    ############################################################
    # Live Webcam Server
    ############################################################

    # The mini-http server listens to this port for requests (default: 0 = disabled)
    webcam_port 8081

    # Quality of the jpeg images produced (default: 50)
    webcam_quality 50

    # Output frames at 1 fps when no motion is detected and increase to the
    # rate given by webcam_maxrate when motion is detected (default: off)
    webcam_motion off

    # Maximum framerate for webcam streams (default: 1)
    webcam_maxrate 1

    # Restrict webcam connections to localhost only (default: on)
    webcam_localhost on

    # Limits the number of images per connection (default: 0 = unlimited)
    # Number can be defined by multiplying actual webcam rate by desired number of seconds
    # Actual webcam rate is the smallest of the numbers framerate and webcam_maxrate
    webcam_limit 0

    ############################################################
    # HTTP Based Control
    ############################################################

    # TCP/IP port for the http server to listen on (default: 0 = disabled)
    control_port 8080

    # Restrict control connections to localhost only (default: on)
    control_localhost on

    # Output for http server, select off to choose raw text plain (default: on)
    control_html_output on

    # Authentication for the http based control. Syntax username:password
    # Default: not defined (Disabled)
    ; control_authentication username:password

    ############################################################
    # Tracking (Pan/Tilt)
    ############################################################

    # Type of tracker (0=none (default), 1=stepper, 2=iomojo, 3=pwc, 4=generic, 5=uvcvideo)
    # The generic type enables the definition of motion center and motion size to
    # be used with the conversion specifiers for options like on_motion_detected
    track_type 0

    # Enable auto tracking (default: off)
    track_auto off

    # Serial port of motor (default: none)
    ; track_port value

    # Motor number for x-axis (default: -1)
    track_motorx -1

    # Motor number for y-axis (default: -1)
    track_motory -1

    # Maximum value on x-axis (default: 0)
    track_maxx 0

    # Maximum value on y-axis (default: 0)
    track_maxy 0

    # ID of an iomojo camera if used (default: 0)
    track_iomojo_id 0

    # Angle in degrees the camera moves per step on the X-axis
    # with auto-track (default: 10)
    # Currently only used with pwc type cameras
    track_step_angle_x 10

    # Angle in degrees the camera moves per step on the Y-axis
    # with auto-track (default: 10)
    # Currently only used with pwc type cameras
    track_step_angle_y 10

    # Delay to wait for after tracking movement as number
    # of picture frames (default: 10)
    track_move_wait 10

    # Speed to set the motor to (stepper motor option) (default: 255)
    track_speed 255

    # Number of steps to make (stepper motor option) (default: 40)
    track_stepsize 40

    ############################################################
    # External Commands, Warnings and Logging:
    # You can use conversion specifiers for the on_xxxx commands
    # %Y = year, %m = month, %d = date,
    # %H = hour, %M = minute, %S = second,
    # %v = event, %q = frame number, %t = thread (camera) number,
    # %D = changed pixels, %N = noise level,
    # %i and %J = width and height of motion area,
    # %K and %L = X and Y coordinates of motion center
    # %C = value defined by text_event
    # %f = filename with full path
    # %n = number indicating filetype
    # Both %f and %n are only defined for on_picture_save,
    # on_movie_start and on_movie_end
    # Quotation marks round string are allowed.
    ############################################################

    # Do not sound beeps when detecting motion (default: on)
    # Note: Motion never beeps when running in daemon mode.
    quiet off

    # Command to be executed when an event starts. (default: none)
    # An event starts at first motion detected after a period of no motion defined by gap
    ; on_event_start value

    # Command to be executed when an event ends after a period of no motion
    # (default: none). The period of no motion is defined by option gap.
    ; on_event_end value

    # Command to be executed when a picture (.ppm|.jpg) is saved (default: none)
    # To give the filename as an argument to a command append it with %f
    ; on_picture_save value

    # Command to be executed when a motion frame is detected (default: none)
    ; on_motion_detected value

    # Command to be executed when a movie file (.mpg|.avi) is created. (default: none)
    # To give the filename as an argument to a command append it with %f
    ; on_movie_start value

    # Command to be executed when a movie file (.mpg|.avi) is closed. (default: none)
    # To give the filename as an argument to a command append it with %f
    on_movie_end /home/wayne/Desktop/recording-done

    ############################################################
    # Video Loopback Device (vloopback project)
    ############################################################

    # Output images to a video4linux loopback device
    # The value ‘-‘ means next available (default: not defined)
    ; video_pipe value

    # Output motion images to a video4linux loopback device
    # The value ‘-‘ means next available (default: not defined)
    ; motion_video_pipe value

    ##############################################################
    # Thread config files – One for each camera.
    # Except if only one camera – You only need this config file.
    # If you have more than one camera you MUST define one thread
    # config file for each camera in addition to this config file.
    ##############################################################

    # Remember: If you have more than one camera you must have one
    # thread file for each camera. E.g. 2 cameras requires 3 files:
    # This motion.conf file AND thread1.conf and thread2.conf.
    # Only put the options that are unique to each camera in the
    # thread config files.
    ; thread /usr/local/etc/thread1.conf
    ; thread /usr/local/etc/thread2.conf
    ; thread /usr/local/etc/thread3.conf
    ; thread /usr/local/etc/thread4.conf

    ora proverò anche a postare su pastebin.com

    uso Ubuntu 11.04 (nattty) – Kernel linux 2.6.38-11-generic
    la webcam è una Kraun (W1).

  32. Alle says:

    Grazie per la guida!
    Funziona tutto… ho dovuto però installare anche il pacchetto “webcam” perché inizialmente motion mi dava “device not found”, probabilmente ho pensato che mancasse qualche libreria, infatti installando “webcam” vengono anche installati questi pacchetti:

    ftp
    libdv4
    libexplain30
    libv4l-0
    libv4lconvert0
    lsof
    xawtv-plugins

    e probabilmente era necessaria una delle librerie presenti nell’elenco.
    La mia webcam è una Logitech HD Webcam C310 e non ha bisogno dell’hub usb (per adesso).

    Ciao!

  33. Paolo says:

    Guida molto interessante e che mi è stata utilissima nella configurazione di Motion. Ho notato che manca però un passaggio importante che altrimenti non mi permetteva di far funzionare Motion.
    Manca infatti l’istruzione “sudo chown UTENTE /etc/motion/motion.conf” da dare tramite terminale(dove UTENTE è il profilo dell’utente inserito nel file stesso che assegna al file motion.conf l’owner corretto.
    Spero risulti utile a qualcuno.
    Ciao.

Comments

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.