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

Deja un comentario