Detectar movimiento con Linksys WVC54GC


Tengo una cámara Linksys WVC54GC y estoy jugando con la detección del movimiento. Para esto he encontrado un script en bash que tocado un poquito aqui y allá, que hace mas o menos lo que necesito.

#!/bin/sh

FRAMERATE=2
SENSITIVITY=30
PNMPSNR=/usr/bin/pnmpsnr
cd /mnt/data/.cam/
while true
do
sleep $FRAMERATE
mplayer http://webcam/img/video.asf -really-quiet -frames 1 -vo jpeg
djpeg 00000001.jpg > current.ppm
date>Ycolour
$PNMPSNR current.ppm last.ppm>>Ycolour 2>
Y=`awk '/Y  color/ {print int($5)}' Ycolour`
if [ $Y -lt $SENSITIVITY ]
then

if [ -d ./`date +%Y%m%d` ]
then
cp 00000001.jpg ./`date +%Y%m%d`/`date +%y%m%d%H%M%S.jpg`
else
mkdir  ./`date +%Y%m%d`
cp 00000001.jpg ./`date +%Y%m%d`/`date +%y%m%d%H%M%S.jpg`
fi

fi
mv current.ppm last.ppm

Esto unido a un script en el init.d

donegonzalo@gnzl:/etc/init
gonzalo@gnzl:/etc/init.d$ cat webcamd
#!/bin/sh
### BEGIN INIT INFO
# Provides:          webcamd
# Required-Start:    networking
# Required-Stop:     networking
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start the webcamd web server.
### END INIT INFO

PATH=/sbin:/bin:/usr/sbin:/usr/bin
NAME=webcamd
DESC="webcam snapshot motion"
PIDFILE=/var/run/$NAME.pid
SCRIPTNAME=/etc/init.d/$NAME
ENV="env -i LANG=C PATH=/usr/local/bin:/usr/bin:/bin"
SSD="/sbin/start-stop-daemon"

FRAMERATE=2
SENSITIVITY=30
PNMPSNR=/usr/bin/pnmpsnr
. /lib/lsb/init-functions
cd /mnt/data/.cam/
case "$1" in
start)
      echo "Starting $DESC" $NAME
      su -l gonzalo -c "sh /mnt/data/.cam/startmotiondetection.sh &"
  ;;
*)

      exit 1
      ;;
esac

exit 0

Hace más o menos lo que quiero.

Si ya se que es muy mejorable ya que el tiempo que le he dedicado es muy poco (modo escusas activado). Si ya se que hay programas como Motion y Zoneminder que hacen esto mas bonito, pero bueno algún dia los miraré.

Mi principal problema es que la única forma que tengo para obtener una imagen fija de la camara es con el comando:

mplayer http://webcam/img/video.asf -really-quiet -frames 1 -vo jpeg

ya que la cámara no me da la posibilidad de obterner la imagen directamente (o al menos no se como hacerlo). Mi problema es que esto no lo quiero ejecutar en un PC, como esta ahora, si no en un NSLU2, que es un aparatito con arquitectura ARM. Pues bien no consigo compilar el mplayer para ARM y encima creo que aunque lo consiga hacer no me va a funcionar ya que los codecs necesarios para ver un stream asf en Linux solo estan en formato binario para x86.

Me gustaría saber como se hace lo mismo que hago con mplayer con vlc (que si lo tengo correctamente instalado en el NSLU2). Otra opción es seguir las instrucciones que veo aqui para cer funcionar la camarita con Motion pero no consigo hacer el reetreaming con ffmpeg, ya que al hacer:

ffmpeg -an -i http://yourwebcam.up/img/video.asf http://localhost:8090/feed1.ffm

me dice que no puede abrir el archivo asf y no tengo ni idea por que.

En fin seguire peleando,

Advertisements

About Gonzalo Ayuso

Web Architect. PHP, Python, Node, Angular, ionic, PostgreSQL, Linux, ... Always learning.

Posted on March 23, 2008, in Linux. Bookmark the permalink. Leave a comment.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: