Archivo por meses: diciembre 2015

Azure Media Services Live Streaming using FFMPEG

Introducci贸n

Azure Media Services tiene la capacidad de hacer live streaming como se explica en este link. En este post vamos a utilizar FFmpeg para capturar, codificar e inyectar una se帽al RTMP en un Channel de Media Services.

Configuraci贸n paso a paso

  1. Crear un ChannelLo primero que se debe hacer para configurar un escenario de Live streaming es crear un canal en Media Services. Para ello en el portal de Azure, en la cuenta de Media Services se selecciona la secci贸n de Channels y ah铆 Add new channel.

    1

    Como parte del proceso de creaci贸n debemos dar un nombre, descripci贸n y tipo de codificaci贸n al canal. En nuestro caso, no usaremos codificaci贸n en Azure ya que FFmpeg la realizar谩 localmente por lo que seleccionamos Encodig Type none.

    2

    El siguiente paso nos pregunta qu茅 tipo de protocolo utilizaremos para la ingesti贸n de la se帽al. Usaremos RTMP, el m谩s popular.

    3

    Por 煤ltimo, vamos a configurar restricciones de acceso al canal. En nuestro caso como es una demo no aplicaremos restricciones pero en un ambiente productivo se debe proteger el canal para que no se pueda enviar se帽al desde cualquier origen.

    4

  2. Configurar FFmpegUna vez terminado la creaci贸n del canal y est谩 en estado Ready ya podemos configurar FFmpeg.

    Lo primero en conocer la URL de ingesti贸n, la cual podemos leerlas desde el portal.

    5

    Para ejecutar FFmpeg utilizaremos el script livebrodcast.bat , que se describe a continuaci贸n

    set ffmpeg=.\ffmpeg-20150109-git-d1c6b7b-win64-static\bin\ffmpeg

    set videoDevice=Integrated Camera

    set audioDevice=Microphone (Realtek High Definition Audio)

    set ingestURL=rtmp://demoffmpeg-mediabutlerdev.channel.mediaservices.windows.net:1935/live/1c11bbadd489450bb03655cb50390b39

    set streamName=mystream1

    %ffmpeg% -v verbose -rtbufsize 2100M -f dshow -i video=禄%videoDevice%禄:audio=禄%audioDevice%禄 -strict -2 -c:a aac -b:a 128k -ar 44100 -r 30 -g 60 -keyint_min 60 -b:v 400000 -c:v libx264 -preset medium -bufsize 400k -maxrate 400k -pix_fmt yuv420p -f flv %ingestURL%/%streamName%

    En este script se debe especificar el dispositivo de video y audio a utilizar en la captura as铆 como la URL de ingesti贸n.

  3. Ejecutar FFmpeg commandUna vez actualizado el archivo livebrodcast.bat con nuestra informaci贸n podemos ejecutarlo.

    7

    Al ejecutarlo veremos una salida por pantalla como la siguiente, donde vemos las estad铆sticas de la trasmisi贸n en la 煤ltima l铆nea por ejemplo fps 43.

    8

  4. Ver el video en PreviewUna vez que ya comenzamos a alimentar el canal de Media Services y este ya ha acumulado un buffer podemos ver la se帽al de Preview o control en el mismo portal como se muestra en la siguiente captura de pantalla.

    9

    Para revisar el retardo de la se帽al, se puede utilizar un reloj y ver la diferencia de tiempo entre el reloj y la se帽al online.

    10

    Este retardo es el tiempo total que acumula la captura de la se帽al, la codificaci贸n, la ingesti贸n en el canal, el procesamiento del canal y DVR, m谩s la latencia para consumir la se帽al desde la nube nuevamente.

Conclusiones

Azure Media Services ha simplificado los requerimientos de un escenario para realizar Live Streaming al punto que con un device que envi茅 RTMP ya puedes hacer trasmitir utilizando esta soluci贸n de nube.

Es muy sencillo utilizar un software en el punto de captura y completar la cadena para hacer trasmisiones en vivo.

Links relacionados

  1. Automation of premium encoding in Azure Media Services with Media Butler
  2. Enterprise Video: Local cache para Azure Media Services
  3. Windows Azure Media Services: Publicar videos para IOS y Windows Phone #azure