Vamos a documentar como hacer una transmisión de video con la Camara Raspberry Pi a un PC. Como objetivo adicional nos proponemos crear un dispositivo autónomo que transmita imágenes mediante wifi en vivo, similar a una cámara wireless de seguridad.
![]() |
![]() |
Veremos que la Raspberry Pi camera board es un modulo diseñado para ser integrado con facilidad en el Pi.
La cámara posee una relación calidad-precio notable:
- Tamaño 25mm x 20mm x 9mm
- Peso 3g
- Bajo consumo
- 5 Megapixels
- 2592 x 1944 pixeles de imágenes estáticas
- Soporta video 1080p30, 720p60 y 640x480p60/90
- Cuesta menos de 25 Euros
Contamos con un Raspberry Pi B 512K de memoria, ya nos hemos aproximado varias veces a micro placas
https://unpocodejava.wordpress.com/2013/07/05/java-en-un-raspberry-pi-desde-cero-2/
https://unpocodejava.wordpress.com/?s=raspberry+pi
Y tenemos un avance de los esfuerzos por tener una distribución de Java en un Pi:
https://unpocodejava.wordpress.com/2012/05/30/java-corriendo-intentando-correr-sobre-raspberry-pi/
https://unpocodejava.wordpress.com/2012/08/14/corriendo-tomcat-7-en-un-raspberry-pi/
Instalación
La instalación es muy sencilla. La banda se inserta en el conector plano entre la Ethernet y el HDMI. Primero es necesario levantar una pestaña tirando hacia arriba:
Después se inserta la faja de la cámara, con la parte plateada orientada hacia el puerto HDMI
Cuando esté bien colocada, se baja de nuevo la pestaña y listo.
Configuración
Arrancamos el Pi y nos autenticamos. El nombre y password por defecto, como ya hemos visto en otros tutoriales es
usuario: pi
password: raspberry
Actualizamos el firmware y librerías del Pi a la última versión:
>sudo apt-get update
>sudo apt-get upgrade

Accedemos a la configuración del Pi con el comando
>sudo raspi-config
Navegamos al menú camera y seleccionamos enable
Seleccionamos Finish y reiniciamos
En el tutorial anterior java-en-un-raspberry-pi-desde-cero, podemos encontrar como instalar wifi y un servidor remoto vnc en el Pi. En http://www.raspipc.es podemos encontrar baterías recargables de 5v – 1mA y una toma usb, como esta:
Con esto y un poco de esparadrapo, quedamos totalmente wireless para mover la cámara en busca de la mejor toma.
Pruebas Locales
Procedemos testear que la instalación de la cámara funciona correctamente. El commando raspivid permite realizar capturas de video, mientras que raspistill captura imágenes fijas.
Escribamos en la consola el siguiente comando:
>raspistill -v -o test.jpg
Que muestra 5 segundos de vista previa por defecto y toma una foto, salvándola en el fichero test.jpg,
Hay que destacar que no es posible ver la vista previa desde el cliente remoto vnc.
-o ó –output el nombre del fichero y -t ó –timeout especifica los milisegundos de vista previa.
-d ó –demo ejecuta el modo demo que rota a través de varios efectos de imagen
Comandos de Ejemplo
Captura 5s de video en formato h264:
>raspivid -o video.h264
Capturar 10s de video:
>raspivid -o video.h264 -t 10000
Captura 10s de video en modo demo:
>raspivid -o video.h264 -t 10000 –d
Para más información acerca del uso de estos comandos, referirse a la bibliogrfia o a la ayuda de los propios comandos:
>raspivid | less
>raspistill | less
Desactivar Led de la Cámara
La cámara incluye un LED en la esquina que se enciende cuando la cámara esta activa.
Este led se puede desactivar editando el fichero
>sudo nano /boot/config.txt
y añadiendo la linea
>disable_camera_led=1
Streaming con VLC
VLC es una plataforma opersource que interpreta la mayoría de formatos multimedia. Para hacer streaminf vlc, necesitamos descargar en el PI el software
>sudo apt-get install vlc
Un método muy eficiente para hacer stream es el vía protocolo RTSP
>raspivid -o – -t 3600000 -w 800 -h 600 -fps 31 |cvlc -vvv stream:///dev/stdin –sout ‘#rtp{sdp=rtsp://:8554/}’ :demux=h264

