2 de octubre de 2014

Streaming Video from the Raspberry Pi

Streaming Video desde el Raspberry Pi



A continuacion se menciona las cuatro formas mas usadas para streaming en el Raspberry Pi.


Para habilitar la cámara se debe abrir desde la terminal raspi-config y habilitarla.



Ver:  Enabling the camera

Streaming con VLC

Instalar VLC:  

pi@raspberrypi ~ $ sudo apt-get install vlc

Para su computador descargar la versión que corresponde a su sistema operativo: http://www.videolan.org/

Creando el Streaming

pi@raspberrypi ~ $ raspivid -o - -t 0 -n -w 600 -h 400 -fps 12 | cvlc -vvv stream:///dev/stdin --sout '#rtp{sdp=rtsp://:8554/}' :demux=h264

Para recibir el streaming, se usara VLC en Windows, al abrir VLC Archivo->"Abrir dispositivo de captura...", en la venta que nos abre, seleccionar la pestaña "Red" se ingresa la URL: rtsp://192.168.1.10:8554/ (cambiar por la ip que tenga su Raspberry Pi).



Resultado del Streaming.


El comando raspivid es el usado para capturar vídeo desde la cámara, opciones usadas:

  • "-o -" causa que la salida sea stdout
  • "-t 0" que grabe indefinidamente
  • "-n" que no muestre imagen por la conexión hdmi.
  • "-w xxx" xxx= ancho del video (64 a 1920)
  • "-h yyy" yyy= alto del video (64 a 1080)
  • "-fps nnn" nnn= Frame por segundos (2 a 90) 

Nota: La combinación de parámetros esta condicionada, video a 1080p30, 720p60 y 640x480p60/90.
Ver Opciones: Camera

Opciones usadas de VLC:

  • "-vvv" Verbose ouput (debug y otros).
  • "stream://"   Captura de vídeo.
  • "--sout "    Salida del stream.

Con esta opcion el retraso (lag) del video es mayor a 6 segundos.


Streaming con MJPG-Streamer


Instalación de MJPG-Streamer

pi@raspberrypi ~ $
pi@raspberrypi ~ $ sudo apt-get install libjpeg8-dev imagemagick libv4l-dev


pi@raspberrypi ~ $ mkdir  mjpg-streamer
pi@raspberrypi ~ $ cd mjpg-streamer
pi@raspberrypi ~/mjpg-streamer $ wget http://sourceforge.net/code-snapshots/svn/m/mj/mjpg-streamer/code/mjpg-streamer-code-182.zip

pi@raspberrypi ~/mjpg-streamer $ unzip mjpg-streamer-code-182.zip
pi@raspberrypi ~/mjpg-streamer $ cd mjpg-streamer-code-182/mjpg-streamer
pi@raspberrypi ~/mjpg-streamer/mjpg-streamer-code-182/mjpg-streamer $ sudo ln -s /usr/include/linux/videodev2.h /usr/include/linux/videodev.h
pi@raspberrypi ~/mjpg-streamer/mjpg-streamer-code-182/mjpg-streamer $ make

Uso:

Consola 2: (se abre otra consola)
pi@raspberrypi ~ $ mkdir /tmp/stream 
pi@raspberrypi ~ $ raspistill --nopreview -w 640 -h 480 -q 5 -o /tmp/stream/pic.jpg -tl 100 -t 9999999 -th 0:0:0

Consola 1: (donde se estaba trabjando)
pi@raspberrypi ~/mjpg-streamer/mjpg-streamer-code-182/mjpg-streamer $ ./mjpg_streamer -i "./input_file.so -f /tmp/stream -n pic.jpg" -o "./output_http.so -w ./www"


Abrir el Navegador con esta ruta: http://192.168.1.2:8080/  (La ip es la del Raspberry Pi).






Al lado derecho se tienen las diferentes opciones del Streaming.

Con esta opcion el retraso (lag) del video es mayor a 3 segundos.

Fuente: How to build and run MJPG-Streamer on the Raspberry Pi  y  Step 5: Get the webcam streamer for Raspberry Pi


Streaming con nc & mplayer


Instalación:

NC: NetCat es una herramienta sencilla que permite crear conexiones de red TCP/UDP, sea cliente o server para trasmitir mensajes, en la mayoria de los sistemas Linux trae este comando (hasta el momento no he visto un Linux que no lo traiga). Pero para windows el tema es otro, hay que descargarlo de una fuente fiable o descargar el fuente y compilarlo. He decido por la primera descargarlo de una fuente fiable, asi que me dirige a nmap y descargar nmap para windows, entre sus archivos tiene una version para windows de NetCat. La version usada es nmap-6.47-win32.zip, al descomprimir necesitamos solo tres archivos ncat.exe, libeay32.dll y ssleay32.dll.

mplayer: Es un reproductor multimedia libre, existe version para Windows. Se descarga de: mplayer para windows y el archivo mplayer-svn-37292-x86_64.7z 


Uso:

Primero en la consola cmd de windows no situamos donde se haya descomprimido el archivo de mplayer.
(a esta carpeta copiar los archivos de netcat).

En windows:

D:\mplayer-svn-37291-x86_64>ncat.exe -u -l 5001 | mplayer.exe -fps 60 -cache 1024 -

En el Raspberry Pi:

pi@raspberrypi ~ $ raspivid -n -t 0 -w 640 -h 480 -fps 10 -o - | nc -u 192.168.1.2 5001

La IP que se pone en el Raspberry Pi, es la IP de su computador, ya que el PC actua como server y el Rpi como server.

Al inicio tarda un poco mplayer en abrir la ventana del video, despues de abierta el straming es inmediato.






A diferencia de las otras opciones el retraso (lag) del video es menor a 300 milisegundos.


Fuente: What streaming solution for the Picam has the smallest lag?



Streaming con GSTREAMER


GStreamer: es un framework multimedia libre multiplataforma.

Instalacion:

En windows, se descarga directamente de Download GStreamer o ir directamente a windows y decargar la version que se necesita, para este caso gstreamer-1.0-x86_64-1.4.3.msi

En el Raspberry Pi,

pi@raspberrypi ~ $ sudo apt-get install gstreamer1.0

Algunos tutoriales dicen que hay que agregar un repositorio extra, en este caso no se hizo.

Uso:

En el Raspberry Pi:

pi@raspberrypi ~ $ raspivid -n -t 0 -h 720 -w 1080 -fps 25 -b 2000000 -o - | gst-launch-1.0 -v fdsrc ! h264parse !  rtph264pay config-interval=1 pt=96 ! gdppay ! tcpserversink host=192.168.0.200 port=5000

En Windows:

D:\gstreamer\1.0\x86_64\bin>gst-launch-1.0 -v tcpclientsrc host=192.168.0.200 port=5000  ! gdpdepay !  rtph264depay ! avdec_h264 ! videoconvert ! autovideosink sync=false

La ip que se ve en los comandos se cambia por la IP que tenga el Raspberry Pi.



Esta opcion como la anterior tienen un retraso (lag) del video menor de 300 milisegundos.


Fuente: Raspberry Pi camera board – Gstreamer


Artículos externos relacionados:




1 comentario: