Equipos y materiales > Openwrt & LEDE |
WebCam |
(1/5) > >> |
raphik:
Hace ya casi tres años que conecté por primera vez una webcam al HG553. No funcionó. En realidad no era tan complicado, pero no disponía de la información necesaria. He visto últimamente cierto interés en el foro y me he animado a contaros mis experiencias e invitaros a compartir las vuestras. Es de referencia obligada el artículo "Montemos una webcam IP barata", de Alfonso Pastor. Lo primero será instalar el firmware OpenWRT en un router compatible que disponga de al menos un puerto USB. Actualmente hago pruebas con una LifeCam HD-3000 de Microsoft conectada a un Comtrend AR-5387un con la Chaos Calmer 15.05-rc1. Adicionalmente, hago pruebas con una Creative N10225, una TVISTO ACM-330 y una Philips SPC620NC. Soporte básico USB Estos paquetes son imprescindibles para detectar y hacer funcionar cualquier cosa que conectemos al puerto USB --- Código: ---opkg update opkg install kmod-usb-core kmod-usb2 kmod-usb-ohci kmod-usb-uhci usbutils reboot --- Fin del código --- ¿Qué webcam tengo? Por su ID la conoceremos. La enchufamos al router y averiguamos su ID y su denominación --- Código: ---lsusb --- Fin del código --- --- Citar ---Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Bus 001 Device 002: ID 045e:0779 Microsoft Corp. LifeCam HD-3000 Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub --- Fin de la cita --- Las cámaras nuevas suelen ser de tipo UVC y las más antiguas GSPCA. Las hay de otros tipos, pero no funcionan en Linux. Para averiguar de qué tipo es la nuestra, buscamos su ID en estas listas: Lista UVC: http://www.ideasonboard.org/uvc/ Lista GSPCA: http://linuxtv.org/wiki/index.php/Gspca_devices ¿Qué driver instalo? CASO UVC Un único driver uvc para cualquiera que sea el modelo --- Código: ---opkg update opkg install kmod-video-uvc --- Fin del código --- CASO GSPCA Un driver genérico gspca y un subdriver específico para el modelo concreto --- Código: ---opkg update opkg install kmod-video-gspca-core opkg install kmod-video-gspca-xxx --- Fin del código --- Yo, en este punto, suelo reiniciar el router. Puede que no haga falta, pero ¿y si sí? --- Código: ---reboot --- Fin del código --- Tras el reinicio, comprobamos que OpenWRT reconoce el dispositivo --- Código: ---ls /dev/vid* --- Fin del código --- --- Citar ---/dev/video0 --- Fin de la cita --- ¿Qué capacidades tiene mi webcam? OpenWRt cuenta con una herramienta para averiguarlo. La instalamos --- Código: ---opkg update opkg install v4l-utils --- Fin del código --- La herramienta se llama v4l2-ctl y hace muchísimas cosas --- Código: ---v4l2-ctl --help --- Fin del código --- Probablemente, lo que más interesa ahora es lo referente al formato de píxel y los controles específicos de cada webcam. == FORMATOS # Lista de formatos posibles v4l2-ctl --list-formats # Lista de formatos, resoluciones y fps permitidos v4l2-ctl --list-formats-ext # Visualizar formato actual v4l2-ctl --get-fmt-video v4l2-ctl -V # Probar un formato de vídeo v4l2-ctl --try-fmt-video=width=<w>,height=<h>,pixelformat=<pf>,field=<f>,bytesperline=<bpl> # Cambiar el formato de vídeo v4l2-ctl --set-fmt-video=width=<w>,height=<h>,pixelformat=<pf>,field=<f>,bytesperline=<bpl> == CONTROLES # Lista de controles ajustables v4l2-ctl --list-ctrls v4l2-ctl -l # Lista de valores admitidos para los controles tipo menu v4l2-ctl --list-ctrls-menus v4l2-ctl -L # Visualizar un control v4l2-ctl --get-ctrl=brightness,contrast v4l2-ctl -C brightness,contrast # Cambiar un control v4l2-ctl --set-ctrl=brightness=x,contrast=y v4l2-ctl -c brightness=x,contrast=y FSWEBCAM Una vez instalada correctamente la webcam y conocidas sus capacidades, lo clásico es sacar la primera foto con fswebcam. Instalamos el paquete pertinente --- Código: ---opkg update opkg install fswebcam --- Fin del código --- ¡Y hacemos nuestra primera foto! --- Código: ---fswebcam /www/test.jpg --- Fin del código --- Guardar la foto en la carpeta /www del router facilita su visualización directa en el PC. Es tan simple como visitar la URL http://192.168.1.1/test.jpg (cambia la IP por la de tu router). Mi primera foto fue un rectángulo negro como la boca del lobo. Pero no hay que desesperar. Sólo es cuestión de pasarle a fswebcam los parámetros adecuados. --- Código: ---fswebcam -d v4l2:/dev/video0 -i 0 -r 640x480 --jpeg 75% --no-banner --save /www/test.jpg --- Fin del código --- No todas las cámaras responden por igual. La TVISTO ACM-330 tiene tendencia a sacar las fotos muy oscuras e incluso negras. Por suerte, el parámetro --skip <n veces> la obliga a hacer varios disparos previos (diez o veinte suele ser suficiente) antes del disparo aprovechable que se transformará en foto. Además, su resolución no es normalizada, de 640x480. Y para colmo, saca las fotos boca abajo (corregible con el parámetro --flip v) --- Código: ---fswebcam -d v4l2:/dev/video0 -i 0 -r 640x472 --skip 15 --flip v --jpeg 75% --no-banner --save /www/test.jpg --- Fin del código --- fswebcam permite ajustar un buen número de parámetros. Se puede visualizar la lista de parámetros tecleando --- Código: ---fswebcam --help --- Fin del código --- A veces es más cómodo definir el valor de los parámetros en un fichero de configuración y hacer la llamada a la utilidad así --- Código: ---fswebcam -c fswebcam.conf --- Fin del código --- El fichero de configuración puede tener el nombre que se quiera y estar en la ruta que se desee. El mío es poco original /root/fswebcam.conf --- Código: ---#quiet Hides all messages except for errors. #verbose # Displays extra messages while capturing #loop <seconds> Run in loop mode. #background Run in the background. #output <filename> Output the log to a file. device v4l2:/dev/video0 input 0 #tuner <number> Selects the tuner to use. frequency 0 #palette <name> Selects the palette format to use. #delay <number> Sets the pre-capture delay time. (seconds) resolution 640x480 fps 5 #frames <number> Sets the number of frames to capture. skip 4 #dumpframe <filename> Dump a raw frame to file. #set <name>=<value> Sets a control value. #revert Restores original captured image. #flip <direction> Flips the image. (h, v) #crop <size>[,<offset>] Crop a part of the image. #scale <size> Scales the image. #rotate <angle> Rotates the image in right angles. #deinterlace Reduces interlace artifacts. #invert Inverts the images colours. #greyscale Removes colour from the image. #swapchannels <c1c2> Swap channels c1 and c2. no-banner #underlay <PNG image> Sets the underlay image. #no-underlay Clears the underlay. #overlay <PNG image> Sets the overlay image. #no-overlay Clears the overlay. jpeg 50% #png <factor> Outputs a PNG image. (-1, 0 - 10) save /www/test.jpg #exec <command> Execute a command and wait for it to complete. --- Fin del código --- Hay parámetros interesantes, como loop <seconds>, que permite realizar fotos a intervalos regulares. O background, que lanza el comando en modo daemon. Otros son curiosos pero poco útiles, como invert, que produce una imagen negativa. O scale <size>, que lleva al router al límite de consumo de CPU. Es muy útil set <name>=<value>, que posibilita el acceso a los controles específicos de cada webcam. MJPG-STREAMER Llegó la hora del streaming de vídeo. El programa funciona con la Chaos Calmer RC1. Con firmwares anteriores nunca lo conseguí. Instalamos el paquete correspondiente --- Código: ---opkg update opkg install mjpg-streamer --- Fin del código --- Se configura editando el fichero /etc/config/mjpg-streamer --- Citar ---config mjpg-streamer 'core' option enabled 'true' option input 'uvc' option output 'http' option device '/dev/video0' option resolution '640x480' option yuv '1' option quality '60' option fps '5' option led 'auto' option www '/www/webcam' option port '8080' option username 'user' option password 'pass' --- Fin de la cita --- Los valores de color se pueden cambiar. Los demás, mejor no. Los valores en rojo deberían concordar con las capacidades de la webcam. Para activar la webcam e iniciar el streaming de vídeo --- Código: ---/etc/init.d/mjpg-streamer start --- Fin del código --- Para pararla --- Código: ---/etc/init.d/mjpg-streamer stop --- Fin del código --- El vídeo se puede visualizar con el navegador Firefox en la URL http://192.168.1.1:8080/ También se visualiza con VLC Media Player introduciendo la URL http://192.168.1.10:8080/?action=stream Hacemos unos cambios con LuCI y ya tenemos cámara web inalámbrica. Poner IP estática en la LAN Habilitar DHCP Y, lo más importante, configurar la interfaz wifi en modo AP, conectada a la LAN y activar el modo multimedia Seguiré posteando cuando haga funcionar el motion. Saludos. |
Tki2000:
Le pongo chincheta. Continúa, continúa... |
jar229:
Muy interesante. Esperamos con ganas la continuación :D EDITO: Lo añado al [Índice] Hilos relevantes de OpenWrt Enviado desde uno de mis 'cacharros' usando Tapatalk |
vk496:
Yo la vez que lo intenté con la mía no pude porque tenia que compilar el driver con el kernel y me daba palo reflashear todo el router. También decir que mi webcam es muy antigua y no hace uso de drivers genéricos... Salu2 |
raphik:
Identificación de la webcam --- Código: ---root@OpenWrt:~# lsusb Bus 002 Device 002: ID 041e:4028 Creative Technology, Ltd Vista Plus cam [VF0090] --- Fin del código --- Identificación del driver a instalar (lista GSPCA: http://linuxtv.org/wiki/index.php/Gspca_devices) --- Citar ---gspca_pac207 041e:4028 Creative Webcam Vista Plus --- Fin de la cita --- Instalación de driver y subdriver --- Código: ---opkg update opkg install kmod-video-gspca-core opkg install kmod-video-gspca-pac207 reboot --- Fin del código --- Identificación del formato y resoluciones --- Código: ---root@OpenWrt:~# v4l2-ctl --list-formats-ext ioctl: VIDIOC_ENUM_FMT Index : 0 Type : Video Capture Pixel Format: 'P207' Name : P207 Size: Discrete 176x144 Size: Discrete 352x288 --- Fin del código --- Controles específicos de la webcam --- Código: ---root@OpenWrt:~# v4l2-ctl --list-ctrls User Controls brightness (int) : min=0 max=255 step=1 default=46 value=46 flags=slider exposure (int) : min=3 max=90 step=1 default=5 value=5 flags=inactive gain_automatic (bool) : default=1 value=1 flags=update gain (int) : min=0 max=31 step=1 default=7 value=7 flags=inactive brightness (int) : min=0 max=255 step=1 default=46 value=46 flags=slider exposure (int) : min=3 max=90 step=1 default=5 value=5 flags=inactive gain_automatic (bool) : default=1 value=1 flags=update gain (int) : min=0 max=31 step=1 default=7 value=7 flags=inactive --- Fin del código --- Prueba de fswebcam --- Citar ---root@OpenWrt:~# fswebcam -d v4l2:/dev/video0 -i 0 -r 352x288 --no-banner --save /www/test.jpg --- Opening v4l2:/dev/video0... /dev/video0 opened. Unable to find a compatible palette format. --- Fin de la cita --- El formato de píxel P207 no está soportado por fswebcam (ni por mpg-streamer). |
Navegación |
Índice de Mensajes |
Página Siguiente |