Crear servidor temporal para webcam, y transmitir video para alguna aplicación de mensajería

Tengo Kubuntu 11.10
Mi webcam es CKP-WC 903
En lsusb sale: ID 17a1:0128
Versión 3.95.dfsg.1 de los paquetes webcam y xawtv

Estoy intentando generar un servidor temporal para transmitir vía webcam desde la máquina donde estoy, ya intenté con el paquete webcam-server, pero no lo encuentro en los repositorios de Ubuntu 11.10.

Ahora estoy intentando hacer a lo bruto lo que dice esta web, porque no entiendo inglés.

No entiendo lo que iría en el ítem imput y no me reconoce la opción 'pal' ni 'ntsc' en el item norm.

Esto es el contenido de ~/.webcamrc

[ftp]
host = localhost
user = nobody
pass = hola
dir = /home/pablo/Webcam
file = webcam.jpg
tmp = imageup.jpg
local = 1

[grab]
device = /dev/video0
width = 320
height = 240
delay = 0
#input = ntsc
#norm = pal
quality = 75
trigger = 180

Descubrí que filma, pero no puedo generar la página y eso que tengo los puertos 80 y 8080 activados y redirigidos a la IP de la máquina 192.168.0.7. La página está en el directorio /home/pablo/Webcam, el nombre es webcam.htm y su contenido es:

<html>
<head>
<META HTTP-EQUIV="pragma" CONTENT="no-cache">
<META HTTP-EQUIV="refresh" CONTENT="0">
</head>
<body>
<center>
<h2>My Web Cam</h2>
<img src="webcam.jpg" width="640" height="480" border="0">
</center>
</body>
</html>

Cuando ejecuto el comando webcam me sale esto:

$  webcam
reading config file: /home/pablo/.webcamrc
video4linux webcam v1.5 - (c) 1998-2002 Gerd Knorr
grabber config:
  size 640x480 [none]
  input (null), norm (null), jpeg quality 75
  rotate=0, top=0, left=0, bottom=480, right=640
write config [ftp]:
  local transfer /home/pablo/Webcam/imageup.jpg => /home/pablo/Webcam/webcam.jpg
compare: max=5,avg=0
compare: max=222,avg=166
compare: max=38,avg=5
compare: max=69,avg=6
compare: max=103,avg=7
compare: max=132,avg=8
compare: max=164,avg=9
compare: max=164,avg=9
compare: max=167,avg=10
compare: max=161,avg=10
compare: max=157,avg=11
compare: max=132,avg=11
compare: max=130,avg=11
compare: max=120,avg=11
compare: max=132,avg=12
compare: max=125,avg=12
compare: max=144,avg=13
compare: max=161,avg=13
compare: max=177,avg=15                                                    
^C

También acepto sugerencias de otros programas.

Yo utilizo webcam para monitorizar mi casa. Comparto mis archivos:

~/Scripts/webcam/online.sh :

#!/bin/bash
/usr/bin/killall webcam
cd ~/Scripts/webcam/
/usr/bin/webcam ./online.conf

Con el script anterior me cercioro que sólo esté un proceso webcam ejecutándose, luego el sistema entra al directorio donde están los archivos de configuración, e invoca al que se llama online.conf.

online.conf :

[grab]
  device = /dev/video0
  width = 320
  height = 240
  delay = 5
  quality = 75
  bg_red = 0
  bg_blue = 0
  bg_green = 0
  fg_red = 255
  fg_blue = 255
  fg_green = 255
  text = %Y-%m-%d %H:%M:%S %a.
  archive = archive/%Y-%m-%d_%H-%M-%S_%a.jpg
[localhost]
  local = 1
  dir = .
  tmp = tmp.jpg
  file = webcam.jpg

Observa que en el archivo de configuración yo indiqué que el dispositivo es /dev/video0, y es probable que en tu caso sea otro si tienes más dispositivos. Observa que la resolución que indiqué es 320x240 ya que a) la soporta mi webcam y b) no quiero imágenes grandes para no ralentizar la transferencia. Los colores indican fondo negro y letras blancas. La línea text indica lo que se imprimirá sobre la imagen (fecha, hora, día), y la línea archive indica que se irán almacenando imágenes dentro del subdirectorio archive/ y también tendrán nombre con fecha, hora, y día. La webcam capturará una imagen cada 5 segundos. Observa que no usé opciones de NTSC/PAL, pero si te sirve de algo en América usamos NTSC y en Europa se usa PAL, pero dichas opciones se usan cuando utilizas una videocámara y no una cámara web. Observa que yo no indiqué ningún servidor FTP sino que el almacenamiento de la imagen se hará localmente, porque en el mismo equipo tengo instalado un servidor web, el cual muestra gestiona el archivo http://blablabla.bla/webcam/index.htm .

index.htm :

<html>
  <head>
    <title>webcam</title>
    <meta http-equiv="refresh" content="300">
  </head>
  <body bgcolor="#000000">
    <img src="./webcam.jpg"><br />
    <font size=2 color="#ffffff">refresh in 300 s</font>
  </body>
</html>

Observa que en el encabezado indico que automáticamente se recargue la página cada 300 segundos (5 minutos), así que en el servidor se almacena una imagen cada 5 segundos, pero la página web sólo veré la última imagen de los últimos 5 minutos atrás (de esa forma no estoy refrescando cada 5 segundos, porque lo consideré innecesario aún cuando al principio lo hacía así). En el cuerpo del mensaje indico que el fondo será negro y el texto blanco. Por último observa que en este archivo index.htm he indicado que la imagen webcam.jpg está en el mismo directorio de index.htm, lo cual es falso .. porque en realidad lo que hice es un enlace simbólico:

webcam.jpg > /home/siddharta/Scripts/webcam/webcam.jpg

y de esa forma en el servidor web sólo están expuestos 2 archivos (index.htm y el enlace simbólico webcam.jpg), y no quedan expuestos los archivos de configuración ni el directorio archive/ ni su contenido.


En realidad tengo varios archivos más para hacer más gestiones, pero a grandes rasgos así es como utilizo mi monitorización. Resumiendo:

En el directorio ~/Scripts/webcam/ tengo los archivos de configuración, la imagen webcam.jpg, y el subdirectorio archive/.

En el directorio ~/Public/www/webcam/ sólo tengo los archivos index.htm y el enlace simbólico webcam.jpg.

Sugiero que con tu servidor web protejas la ruta ddonde ubiques el archivo index.htm para que sólo usuarios autorizados accedan a tu cámara web. Yo estoy usando el servidor web Cherokee.

Ten paciencia ... yo leí varias veces el manual de webcam, pero dediqué más tiempo a distintas configuraciones, hasta que dejé la mayoría de las opciones a mi gusto. Sugiero que ejecutes $ webcam así nada más para ver qué resolución te indica que soporta la cámara web que posees, y luego introduzcas dicha resolución en la configuración. A mí no me gustó usar 640x480 por parecerme demasiado grande.

Espero esto te sea de utilidad .. en realidad he querido hacer una entrada completa en mi blog pero no he dedicado tiempo a ello.

Saludos,
Sidd.

Mira, tengo todos estos archivos (y 2 subdirectorios), porque le he agregado complejidad al asunto, pero no creas que necesitas también todo eso, pues yo comencé únicamente con lo indiqué en el comentario anterior:

[2011-12-05 12:08:38 Mon] optiplex-gx1 > siddharta:~/Scripts/webcam
$ ls -lh
total 14M
drwxr-xr-x 2 siddharta siddharta  14M 2011-12-05 12:08:39 Mon archive/
drwxr-xr-x 2 siddharta siddharta 4.0K 2011-08-22 00:14:54 Mon history/
-rwxr-xr-x 1 siddharta siddharta  992 2011-06-27 20:25:22 Mon make-01-video.sh*
-rwxr-xr-x 1 siddharta siddharta 1.3K 2011-06-27 20:25:12 Mon make-02-package.sh*
-rw-r--r-- 1 siddharta siddharta  286 2011-07-07 11:10:54 Thu offline.htm
-rw-r--r-- 1 siddharta siddharta  11K 2011-07-01 13:57:18 Fri offline.jpg
-rwxr-xr-x 1 siddharta siddharta  176 2011-06-30 19:39:51 Thu offline.sh*
-rw-r--r-- 1 siddharta siddharta  386 2011-07-01 14:09:21 Fri online-archive-no.conf
-rw-r--r-- 1 siddharta siddharta  285 2011-07-07 11:08:26 Thu online-archive-no.htm
-rwxr-xr-x 1 siddharta siddharta  168 2011-06-30 20:32:03 Thu online-archive-no.sh*
-rw-r--r-- 1 siddharta siddharta  420 2011-06-30 19:19:15 Thu online-archive-yes.conf
-rw-r--r-- 1 siddharta siddharta  286 2011-07-07 11:09:42 Thu online-archive-yes.htm
-rwxr-xr-x 1 siddharta siddharta  170 2011-06-30 20:31:05 Thu online-archive-yes.sh*
-rwxr-xr-x 1 siddharta siddharta  147 2011-06-27 20:24:49 Mon purge-archive.sh*
-rwxr-xr-x 1 siddharta siddharta  117 2011-07-04 16:58:52 Mon purge-history.sh*
-rw-r--r-- 1 siddharta siddharta  16K 2011-12-05 12:08:39 Mon webcam.jpg

En el subdirectorio archive/ se van guardando automáticamente las imágenes pasadas. Te muestro las que corresponden al minuto 12:29 del día de hoy (1 cada 5 segundos):

[2011-12-05 12:32:26 Mon] optiplex-gx1 > siddharta:~/Scripts/webcam/archive
$ ls 2011-12-05_12-29* -h1
2011-12-05_12-29-00_Mon.jpg
2011-12-05_12-29-07_Mon.jpg
2011-12-05_12-29-13_Mon.jpg
2011-12-05_12-29-20_Mon.jpg
2011-12-05_12-29-27_Mon.jpg
2011-12-05_12-29-33_Mon.jpg
2011-12-05_12-29-40_Mon.jpg
2011-12-05_12-29-47_Mon.jpg
2011-12-05_12-29-53_Mon.jpg

