para ver tu webcam USB desde la red
Buenos días, espero que Los Reyes Magos se hayan portado bien. Este post es el primero de muchos relacionados con la transmisión de vídeo desde el RaspberryPi. La fuente de vídeo en este primer caso, es una webcam usb standard, de resolución ... pestosa ... comprada en DealExtreme por 4€. Vamos a ir configurando y comparando los resultados ...Para la primera prueba vamos a usar mpeg-streamer y voy usar las instrucciones de esta web. Lo primero que hay que hacer, es comprobar que el sistema reconoce la webcam, para ello (tras conectar la webcam) ejecutamos:
dmesgen mi caso el resultado es:
[ 3.733746] usb 1-1.2.1: new high-speed USB device number 5 using dwc_otg [ 3.886477] usb 1-1.2.1: New USB device found, idVendor=0c45, idProduct=62f1 [ 3.902072] usb 1-1.2.1: New USB device strings: Mfr=2, Product=1, SerialNumber=0 [ 3.916756] usb 1-1.2.1: Product: USB 2.0 Camera [ 3.928454] usb 1-1.2.1: Manufacturer: Sonix Technology Co., Ltd. [ 4.501337] udevd[137]: starting version 175 [ 5.886469] Linux video capture interface: v2.00 [ 6.082886] uvcvideo: Found UVC 1.00 device USB 2.0 Camera (0c45:62f1) [ 6.457483] input: USB 2.0 Camera as /devices/platform/bcm2708_usb/usb1/1-1/1-1.2/1-1.2.1/1-1.2.1:1.0/input/input0 [ 6.920295] usbcore: registered new interface driver uvcvideo [ 7.045062] USB Video Class driver (1.1.1) [ 7.489526] 5:3:1: cannot get freq at ep 0x84 [ 7.547611] usbcore: registered new interface driver snd-usb-audioy si ejecuto:
lsusbel resultado es:
Bus 001 Device 005: ID 0c45:62f1 Microdiapor lo que he tenido suerte y el sistema reconoce el dispositivo. De no ser así, la forma más rápida de localizar el driver, es buscando por el código del fabricante:producto , que en mi caso es 0c45:62f1.
Ahora resolvemos dependencias, bajamos y compilamos mpeg-streamer (5 minutillos):
apt-get update apt-get install libjpeg8-dev imagemagick subversion cd /usr/src/ svn co https://mjpg-streamer.svn.sourceforge.net/svnroot/mjpg-streamer mjpg-streamer cd mjpg-streamer/mjpg-streamer make¿quien dijo que compilar era difícil? Ahora hacemos la prueba de fuego:
./mjpg_streamer -i "./input_uvc.so -y -n " -o "./output_http.so -n -w ./www"en la web que he indicado antes, no ponían el parámetro -y en el input, pero en mi caso es necesario, ya que me salia este error:
MJPG Streamer Version: svn rev: 3:172 i: Using V4L2 device.: /dev/video0 i: Desired Resolution: 640 x 480 i: Frames Per Second.: 5 i: Format............: MJPEG Unable to set format: 1196444237 res: 640x480 Init v4L2 failed !! exit fatal i: init_VideoIn failedAhora vamos a un navegador y abrimos http://ip_del_raspberry:8080 En el menú de la izquierda seleccionamos "stream" y comprobamos la calidad y velocidad del video.
Como podemos ver, la calidad es exactamente la de la webcam (bien) pero hay un retraso, de por lo menos dos segundos (mal), no es del todo alarmante y a más de uno le servirá esto, y a mi casi casi que me sirve. Si quieres verlo desde un Android, selecciona en el menú de la izquierda "Javascript" (muy bien).
Pero hay un problema más. Si ejecutas un:
topen mi caso:
lo que significa que mpeg-streamer está consumiendo cerca del 90% de los recursos del microprocesador del RaspberryPi, y eso no es admisible.
Es una pena, porque es realmente fácil, la calidad es la misma de la webcam, se puede ver desde el Android, pero no puedo permitir que un sólo recurso, acapare todo el micro. Esto se debe a que mpeg-streamer lanza una rágafa de campturas jpeg de la webcam y hace la transcodificación sobre la CPU en lugar de sobre la GPU. Así que este superpoder (por ahora) no convence del todo, hasta que encuentre un transcodificador sobre GPU.
has visto este??
ResponderEliminarhttp://patolin.com/blog/2012/12/12/video-vigilancia-con-el-raspberry-pi/
hola, lo vi hace tiempo. Creo que esto tampoco va a servir, porque no hay transcodificacion, ademas me faltaría el software de streaming. De todas formas, si quieres videovigilancia, te recomiendo Zoneminder, que tengo pendiente hacer un tutorial al respecto.
EliminarBuenas! Por curiosidad, ¿Puedes compartir el link de la webcam que has comprado?
ResponderEliminar¿Es esta? http://dx.com/p/mini-1-3m-pixel-usb-webcam-color-assorted-driver-free-42976
¿Funciona con enchufarla o hay que configurarla de alguna forma?
Gracias!
tiene pinta de ser la misma, pero con otra carcasa. La que estoy probando es: http://dx.com/p/compact-usb-pc-webcam-300k-pixel-25948
EliminarAnte todo felicitarte por el blog, siempre espero con ansia una entrada nueva de este feed y mira que mi reader está que explota.
ResponderEliminarVale ya he tenido tiempo para probar este primero. y tengo que decir que mis resultados son muy satisfactorios.
Consumo de CPU del 3% y un retardo que no llega ni a medio segundo.
Tengo una raspberry pi de 512MB pero no creo que eso influya.
Si quieres hacer pruebas con ella en algún momento ya en privado te paso mi ip, para que hagas las pruebas que quieras en remoto.
Un saludo.
y ... porque a mi se pone al 90% y como 4 segundos de retraso? as seguido mis instrucciones y te sale mejor que a mi? jo ... "la ironia del blogero tecnologico"
EliminarHola,
Eliminarsuscribo lo que comenta Juan Carlos. De los tres métodos que has mostrado en los diferentes posts, este es el que mejor ha funcionado. Con mi webcam la carga no sube del 10% y apenas hay retraso en la imagen. Eso sí, quitando el parámetro "-y" del comando.
Te sugiero que pruebes con otra webcam, ya que con la mia, el segundo método que has puesto no va y todo parece depender de si la webcam incluye compresión o no.
He aquí una prueba de que esta es la mejor opcion:
Eliminarhttp://www.youtube.com/watch?v=l1RJf-XwoIE
voy a tirar esa webcam a la basura y seguir mis propias instrucciones ;)
Eliminarhe seguido todo pasa a paso, y con la opción de -y me salía mal la imagen y quité el parámetro y tatachan!!! todo perfecto.
ResponderEliminarPara tratar de ayudar, la webcam era una que estaba tirada por casa: una speed-link spectrum microphone webcam SL-6826 http://www.speedlink.com/?p=3&cat=1M&pid=18792&paus=1
Por si ayuda.
Muy bueno, esta todo muy claro pero como podria mandar lo q captura la cam a un servidor y ver el video stream en este??
ResponderEliminarUn Saludo.
Charlie
si lo dices por el tema del rendimiento, no vas a ganar mucho así, date cuenta que la captura, mezcla y envío la tienes que hacer en el raspberry. Si lo dices por usar algo como dlna o similar ... ni idea :)
EliminarGracias por la respuesta JuanMol.
EliminarLo que quiero es realizar una videoconferencia entre dos Raspis. Alguna sugerencia?
Por eso queria saber si modificando el comando ./mjpg_streamer -i "./input_uvc.so -f 30 -n " -o "./output_http.so -n -w ./www" se podria mandar a otra diraccion que no sea la de http://ip_del_raspberry:8080.
Alguien sabe como encapsular el video de la cam en paquetes UDP??
o_O coooomo? 2 webcams + 2 raspis = 1 url? quieres ver dos webcams de dos raspberrys en una misma web?
EliminarSi lo que viene siendo una videoconferencia algo parecido al Skipe.
EliminarAlguna sugerencia??
lo que necesitas entonces es un servidor de videoconferencias ¿no? Puedes usar un Hangout de GTalk o bien, que es lo mas interesante, usar Asterisk.
EliminarYo hace un millon de años, probé OpenMeeting, que tiene opciones de pizarra compartida y eso. Tenia un fork que se llamaba algo asi como BigBlueButton, además lo integré con Asterisk, muy fácil.
Gracias por la respuesta Juan.
EliminarSi eso es necesito un servidor de videoconferencias probare con Asterisk y si tengo alguna duda ya te comentare oka.
Un Saludo
es posible hacer streaing por rtp en vez de por http?
ResponderEliminarpor supuesto, cambiando el parámetro output_http.so por el del rtp :)
Eliminarmuchas gracias,
Eliminarel problema que me sale que no encuentra el pluging, y nose como añadirlo
tambien he probado por udp, porque ese plugig si em lo encuentra, pero luego al leerlo con VLC, pongo la ip de la ras`pberry y no me reproduce nada
Muchas gracias por el tuto
ResponderEliminarsigo los pasos pero cuando pongo "make" me dice "command not found"
¿Que puedo hacer?
apt-get install build-essential
Eliminaryo ya lo tenia instalado de otras compilaciones
Gracias Juan por tu rapida respuesta
ResponderEliminar¿Pongo eso en lugar de "make"?
no no sorry. Tienes que ejecutar eso antes del make. Te faltaba el comando, y lo instalas, junto con el resto de herramientas de compilación con el build-essential. Así que:
Eliminar1- apt-get install build-essential
2- make
Lo intento el lunes que viene, que tengo un viaje hoy, y ya te comento los resultados.
ResponderEliminarGracias crack!
Tengo una cámara Logitech C170 corriendo con el MJPEG-Streamer y con una resolución de 320x240 tengo cerca de 10 FPS con un lag de menos de un segundo (Aproximadamente 0.5 segundos), con 640x480 tengo cerca de 4 cuadros por segundo pero muy entre cortados (prefiero menor resolución a mayor fluidez). Podrías intentar esta resolución para ver si te convence, a esta resolución la carga del CPU no supera el 25%, de hecho el RPi lo tenemos como cerebro de un robot móvil y además de mandar el stream también esta al tanto de un socket TCP y responde con mucha fluidez.
ResponderEliminarhola muy buen tutorial, me jala de maravillas apenas alcanza el segundo de retraso, y una pregunta como hago para que pueda ver el stream desde internet?
ResponderEliminartienes que poner una regla de NAT en el router, de forma que el puerto 8080 apunte a la ip del raspberry, al mismo puerto.
EliminarHola que tal amigo sabes despues de coloco el comando
ResponderEliminar./mjpg_streamer -i "./input_uvc.so -y -n " -o "./output_http.so -n -w ./www"
me sale el prompt :
>
asi se queda no me aparece nada no sabes que pudiera ser?? o que mas tengo que hacer ya que al intentar abrir el navegador con la ip de rasp:8080 no me sale nada ni en la terminal ni en el navegador
eso pasa uando te dejas una ' o " por el camino o bien nos traiciona el copy paste, que creo que es lo te pasa. Escribe la linea a mano y asegurate de tener un numero par de ' y "
EliminarTengo un problema con este comando
ResponderEliminarsvn co https://mjpg-streamer.svn.sourceforge.net/svnroot/mjpg-streamer mjpg-streamer
A la hora de introducirlo, la Raspberry me escupe "svn: E175011: El repositorio se movió permanente a '%'s; use 'relocate' por favor"
¿Cómo puedo solucionarlo? Muchísimas gracias Juan, me encanta tu blog.
prueba con svn checkout svn://svn.code.sf.net/p/mjpg-streamer/code/ mjpg-streamer-code
EliminarVale, me ha funcionado perfectamente. Gracias Juan.
EliminarAhora tengo un problema al arrancar el streamer. Cuando no pongo la -y me sale lo mismo que a tí, y cuando la pongo, me sale otra cosa parecida:
MJPG Streamer Version: svn rev: 3:172
i: Using V4L2 device.: /dev/video0
i: Desired Resolution: 640 x 480
i: Frames Per Second.: 5
i: Format............: YUV
i: JPEG Quality......: 80
Unable to set format: 1448695129 res: 640x480
Init v4L2 failed !! exit fatal
i: init_VideoIn failed
Y ahí me he quedado y no puedo hacer nada. Saludos
tu camara tiene otro formato, no le pongas el parametro -y
EliminarLo pongo tal que así: ./mjpg_streamer -i "./input_uvc.so -n " -o "./output_http.so -n -w ./www"
EliminarY me sale:
MJPG Streamer Version: svn rev: 3:172
i: Using V4L2 device.: /dev/video0
i: Desired Resolution: 640 x 480
i: Frames Per Second.: 5
i: Format............: MJPEG
Unable to set format: 1196444237 res: 640x480
Init v4L2 failed !! exit fatal
i: init_VideoIn failed
Muchas gracias Juan.
cuando te sale ese fallo, te devuelve el prompt? o tienes que matarlo con ctrl+c?
EliminarMe devuelve al prompt. Pues me sale nada más poner la línea que he dicho antes. La cámara es la de la PS2.
Eliminarel eyetoy es del tipo mjpg-encoder, las buenas para estos menesteres. Me prestaron una no hace mucho y probé esto mismo sin problemas. Prueba ponerle otra vez -y y cambia la resolución a 320x240
EliminarMilagrosamente, he reiniciado la raspy, he desconectado la camara y vuelto a conectar. Ahora me funciona a la resolucion de 640, sin embargo, al meterme en la web, sale una imagen verde con una raya gris arriba. Probado también a 320x240 y lo mismo. Hago un top y mjpg-streamer me ocupa un 97.7% de CPU.
EliminarAlgo no va bien :S
a mi no me llegó a ir fina fina, creía que la cámara estaba estropeada, pero por lo que me cuentas, lo que no esta bien es el driver :-/ a mi me mezclaba la mitad izquierda con la derecha y alguna cosa más.
EliminarA mi me esta haciendo lo mismo....
ResponderEliminarpi@rasphome:/usr/src$ sudo svn co https://mjpg-streamer.svn.sourceforge.net/svnroot/mjpg-streamer mjpg-streamer
svn: E175011: El repositorio se movió permanente a '%'s; use 'relocate' por favor
y no se como solucionarlo, alguien puede ayudarnos.....
Gracias y Saludos
Victor
Buenas, aqui:
ResponderEliminarhttp://www.bobtech.ro/tutoriale/raspberry-pi/78-streaming-webcam-in-format-m-jpg-cu-raspberry-pi#rpi-mjpg-streamer
está el mjpg_streamer ya compilador para la Raspberry. La página está en rumano, pero se entiende bastante bien.
gracias por la info. Cierto es que tarda 10 segundos en compilar, pero gracias ;)
EliminarHe desarrollado una interfaz en Java para capturar el MJPEG de la una webcam (logitech C170), a 30 fps y a una resolución de 320x240 tengo un retraso de menos de medio segundo, lo que me hace pensar que el navegador no da prioridad al renderizado, he tenido problemas con las últimas pruebas, ya que el raspberry pi crashea después de rato (la linea de comando se congela), aun no doy con el problema de esto.
ResponderEliminarLa Pi necesita "registro y pago" para MPEG por hardware, no así para MP4 pro tanto webcam MP4 mejor
ResponderEliminar