Pages

martes, 28 de enero de 2014

Raspberry Pi transmitiendo en Ustream (solo video)

El proyecto que estoy pensando es mas o menos como se muestra en el siguiente diagrama:



Este post es para mostrar como realizar una transmisión usando la Raspberry Pi y una camara USB (EuroCase) conectada usando el servicio de Ustream.
Lo necesario:
  • Raspberry Pi con Debian o Raspbian
  • Alimentación por USB
  • Camara USB que sea soportada por Debian - yo usé la SN9c201
Recomendaciones:

Es bueno usar solo la linea de comandos en la raspberry Pi para este tipo de funciones ya que el entorno gráfico consume bastante recursos.
Tambien se recomienda colocar una IP estática en tu raspberry Pi , esto es útil especialemente cuando accedemos remotamente a la misma. Para esto se debe editar el archivo en: /etc/network/interfaces

Preparando nuestra Raspberry Pi

Lo primero (luego de tener el S.O. instalado en nuestra placa) es actualizar nuestro repositorio a la última version. Hacemos esto con los siguientes comandos:

   sudo apt-get update
   sudo apt-get upgrade

Luego de esto, conectamos nuestra camara USB (podemos hacerlo directamente al puerto USB de la Raspberry o a un Hub USB que tengamos conectado).

El siguiente paso es opcional y es para instalar el paquete "screen" que nos permite mantener nuestros procesos corriendo aunque la conexión de la consola se pierda.

   sudo apt-get install screen
   reboot

Instalación de lo necesario

Lo necesario para realizar la transcodificación y la emisión del video es, basicamente, una aplicacion de Linux llamada AVConv (es similar a FFmpeg). Esta no es mas que un programa en linea de comandos para transcodificar usando la Libav Multimedia Framework

Lo instalamos con el siguiente codigo:

   sudo apt-get install avconv

Si ocurre algún problema y no encuentra el paquete, correr el siguiente código:

  sudo apt-get install libav-tools

Encontrar plataforma de Broadcast

En nuestro caso emitiremos a Ustream, aunque existen otras opciones como Justin.tv, entre otros.

Para realizar la transmision necesitaremos cierta informacion que el sitio de Ustream nos proveerá. Primero debemos crear una cuenta (si es que no la tenemos ya) y asi podremos buscar nuestra "Stream Key" o "Stream URL".

Buscamos esto último así:
  1. Logearse en Ustream
  2. Abrir el "DashBoard"
  3. Clic en "Remote" (está abajo, al final)
  4. Copiar la "RTMP URL" (vamos a necesitar esto una vez listo para transmitir)
Un ejemplo de la URL final sería:

rtmp://2.773.fme.ustream.tv /ustreamVi deo/77775432

Guardamos estas URLs en un archivo para usarlas a continuación.

Configuración del Broadcast

Una vez todo lo anterior listo nos vamos a la linea de comandos de nuestra Raspberry Pi (yo estoy conectado desde una Pc con Windows 7 usando Putty) para arrancar con la parte más divertida!

Solamente necesitamos dos comandos y está nuestra transmision lista.

Primero abrimos una nueva sesión de screen:

   screen

Ahora ingresamos el comando AVConv con los parámetros básicos que veremos a continuación.

Comando Básico

Ingresamos esto en la linea de comandos y listo...ya estamos transmitiendo!

   avconv -f video4linux2 -s 320x240 -r 10 -b 350k -i /dev/video0 -f flv rtmp://1.5717947.fme.ustream.tv/ustreamVideo/5777957/Poner_aca_tu_Key

En este ejemplo tenemos que:
  • -s Define la resolución que usaremos para transmitir
  • -r  Define el máximo de Frame-rate
  • -b Define el máximo de Bitrate (k = Kbps)
  • -i  Define el camino a tu WebCam, en general es en /dev/video0
  • -f  Define el tipo de stream que realizamos y hacia donde. En este caso es FLV Transcodifn hacia Ustream (via RTMP)
  • No olvidar de reemplazar con nuestras URL y la Key en ese código.
Recordemos que estamos dentro de una sesion de screen lo que nos permite terminar nuestra conexion con Putty y el AVConv seguirá corriendo.
Al reconectarnos podemos hacer 
   
   screen -ls                      lo que nos mostrará las sesiones de screen que esten corriendo

y luego me conecto a una así:
   
   screen -r 2739.pts-0.raspberrypi

Para salir escribimos simplemente exit.

Lo que nos falta es poder visualizar lo que estamos emitiendo...esto lo hacemos con un navegador a la dirección que Ustream asoció a nuestro canal:

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

No hay comentarios:

Publicar un comentario