En el subdirectorio history/ almaceno archivos .AVI y .TAR.GZ. Cada archivo corresponde a lo capturado en un día, y los creo con mencoder y con tar (y de inmediato elimino de archive/ las imágenes originales). Pasado un tiempo sólo conservo aquéllos que me interesan:

[2011-12-05 12:10:03 Mon] optiplex-gx1 > siddharta:~/Scripts/webcam/history
$ ls -lh
total 499M
-rw-r--r-- 1 siddharta siddharta  85M 2010-04-19 08:24:57 Mon 2010-04-18-webcam.avi
-rw-r--r-- 1 siddharta siddharta 139M 2010-04-26 15:17:20 Mon 2010-04-18-webcam.tar.gz
-rw-r--r-- 1 siddharta siddharta 119M 2010-05-28 09:16:44 Fri 2010-05-27-webcam.avi
-rw-r--r-- 1 siddharta siddharta 157M 2010-05-28 09:17:43 Fri 2010-05-27-webcam.tar.gz

Toma en cuenta el tamaño del medio de almacenamiento porque podrías fácilmente consumir el espacio disponible en menos de 1 mes. En mi caso hice un script que utiliza una configuración que sí archiva (cuando no hay nadie en casa) y otro script que utiliza otra configuración que no archiva (cuando estamos en casa). También tengo otros script para poner offline la cámara, mostrando el típico patrón de colores que se muesta en la TV cuando no hay señal.

Lo ideal es que el script se inicie automáticamente en el arranque del equipo, y configura el BIOS de tu equipo para que automáticamente se encienda, si acaso hubiera falla eléctrica y el equipo se apagó.

Saludos,
Sidd.

Mi idea no es hacer cámara de vigilancia, sino utilizarla para chatear.
» No se puede utilizar con Kopete.
» No me funciona con Skype.
» No KMess no soporta webcam.
» No quiero utilizar mensajeros de GTK.

De servidor web utilizo SimpleHTTPServer.

PabliNet escribió:

Mi idea no es hacer cámara de vigilancia, sino utilizarla para chatear [...]

Debiste decirlo desde el principio estimado PAblo ... mira todo lo que escribí, según yo para ayudarte. No leíste la descripción del paquete o no la entendiste:

aptitude show webcam escribió:

[...] This package provides an utility that captures images from a video4linux device such as bttv, annotates them and uploads them to a webserver in an endless loop using FTP or SSH. [...]

Ahí dice que es una utilería para capturar imágenes (fotos) desde un dispositivo compatible con video4linux, hacer anotaciones en dichas imágenes, y cargarlas a algún servidor web de forma periódica, usando FTP, SSH [...]. Observa que no es para transmitir video (video streaming).

Saludos,
Sidd.

AGREGO: me refiero a que debiste especificar que tu intención es usar una aplicación para webcam en conjunto con una aplicación para chat, porque "[...] transmitir vía webcam desde la máquina donde estoy [...]" no es indicativo de ello. A eso me refería.

PabliNet escribió:

Mi idea no es hacer cámara de vigilancia, sino utilizarla para chatear.
» No se puede utilizar con Kopete.
» No me funciona con Skype.
» No KMess no soporta webcam.
» No quiero utilizar mensajeros de GTK.

De servidor web utilizo SimpleHTTPServer.

Un "Gracias siddharta por tomarte tu tiempo" no hubiera estado de más, ¿No?

siddharta escribió:
PabliNet escribió:

Mi idea no es hacer cámara de vigilancia, sino utilizarla para chatear [...]

Debiste decirlo desde el principio estimado PAblo ... mira todo lo que escribí, según yo para ayudarte. No leíste la descripción del paquete o no la entendiste:

aptitude show webcam escribió:

[...] This package provides an utility that captures images from a video4linux device such as bttv, annotates them and uploads them to a webserver in an endless loop using FTP or SSH. [...]

Ahí dice que es una utilería para capturar imágenes (fotos) desde un dispositivo compatible con video4linux, hacer anotaciones en dichas imágenes, y cargarlas a algún servidor web de forma periódica, usando FTP, SSH [...]. Observa que no es para transmitir video (video streaming).

Saludos,
Sidd.

AGREGO: me refiero a que debiste especificar que tu intención es usar una aplicación para webcam en conjunto con una aplicación para chat, porque "[...] transmitir vía webcam desde la máquina donde estoy [...]" no es indicativo de ello. A eso me refería.

Gracias Siddharta y sobre todo te pido disculpas.

PabliNet escribió:

Gracias Siddharta y sobre todo te pido disculpas.

No te apures, tenía tiempo y lo dediqué con gusto. Si no a ti quizás a alguien más le sea de utilidad.

Saludos,
Sidd.