Instalar cámara web en Raspberry Pi

En esta entrada te explicare como instalar una webcam en el Raspberry Pi para ello yo cuento con el siguiente modelo de webcam:

¿Cómo instalar fswebcam en Raspberry Pi?

Para poder hacer uso de ella se necesita instalar el fswebcam en el Raspberry, este permitirá la captura de fotogramas, también se puede trabajar por intervalos de tiempo, también cabe mencionar que se puede llamar a la aplicación desde un script bash cuando se requiera pero en esta ocasión no será necesario. Ejecutamos el comando: sudo apt-get install fswebcam

El fswebcam en el Raspberry tiene como característica el poder añadirle un pie de página a la captura, donde se puede especificar el texto de tu elección, por ejemplo con este comando lo puedes hacer: sudo fswebcam -r 640×480 -S 15 –flip h –jpeg 95 –shadow –title “WebOnActive” –subtitle “Prueba de Webcam Green Leaf” –info “Monitor: Active @ 1 fpm” –save home.jpg -q -l 60

Algunas de las opciones que te permite manejar esta aplicación son las siguientes:

  • -f : la resolución del frame ancho*altura
  • -s : numero de frameworks que salta para capturar una imagen estable y con buena iluminación
  • –flip : posición del marco en este caso horizontal (h)
  • –jpeg : calidad de captura jpeg
  • –shadow : agrega una sombra de pie de pagina con texto
  • –title, –subtitle, –info : diferentes formas de agregar el texto
  • –save : nombre con extensión donde se guardara el frame tomado.
  • -q : deja el proceso correr el  comando como proceso oculto
  • -l : toma foto instantánea cada numero de segundos especificados.

Si requieres mayor explicación para cada una de estas opciones puedes utilizar el man fswebcam para más detalle

Instalar motion en Raspberry Pi

El Motion en el Raspberry es utilizado como sistema de vigilancia completo y personalizable, entre lo que se puede hacer es capaz de detectar el movimiento, grabar frames, grabar video, entre otras cosas, para empezar hacer uso de este se necesita ejecutar el comando: sudo apt-get install motion

Este incluye una interfaz configurable, pero primero si se ocupa configurar algunos puertos para que el programa se ejecute correctamente puedes configurarlo desde este archivo: sudo nano /etc/motion/motion.conf

Buscaremos la sección de control:port (default 8080) y stream_port (default 8081), en mi caso se ocupará modificar para que el envío de imágenes al server funcionen sin problemas modificando las siguientes líneas:

# Restricti webcam connections to localhost only (dafault: on)

#webcam_localhost on

webcam_localhost off

Para iniciar el programa de motion se debe ejecutar el siguiente comando: sudo motion

Ahora se puede acceder a la interfaz de configuración por medio de la siguiente dirección que deberías de accesar por medio del navegador midori: http://RPI-IP:webcontrol_port

Donde el RPI-IP es la dirección local IP de tu Rapberry y el webcontrol_port es el mismo que seleccionaste en el archivo de configuración.

Algunos de los parámetros que te podrían servir son los siguientes:

  • width and height: Tamaño del frame, depende de la cámara
  • framerate: máximo de numero de frames capturados por segundo
  • thereshold: numero de pixeles en la imagen esto puede cambiar el disparador del detector del motion
  • quality: la calidad que deseas del frame
  • ffmpeg_timelapse: numero de segundos entre la captura del frame con la grabación
  • ffmpeg_bps: constante arbitraria para la codificación del vídeo (ignorado por el lapso de tiempo)
  • ffmpeg_variable_bitrate: constante para la codificación del vídeo (con una tasa de bits variable es la única manera de conseguir grabaciones decentes, este ajuste se utiliza para la grabación de movimiento de vídeo y lapsos de tiempo) y claro diferentes pistas de imágenes/vídeo/lapsos donde guardar las capturas se encuentra entre las opciones que pueden ser personalizadas a tu gusto.

Otra de sus caracteristicas es que es posible ejecutar cualquier comando en particular y en cualquier momento en que un evento sea iniciado y/o cuando una imagen es capturada, esto es posible con el parámetro on_event_start y on_picture_save.

El video que se haya realizado esta disponible en el puerto configurado del stream_port que se modifico previamente (en caso de haberlo hecho) e ingresas de la misma manera con el que ingresaste al webcontrol_port: http://RPI-IP:stream_port/

Todo lo que captura el motion se encontrará en la dirección /tmp/motion/, donde estarán todas las imágenes que capturaste y también archivos en formato .swf de los vídeos.

Todo aquello que se graba con formato .swf para reproducirlo es necesario instalar el Gnash en Raspberry Pi. Algunos resultados de trabajar con el motion son los siguientes:

Raspberry Pi mjpg streamer

Ahora se va a probar la aplicación mjpeg-streamer en Raspberry Pi que es muy útil para hacer vídeo streamming, permitiéndote trabajar también mediante una interfaz web para mostrar el stream. Para este instalarse se ocupan los siguientes comandos:

sudo apt-get update

sudo apt-get upgrade

wget http://lilnetwork.com/download/raspberrypi/mjpg-streamer.tar.gz

tar xvzf mjpg-streamer.tar.gz

sudo apt-get install libjpeg8-dev

sudo apt-get install imagemagick

cd mjpg-streamer/mjpg-streamer

make ./mjpg_streamer -i “./input_uvc.so” -o “./output_http.so -w ./www”

Para ejecutar el programa se ocupa ejecutar los siguientes comandos:

$ export LD_LIBRARY_PATH=.

$./mjpg_streamer -i ‘./input_uvc.so -d /dev/video0 -r 640×480 -f 15’ -o ‘./output_http.so -w ./www -p 8080’

Al momento de ejecutarlo puede salir el siguiente error

Unable to set format: Invalid argument
Init v4L2 failed !! exit fatal

Esto suele suceder porque el Raspberry no soporta el USB2.0, por lo tanto el stream solo puede usarse con el modo yuv para la salida de las imágenes.

Por ello, mediante una terminal sin importar la ubicación tienes que ejecutar el programa para ser ejecutado mediante el formato yuv, se tiene que hacer el enlace hacia la dirección donde se encuentra el archivo del programa y modificar un poco el comando y quedaría de la siguiente manera (en mi caso):

/home/pi/mjpg-streammer-r63/./mjpg_streamer -i ‘./input_uvc.so -d /dev/video0 -y’ -o ‘./output_http.so -w ./www -p 8080’

Y podras entrar a la interfaz que proporciona el MJPG streamer de la siguiente manera: http://RPI-IP:8080/ donde el RPI-IP es la dirección IP que se tiene asignada.

Cabe destacar que en la imagen no se nota nada por que se detuvo este proceso antes de que mostrará algo, pero más adelante se vera su funcionamiento.

Si lo único que esperas es ver como trabaja el streamming puedes ingresar directamente usando la página: http://RPI-IP:8080/?action=stream y te mostrará su funcionamiento.

Enviar streamming con hwebcam en Raspberry Pi

Para enviar el streamming con Raspberry Pi hasta un servidor, lo primero que se necesita es instalar el hwebcam en el Raspberry Pi, para eso descarga el instalador de hwebcam. Al descargarlo se descomprime en /home/pi para poder acceder facilmente, pero antes de trabajar con los archivos, se tiene que instalar las siguientes dependencias: build-essential libsdl1.2-dev libtheora-dev libasound2-dev libvorbis-dev libvorbisenc2 libjpeg62-dev y se debe instalar uno a uno debido a que hay un programa que desinstala otro al momento. Los comandos serían así:

$ sudo apt-get install build-essential libtheora-dev libasound2-dev libvorbis-dev libvorbisenc2 libjpeg62-dev

Después instalar el programa:

$ sudo apt-get install libsdl1.2-dev oggfwd

Ingresamos a la carpeta donde se descomprimieron los archivos del hwebcam, ejecutando: $ make

En caso de ocupar el SDL se debe ejecutar: $ make USE_SDL=0 y con ello se tiene compilado hwebcam con éxito.

Ahora para mandar el streamming al servidor se tendrá que ejecutar el siguiente comando:

$ sudo ./hwebcam -d /dev/video1 -s 320×240 -i 10 -e -o – | oggfwd localhost PUERTO CONTRASEÑA /webcam.ogg

Recuerda haber descargado los archivos del hwebcam y para que funcione el comando debes estar ubicado donde se descomprimieron, y donde el PUERTO es el puerto que utilizas para acceder al servidor del streamming (que en este caso se utiliza el icecast), y la CONTRASEÑA es la que utilizas en el servidor, el localhost puede ser también la página (o IP) donde se encuentre tu servidor.

Para ver lo que se encuentra transmitiendo el servidor de vídeo deberías ingresar a http://localhost:PORT/webcam.ogg

hwebcam raspberry pi

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *