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

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!