L'avvio della Raspi Camera è piuttosto banale:
raspivid -t 10000 -o test.h264
Problema:
Non c'è modo di fermarlo. Questo mi sembra davvero stupido in quanto, per quanto ne sappia, non esiste una fotocamera disponibile per la vendita al dettaglio che richiede all'utente di specificare per quanti secondi eseguire e quindi funziona per molti secondi prima di arrestarsi.
Sfondo:
Ciò presenta un enorme problema di sorveglianza. Sto creando un programma in cui la sorveglianza domestica viene attivata quando l'utente abbandona e quindi si spegne di nuovo al suo ritorno. Se viene rilevato un movimento appena prima che l'utente ritorni, la videocamera inizia a registrare per un periodo di tempo predeterminato (ad es. 10 minuti), ma poiché il raspivid
comando sta bloccando, ottengo una situazione in cui l'utente è fisicamente in casa, ma il programma è nello surveillance
stato. Per ovviare a questo, lancio un thread per avviare il raspivid
comando, quindi ora gli stati vengono aggiornati correttamente in base a quando l'utente va e viene. Tuttavia, ora altri stati non funzionano. Ad esempio, non posso passare allo TV
stato in quanto non riesco a registrare filmati HD e guardarli allo stesso tempo. Allo stesso modo, non posso passare aParty
stato (registrazione video costante delle parti) poiché la videocamera sta già registrando.
Soluzione potenziale:
Usando il codice che ho trovato sul web (ma non riesco più a trovare il collegamento), ho trovato un hack con cui uccido il thread che ha lanciato il raspivid
comando. Sfortunatamente questo è considerato blasfemia da SO (vedi qui e qui ), con cui sono d'accordo non solo perché potrebbe corrompere i .h264
file e portare a perdite di memoria, ma anche perché è un incubo per me programmare (devo avere blocchi e semafori ovunque mentre lancio anche altri thread per il rilevamento del movimento).
Domanda:
C'è un modo per fermare una videocamera raspi di registrazione? In caso contrario, perché no?
popen = subprocess.Popen ( cmd )
epopen.send_signal ( signal.SIGINT )