martes, 23 de febrero de 2010

webcam como camara IP en Linux (debian, ubutu)

Primero tenemos que tener instalado los siguientes paquetes, y tener configurado un servidor web (puede ser apache o cualquier otro)

sudo apt-get install webcam lib4l-0

No se crea ningún archivo de configuración por lo cual no creamos en nuestro home, o si vamos a usar la ruta principal del servidor web (/var/www) creamos el archivo webcam.conf dentro de /etc

vim .webcamrc (o con el editor de texto que uses)
vim /etc/webcam.conf (como root o anteponiendo sudo, en caso de pertenecer a los sudoers)

El archivo va contener algo como lo que se muestra enseguida

[ftp]
host = localhost
user = nobody
pass = xxxxxx
dir = /home/usuario/public_html
file = webcam.jpg
tmp = imageup.jpg
local = 1

[grab]
device = /dev/video0
width = 320
height = 240
text = "Webcam %Y-%m-%d %H:%M:%S"
delay = 0
input =sonixj
quality = 75
trigger = 180
fg_red = 255
fg_green = 255
fg_blue = 255
rotate = 2

Como mi webcam pone de cabeza las capturas, con rotate = 2 lo arreglo (1=90 grados 2= 180, etc.)

¿Como saber cual es el nombre de la webcam(input = nombrewebcam)? con v4l-info (dese la terminal)

$ v4l-info

Las partes que nos interesan es la que nos dice el nombre de la camara (sonixj) y la altura y el ancho máximo

inputs
VIDIOC_ENUMINPUT(0)
index : 0
name : "sonixj" <---Este es el valor de input =sonixj type : CAMERA audioset : 0 tuner : 0 std : 0x0 [] status : 0x0 []

y
### video4linux device info [/dev/video0] ###
general info
VIDIOCGCAP
name : "USB camera"
type : 0x1 [CAPTURE]
channels : 1
audios : 0
maxwidth : 640
maxheight : 480
minwidth : 48
minheight : 32


Ahora si lo probamos con

@anaconda-server:~$ webcam
reading config file: /home/usuario/.webcamrc
can't get rgb24 data

Ops! ¿Qué hace ese rgb24 data? si nunca lo mandé llamar.

Solución:

Se me ocurrió que se podría asociar con el LD_PRELOAD=/usr/lib/libv4l/v4l1compat.so webcam, por lo que es la misma solución que para algunas webcam es necesaria para poderlas usar con skype

https://wiki.ubuntu.com/SkypeWebCams

$ LD_PRELOAD=/usr/lib/libv4l/v4l1compat.so webcam
reading config file: /home/usuario/.webcamrc
video4linux webcam v1.5 - (c) 1998-2002 Gerd Knorr
grabber config:
size 320x240 [none]
input sonixj, norm (null), jpeg quality 75
rotate=2, top=0, left=0, bottom=240, right=320
write config [ftp]:
local transfer /home/usuario/public_html/imageup.jpg => /home/usuario/public_html/webcam.jpg
compare: max=50,avg=4
compare: max=255,avg=78
compare: max=8,avg=0
compare: max=24,avg=0
compare: max=17,avg=0
compare: max=33,avg=0
compare: max=29,avg=0
compare: max=35,avg=0
compare: max=34,avg=0
compare: max=42,avg=0
compare: max=39,avg=0
compare: max=46,avg=0
compare: max=52,avg=0

Ya sólo queda ver el resultado en la web, mover la camara y recargar el navedador para ver los resultados. Para probar su funcionamiento utilicé la siguiente página web.

<html>
<head>
<title>WebCam</title>
<meta http-equiv="REFRESH" content="1"></meta>
</head>
<body>
<img src="webcam.jpg"></img>
</body>
</html>


Recargo la página cada segundo.



webcam a 320x240



webcam a 640x480