Creative Labs Webcam5

Estos son los pasos que he seguido para hacer funcionar mi webcam Creative Labs Webcam5 en Gentoo Linux.

Configurar el Kernel


Lo primero es configurar el kernel con las siguientes opciones:
Device Drivers--->
  Multimedia devices --->
    [m] Video For Linux
    [*]   Enable Video For Linux API 1 (DEPRECATED)
    [*]   Enable Video For Linux API 1 compatible Layer
    [*]   Video capture adapters  --->
      [*]   Autoselect pertinent encoders/decoders and other helper chip
      [*]   V4L USB devices  --->
        [M]   USB Philips Cameras
Para indicar las opciones con las que queremos cargar el módulo, creamos el archivo /etc/modules.d/webcam con el siguiente contenido:
options pwc size=cif fps=30 power_save=1 leds=500,500 compression=0
Todas las opciones que acepta el módulo se pueden obtener ejecutando modinfo pwc.
Para que los cambios tengan efecto ejecutar:
# update-modules
y ahora ya podemos cargar el módulo que permite usar la webcam:
# modprobe -v pwc

Crear un dispositivo UDEV própio


Si todo ha ido bien, al cargar el modulo se deberia de haber creado el dispositivo /dev/v4l/video0 (que a su vez tiene un alias en /dev/video0). Si tenemos otros dispositivos compatibles con Video4Linux es posible que los nombres de los dispositivos sean distintos. Para evitar confusiones, lo mejor es crear una regla UDEV y así la webcam siempre estará disponible en un mismo dispositivo.

En mi caso, he creado una regla UDEV que hace que, además del dispositivo por defecto, la webcam siempre esté accesible en el enlace simbólico /dev/webcam.
Para crear la regla he puesto en /etc/udev/rules.d/10-webcam.rules lo siguiente:
BUS="usb", SYSFS{idVendor}="041e", SYSFS{idProduct}="400c" KERNEL="video[0-9]*", SYMLINK="webcam"

Para averiguar el idVendor y el idProduct usados en la regla podemos hacerlo desde cualquier utilidad que de información sobre los dispositivos conectados al bus USB, como puede ser el centro de informacion de KDE, el comando lsusb (perteneciente al paquete sys-apps/usbutils) o simplemente ejecutando
# cat/proc/bus/usb/devices

Reproducir video


Para probar la cámara podemos usar varios programas. Probablemente el más liviano sea XawTV:
# xawtv -remote -n -c /dev/webcam -geometry 320x240-0+0
aunque yo prefiero usar el programa media-video/camstream. Además este último incluye el comando caminfo que es muy útil para obtener información de la cámara. También podemos usar media-video/mplayer, si lo hemos compilado con las USE="v4l v4l2"
# mplayer tv:// -tv driver=v4l:width=320:height=240:device=/dev/webcam -vo xv -nosound -x 800 -y 600 -vf-add pp=hb:a/vb:a,hqdn3d

Grabar video


Para grabar video procedente de la webcam podemos usa ffmpeg con la USE="v4l encode".
# ffmpeg -vd /dev/webcam -r 30 -s 320x240 -an -hq -y -t 30 captura.avi
Este es el significado de los parametros usados:
  • -vd /dev/webcam nuestro dispositivo de video (webcam)
  • -r 30 capturar a 30 fps
  • -s 320x240 resolucion de la captura
  • -an no capturar audio
  • -t 30 capturar 30 segundos
  • -hq compresion de alta calidad
  • -y sobrescribir el fichero si ya existe
  • captura.avi archivo de salida
Para mayor calidad podemos añadir el parametro -sameq, pero ocupa unos 10MB por minuto :0

Para facilitar la tarea, me he hecho este script para capturar:
#!/bin/sh
DATUM=`date '+%Y-%m-%d[%X]'`
DIR='/home/stolz/capturas'
ffmpeg -vd /dev/webcam -r 30 -s 320x240 -an -y -hq ${DIR}/.${DATUM}-v.avi

Al igual que antes, también podemos usar mplayer para grabar vídeo procedente de la webcam
# mencoder -tv driver=v4l:width=320:height=240:device=/dev/webcam -nosound -vf-add pp=hb:a/vb:a,hqdn3d -ovc lavc -o archivo.avi