Source: http://rsppi.blogspot.com/2013/01/streaming-de-video-desde-raspberrypi.html?showComment=1376535003502
Timestamp: 2020-06-04 14:25:53+00:00

Document:
RSPPI - RaSPberry PI: Streaming de video desde RaspberryPi (parte 1)
Streaming de video desde RaspberryPi (parte 1)
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:
[    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-audio
y si ejecuto:
Bus 001 Device 005: ID 0c45:62f1 Microdia
por 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):
¿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:
Ahora 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:
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.
Por Unknown a las 9:58
Etiquetas: ardu-quad-raspbi-copter, cpu, gpu, mjpg-streamer, streaming, transcodificador, usb, video, webcam
Anónimo 7 de enero de 2013, 11:31
has visto este??
http://patolin.com/blog/2012/12/12/video-vigilancia-con-el-raspberry-pi/
Unknown 7 de enero de 2013, 11:35
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.
Anónimo 7 de enero de 2013, 12:08
Buenas! Por curiosidad, ¿Puedes compartir el link de la webcam que has comprado?
¿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?
Unknown 7 de enero de 2013, 12:15
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
Unknown 12 de enero de 2013, 14:30
Ante todo felicitarte por el blog, siempre espero con ansia una entrada nueva de este feed y mira que mi reader está que explota.
Vale 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.
Unknown 12 de enero de 2013, 14:37
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"
Isaac Morán 11 de febrero de 2013, 18:00
suscribo 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.
Anónimo 26 de marzo de 2013, 11:55
He aquí una prueba de que esta es la mejor opcion:
http://www.youtube.com/watch?v=l1RJf-XwoIE
Unknown 26 de marzo de 2013, 11:59
voy a tirar esa webcam a la basura y seguir mis propias instrucciones ;)
Unknown 12 de enero de 2013, 14:53
he 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.
Para 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.
Unknown 7 de marzo de 2013, 17:33
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??
Unknown 8 de marzo de 2013, 8:03
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 :)
Gracias por la respuesta JuanMol.
Lo 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??
Unknown 8 de marzo de 2013, 12:46
o_O coooomo? 2 webcams + 2 raspis = 1 url? quieres ver dos webcams de dos raspberrys en una misma web?
Unknown 8 de marzo de 2013, 16:27
Si lo que viene siendo una videoconferencia algo parecido al Skipe.
Unknown 8 de marzo de 2013, 20:50
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.
Yo 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.
Unknown 11 de marzo de 2013, 9:48
Si eso es necesito un servidor de videoconferencias probare con Asterisk y si tengo alguna duda ya te comentare oka.
Anónimo 13 de marzo de 2013, 11:25
es posible hacer streaing por rtp en vez de por http?
por supuesto, cambiando el parámetro output_http.so por el del rtp :)
Anónimo 13 de marzo de 2013, 14:10
el 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
Unknown 15 de mayo de 2013, 23:57
sigo los pasos pero cuando pongo "make" me dice "command not found"
Unknown 16 de mayo de 2013, 0:03
yo ya lo tenia instalado de otras compilaciones
Unknown 16 de mayo de 2013, 9:13
Gracias Juan por tu rapida respuesta
¿Pongo eso en lugar de "make"?
Unknown 16 de mayo de 2013, 9:18
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:
1- apt-get install build-essential
2- make
Unknown 16 de mayo de 2013, 12:20
Lo intento el lunes que viene, que tengo un viaje hoy, y ya te comento los resultados.
tejonbiker 24 de junio de 2013, 19:20
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.
john 8 de julio de 2013, 4:13
hola 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?
Unknown 8 de julio de 2013, 6:58
tienes que poner una regla de NAT en el router, de forma que el puerto 8080 apunte a la ip del raspberry, al mismo puerto.
koy-leo 15 de agosto de 2013, 4:50
Hola que tal amigo sabes despues de coloco el comando
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
Unknown 15 de agosto de 2013, 12:15
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 "
Unknown 24 de agosto de 2013, 16:05
Tengo un problema con este comando
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.
Unknown 26 de agosto de 2013, 6:58
prueba con svn checkout svn://svn.code.sf.net/p/mjpg-streamer/code/ mjpg-streamer-code
Unknown 26 de agosto de 2013, 10:46
Vale, me ha funcionado perfectamente. Gracias Juan.
Ahora 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:
Unable to set format: 1448695129 res: 640x480
Y ahí me he quedado y no puedo hacer nada. Saludos
tu camara tiene otro formato, no le pongas el parametro -y
Unknown 26 de agosto de 2013, 11:57
Lo pongo tal que así: ./mjpg_streamer -i "./input_uvc.so -n " -o "./output_http.so -n -w ./www"
Unknown 26 de agosto de 2013, 12:09
cuando te sale ese fallo, te devuelve el prompt? o tienes que matarlo con ctrl+c?
Unknown 26 de agosto de 2013, 12:42
Me 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.
Unknown 26 de agosto de 2013, 13:02
el 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
Unknown 26 de agosto de 2013, 13:53
Milagrosamente, 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.
Algo no va bien :S
Unknown 26 de agosto de 2013, 14:15
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.
Anónimo 25 de agosto de 2013, 12:05
A mi me esta haciendo lo mismo....
pi@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.....
Alfonso Pastor 30 de agosto de 2013, 12:19
Buenas, aqui:
http://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 ;)
Anónimo 5 de octubre de 2013, 4:00
He 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.
Anónimo 14 de noviembre de 2013, 19:42
La Pi necesita "registro y pago" para MPEG por hardware, no así para MP4 pro tanto webcam MP4 mejor

References: resolución 
 resolución 
 resolución 
 resolución 
 resolución 
 resolución 
 resolución