Crear canal para live streaming desde Azure Media Services SDK para .NET

Esta entrada también está disponible en: Inglés

En el post de ayer estuve hablando sobre la nueva preview para Live Streaming en Azure Media Services. Como pudimos ver es bastante sencillo crear canales desde el portal, pero hay ocasiones donde necesitamos que este proceso sea automático y parametrizable a través de nuestro código. En el siguiente ejemplo se muestra cómo crear un canal utilizando Azure Media Services SDK para .NET:

using Microsoft.WindowsAzure.MediaServices.Client;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;

namespace LiveStreaming
{
    class Program
    {
        static void Main(string[] args)
        {
            //0. Constants
            const string AccountName = "[YOUR_ACCOUNT_NAME]";
            const string AccountKey = "[YOUR_ACCOUNT_KEY]";

            //1. Install Nuget packages
            //1.1 Nuget: Install-Package windowsazure.mediaservices

            //2. Get AMS context
            var context = new CloudMediaContext(AccountName, AccountKey);

            //3. Create a channel
            //3.1 Create Channel Input
            var input = new ChannelInput
            {
                StreamingProtocol = StreamingProtocol.RTMP,
                AccessControl = new ChannelAccessControl
                {
                    IPAllowList = new List<IPRange>
                    {
                        new IPRange{
                            Name="MyInput",
                            Address=IPAddress.Parse("0.0.0.0"),
                            SubnetPrefixLength = 0
                        }
                    }
                }
            };

            //3.2 Create Channel Preview
            var preview = new ChannelPreview
            {
                AccessControl = new ChannelAccessControl
                {
                    IPAllowList = new List<IPRange>()
                    {
                        new IPRange{
                            Name= "MyPreview",
                            Address = IPAddress.Parse("0.0.0.0"),
                            SubnetPrefixLength = 0
                        }
                    }
                }
            };

            //3.3 Create Channel Output
            var output = new ChannelOutput { Hls = new ChannelOutputHls { FragmentsPerSegment = 1 } };

            var channel = context.Channels.Create(new ChannelCreationOptions
            {
                Name = "Channel-Returngis-1",
                Input = input,
                Preview = preview,
                Output = output

            });

            channel.Start();

            var previewEndpoint = channel.Preview.Endpoints.FirstOrDefault().Url.ToString();
            var ingestEndpoint = channel.Input.Endpoints.FirstOrDefault().Url.ToString();

            Console.WriteLine("The channel {0} is {1}", channel.Name, channel.State);
            Console.WriteLine("Ingest endpoint: {0}",ingestEndpoint);
            Console.WriteLine("Preview endpoint: {0}",previewEndpoint);

            Console.ReadLine();

        }
    }
}
  1. Se necesitan las credenciales de la cuenta de Azure Media Services.
  2. Instalamos el paquete windowsazure.mediaservices vía Nuget
  3. Recuperamos el contexto de la cuenta.
  4. Para generar el canal necesitamos:
    1. Crear el endpoint de ingesta a través de ChannelInput, donde le indicamos el protocolo a utilizar y el rango de IPs desde el cual se puede realizar la ingesta. Si utilizamos 0.0.0.0 estamos dando acceso público al mismo.
    2. Endpoint para acceder a la preview del canal, donde sólo añadimos el rango de IPs permitidos.
    3. Por último, es neceario crear la salida a través de ChannelOutput.
  5. Una vez que tenemos el endpoint de ingesta y de preview podemos crear el canal a través de context.Channels.Create e iniciarlo a través del método Start(). Cuando el proceso finaliza podemos recuperar las URLs de ingesta y preview para comenzar a probar el nuevo canal.

Happy live streaming!

4 Comments

  1. Galder Febrero 23, 2015 at 10:43 am

    Buenos dias
    Estoy empezando a utiulizar Azure Media Services y he utilizado el codigo de esta pagina para crear un canal, pero veo que tarda mas de 2 minutos en crear y arrancar un canal. Hay alguna forma de reducir ese tiempo?No puedo hacer que mis usuarios esperen 2 minutos antes de poder emitir un video en strarming…

    Un saludo,
    Galder.

    Reply
    1. Gisela Febrero 23, 2015 at 7:59 pm

      Hola Galder,

      Cuando se trabaja con eventos Live, el flujo de trabajo normal es:

      1. Se crea un canal.
      2. Se realizan pruebas en ese canal utilizando la URL de Preview (se comprueba que la ingesta desde el encoder es la correcta, se verifican que las calidades estén OK, etcétera).
      3. Se habilita la URL pública para que los usuarios comiencen a visualizar el contenido del evento (Se obtiene en tan sólo unos segundos).

      Normalmente, cuando se trabaja con eventos en directo se crean los canales con antelación para realizar las pruebas oportunas. Sabiendo que el tiempo de espera son aproximadamente 2 ó 3 minutos para su creación e inicio, si seguimos este tipo de flujo, o simplemente creamos el canal con antelación, evitamos que los usuarios tengan que esperar a este proceso.

      ¡Saludos!

      Reply

Deja tu comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.