El comando activa la cámara y el puerto 8554 es configurado como canal de stream, a la escucha de suscriptores.
Podemos jugar con los valores -w (ancho en pixels), -h (alto en pixels), -fps (fotogramas por segundo) para conseguir mayor velocidad de transmisión.
Para ver el stream debemos instalar el cliente VLC en un PC, descargable desde http://www.videolan.org/.
Para suscribirnos a la dirección de stream hay que abrir en el menú Abrir volcado de red…
La dirección:
>rtsp://<IPdeRaspberryPi>:8554/
por ejemplo, un PC en la red local podría tener esta IP
Pulsamos en reproducir y comenzaremos a ver el video en el reproductor.
Los pros de este método son
- Facilidad de configuración
- Conexión de múltiples clientes
- Fácil acceso a traves de routers (se podria configurar streaming a mediante protocolo http de un modo similar).
- La aplicación se integra en multiples plataformas, como lynux y android
Los contras.
- Pese a haber probado múltiples configuraciones en cliente y en servidor, el protocolo rtsp tiene una latencia de hasta 10 segundos en la LAN. Esto provoca un desfase que hace imposible el uso en tiempo real de una conexión.
Este un problema conocido y el autor del post aun no ha encontrado una solución factible.
Streaming Punto a Punto con MPlayer
Al contrario que el protocolo anterior El stream punto a punto envía la señal del raspberry pi directamente a la IP del reproductor. Para ello necesitamos dos programas:
- Netcat es una utilidad de red que redirige flujos de lectura/escritura utilizando tcp/udp.
- MPlayer es un reproductor opensource que interpreta los formatos mas habituales.
- Tomamos como ejemplo un PC con sistema Windows. Tenemos que instalar ambos programas, descargables desde
https://dl.dropboxusercontent.com/u/106074492/mplayer%20and%20netcat.zip
y los descomprimimos en un directorio de trabajo, por ejemplo d:/pro/netplayer
Para arrancar la escucha en el PC, ejecutar en el directorio de trabajo
>d:
>cd pro
>cd netplayer
>nc -l -p 5001 | mplayer -vo direct3d -fps 31 -cache 2048 -nosound -framedrop –
que genera un socket de escucha (-l) en el puerto 5001. De ahí, enruta (|) el stream de información al reproductor MPlayer con la siguiente configuración:
- Interpreta 31 fotogramas por segundo
- Con un cache de 2MB
- Deshabilitamos el sonido (la cámara no tiene micrófono)
- En caso de falta de información, tirar el fotograma
- Es muy importante es seleccionar el driver de output de video. En las pruebas direct3d ofrece un rendimiento muy correcto.
El programa se queda a la escucha de un stream entrante.
En la parte del Pi necesitamos descargar el software:
>sudo apt-get install mplayer netcat
y activamos la cámara para enviar el stream de video con el comando
>raspivid -o – -vf -t 3600000 -w 800 -h 600 -fps 31 -n| nc <IPdePC> 5001
conocemos el comando raspivid; con el pipe mandamos la información al netcat, que manda el stream a la IP y puertos especificados.
En la parte del PC, se abre el reproductor mplayer:
Los Contras de este método son:
- No es posible enviar más que a un solo destinatario
- Configuración muy rígida, es necesario que el PI conozca la IP del destinatario
- El mplayer no esta tan extendido en diferentes plataformas como el VLC
Los Pros:
- Muy baja latencia, menos de 0.5 segundos en la LAN.
- Quitar fondos, temas y efectos visuales del escritorio del gateway
- Definir la resolución de la maquina Gateway lo mas parecida al tamaño de la pantalla (se podría configurar que corriera en full screen)
- Bajar los colores del cliente vnc a 256
- Bajar los fps, width y height del transmisor (Pi)
Debido a la velocidad, este método es válido para imagen en tiempo real.
Solución Múltiples Clientes
Si fuera necesario conectar múltiples clientes (de distintos sistemas operativos) al stream, una solución sencilla podría ser usar el PC como “Gateway” de video y conectarse mediante vnc.
Los clientes VNC existen para múltiples plataformas. En el “gateway” (PC), instalar y ejecutar el servidor vnc desde http://www.realvnc.com/
El puerto de escucha por defecto es el 5900, es posible cambiarlo desde la sección options.
La pantalla de conexión del cliente es como la siguiente:
Escribimos la ip:puerto del servicio vnc (5900) del Gateway PC y pulsamos connect. La primera vez dara un aviso (por no tener el certificado) y pasara a la ventana de autenticación:
Y sin más problemas accederemos al escritorio.
En mi experiencia, la elección del driver de reproducción mplayer (opción –vo) afecta drásticamente a la calidad de la imagen remota.
Si accedemos desde fuera de la LAN al gateway, tener en cuenta que hay que poner la IP externa (consultar en www.whatismyip.org) y configurar el router para redespachar la señar a la IP/puerto internos correspondientes:
Existen diversas implementaciones para VNC desde android. Debido que en los dispositivos móviles la banda limitada de datos, si queremos conseguir imagen a tiempo real se recomienda:
Referencias
Tutorial de iniciación a la cámara
http://www.adafruit.com/products/1367
Documentación Raspicam mas en profundidad
http://www.raspberrypi.org/wp-content/uploads/2013/07/RaspiCam-Documentation.pdf
Resumen de conexión VLC con protocolos rtsp/http/hsl
http://www.mybigideas.co.uk/RPi/RPiCamera/
Tutorial configuración punto a punto MPlayer
http://smokespark.blogspot.com.es/2013/06/26-streaming-live-video-from-raspicam.html

























Deja un comentario