miércoles, 8 de enero de 2014

Live streaming en Ustream con Raspberry Pi + Camera board

La Raspberry Camera board es una placa adicional para Raspberry Pi, que de manera bastante sencilla nos permite agregar soporte de video a la mencionada placa. Solamente debemos conectar el nuevo dispositivo, actualizar el "firmware" de nuestro raspbian, y con eso tenemos la mayor parte del camino allanado. Pero vamos por parte.

Instalación y configuración de la camera board.

Los primeros pasos están bien descriptos en http://www.raspberrypi.org/camera, y básicamente son los siguientes:

  1. Conectar la placa con la RPi apagada, según las instrucciones del video http://www.youtube.com/watch?v=GImeVqHQzsE. Hay que prestar especial atención al sentido del cable.
  2. La cámara queda conectada de la siguiente manera:


  3. Actualizar los paquetes de Raspbian:
  4. sudo apt-get update
    sudo apt-get upgrade
  5. Ejecutar el programa de configuración de RPi:
  6. sudo raspi-config

    y seleccionar "camera" -> "enable"

    Salimos con "Finish". Reiniciamos la RPi.

Primeras pruebas con la cámara

La actualización del firmware nos provee de una serie de comandos adicionales para interactuar con la cámara. Uno de ellos es raspivid, que nos permite capturar video, mientras que raspistill nos permite capturar imágenes.

Algunos ejemplos de uso:

raspistill -o image.jpg (captura una imagen en el archivo image.jpeg)

raspivid -o video.h264 (captura un video de 5 segundos -duración por defecto- en el archivo video.h264).

raspivid nos permite enviar video a la salida por defecto (stdout), y esta funcionalidad es la que aprovecharemos para publicar el streaming.

Podrán encontrar muchos más ejemplos en la referencia mencionada antes. Entre ellos, existen algunos ejemplo sobre mecanismos de streaming utilizando netcat. En las referencias también encontrarán mecanismos para realizar streaming mediante la utilización de cvlc o ffmpeg como fuente de video, y vlc como cliente de streaming.

Utilizando Ustream como destino de nuestra transmisión

Ustream es un servicio muy utilizado para realizar transmisiones por Internet. No es el único en su tipo. Con una registración gratuita, podemos realizar nuestras primeras pruebas.

Una vez que ingresamos con nuestro usuario, podemos crear un "canal". Este canal posee algunas propiedades, entre ellas hay una que se llama "remote". Esta propiedad define el URL al que debemos apuntar con nuestra fuente de video, además de una "llave" que sirve para que nadie más usurpe nuestra transmisión.

La URL completa del destino de nuestra transmisión, está formada por ambos datos.


<url_de_tipo_rtmp>/<key>

Ejemplo:

rtmp://1.22114414.fme.ustream.tv/ustreamVideo/22114414/FKedARaaBeakurSacaADTufB5vaan7SL

Para enviar la salida del comando raspivid hacia Ustream, utilizaremos el comando avconv. La forma sería la siguiente:

raspivid -o - -w 460 -h 270 -t 9999999 |  avconv -r 10 -b 350k -i - -f flv
rtmp://1.22114414.fme.ustream.tv/ustreamVideo/22114414/FKedARaaBeakurSacaADTufB5vaan7SL

En este caso, enviamos un video de dimensiones 460x270 hacia el comando avconv. Este a su vez lo convierte en flv, y lo reenvía a Ustream.

Luego podremos acceder con un navegador a la dirección que Ustream asoció a nuestro canal:

http://www.ustream.tv/channel/nuestrocanaldeprueba

Algunas capturas de la transmisión:



Eso es todo.



Referencias:


http://www.raspberrypi.org/camera
http://www.mybigideas.co.uk/RPi/RPiCamera/
http://sonnati.wordpress.com/2011/08/30/ffmpeg-%E2%80%93-the-swiss-army-knife-of-internet-streaming-%E2%80%93-part-iv/
http://techzany.com/2013/09/live-streaming-video-using-avconv-and-a-raspberry-pi/

No hay comentarios:

Publicar un comentario