WAMS VOD Butler: workflow de publicación de video en demanda

Introducción

Desde hace un tiempo muchas cargas de trabajo, de diferentes tipos, se están moviendo a la nube por diferentes motivos. Algunos buscan mejor desempeño, mejorar la disponibilidad y confiabilidad de las soluciones, disminuir costos, etcétera. Dentro de las cargas de trabajo que naturalmente están buscando moverse a la nube tenemos las soluciones de medios de comunicación.

Las necesidades de IT para las soluciones de medios podemos describirlas como:

  • Requerimientos exponenciales en recursos
  • Respuestas agiles para los proyectos de producción
  • Motivados por reducción de costos

Para estos tres pilares de necesidades de las soluciones de medios podemos encontrar respuesta en las soluciones de computación en la nube y específicamente en Azure Media Services (WAMS).

WAMS ofrece la flexibilidad, escalabilidad y confiabilidad de una plataforma de nube y el manejo de experiencia de medios de alta calidad para audiencias globales. WAMS ofrece solución para ingestión, codificación, conversión de formatos, protección del contenido y trasmisión de video en vivo o bajo demanda para múltiples plataformas y dispositivos.

En WAMS usted puede construir un workflows de inicio a fin completamente en la nube. Desde la subida hasta la distribución del contenido, para ello WAMS provee un amplio rango de componentes listos para usar, pre construidos o de terceros que se pueden combinar para satisfacer su necesidad especifica.

WAMS VOD Butler código de ejemplo

En el contexto de una solución que utilice WAMS para video en demanda (VOD) el cliente tiene que implementar el workflow de publicación utilizando por ejemplo el SDK de punto NET. Esto es una muy flexible manera de implementar un workflow ya que da la libertad a los desarrolladores de codificar de acuerdo a las necesidades específicas de cada caso. Por otra parte, existen clientes que tienen la necesidad de un flujo de publicación VOD muy simple para los que no necesariamente hace sentido desarrollar código a la medida, por ejemplo un flujo como se muestra a continuación.

a1Para este tipo de escenario fue creado el código de ejemplo/Framework llamado WAMS VOD Butler, que implementa un flujo de procesamiento directo desde un video MP4 hasta la publicación del mismo ya codificado para ser consumido por los diferentes clientes. Para iniciar el proceso se debe subir el video a un contenedor del almacenamiento de Azure y eso gatilla el inicio del trabajo. El proceso se muestra en el siguiente diagrama de secuencia

b1

Una de las características más interesantes que tiene Butler es que los formatos de video de salida son configurables, por lo cual simplemente cambiando la configuración usted puede obtener diferentes formatos de video y empaquetamiento al final del proceso.

En este artículo vamos a implementar WAMS VOD Butler y codificar un video MP4 en formato multi bit rate y lo empaquetaremos de manera dinámica para que pueda ser consumido mediante HTTP Adaptative streaming con diferentes protocolos, por ejemplo HLS para dispositivos IOS y Smooth Streaming para plataforma Windows.

Despliegue de Butler

Como primer paso debemos hacer el despliegue de los componentes de Butler en Microsoft Azure. Butler es un servicio construido íntegramente sobre los servicios de Cloud Service y Storage. El siguiente diagrama muestra los componentes de Butler.

c1

Para realizar el despliegue debemos realizar dos tareas:

  • Crear una instancia de WAMS en Azure.

Para esto se puede ver el articulo How to Create a Media Services Account en http://azure.microsoft.com/en-us/documentation/articles/media-services-create-account/

  • Crear los elementos en el servicio de Storage.

Para simplificar la creación de estos elementos y la configuración básica de Butler podemos usar el siguiente PowerShell Script

Pare ejecutarlo debemos definir los siguientes parámetros:

  1. azureSubscritionName: Nombre de la subscripción en que vamos a hacer despliegue de Bulter y dondé se encuentra Azure Media Services.
  2. wamsAcountName: Nombre de la cuenta de Azure Media Services.
  3. wamsAcountKey: Llave de la cuenta de Azure Media Services.
  4. butlerStorageAccountName: Nombre de la cuenta de almacenamiento de Media Services.
  5. butlerContainerStageName: Nombre del contenedor donde se subirán los archivos MP4 para iniciar el proceso.

El script se ejecuta como se muestra a continuación:

CreateButlerStorageElements -azureSubscritionName ‘jpgarcia69 Windows Azure MSDN – Visual Studio Ultimate’ -butlerContainerStageName ‘stage’ -wamsAcountKey ‘[your Wams Account Key]’ -wamsAcountName ‘testpoweshell’ -butlerStorageAccountName ‘testpowershellstorage’

  • Hacer el despliegue del Worker Role en el servicio Cloud Service.

Una vez que se cuenta con todas los elementos creados en el almacenamiento de Azure debemos hacer deploy del Worker Role que implementa WAMS VOD Butler.

Butler al ser un ejemplo de código abierto está publicado en GITHUB y usted puede descargarlo directamente desde https://github.com/liarjo/WAMSVODButler y abrirlo con Visual Studio para hacer deploy. Lo único que debe hacer es actualizar dos parámetros de configuración:

  1. strConnConfig
  2. Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString

En ambos parámetros usted debe colocar la cadena de conexión a la cuenta de almacenamiento de WAMS. Una vez actualizada la configuración se hace deploy. Si no conoce cómo hacer deploy con Visual Studio puede ver el articulo Developing and Deploying Microsoft Azure Cloud Services Using Visual Studio en la liga http://msdn.microsoft.com/en-us/magazine/jj618299.aspx

Pruebas de funcionamiento VOD

Una vez terminado el despliegue y configuración de WAMS VOD Butler podemos probar su funcionamiento. Primero debemos subir un video MP4 al contenedor de Staging en la cuenta de almacenamiento. La imagen muestra el video en el contenedor.

d1

Una vez que el video está en el contendor, debemos espera a que Butler detecte el nuevo archivo. Cuando lo hace, crea un Asset con el video original, el que está marcado con rojo, y otro que es el video codificado. En este caso en multiBitrate.

e1

Luego nos movemos a ver la lista de JOBS de WAMS y podemos ver que el trabajo de codificación va avanzando.

f1

Una vez que la codificación termina, podemos volver al contenido y ver que ahora solo tenemos un Asset. La razón de esto es que después de codificar el video original ya no se utiliza y por eso por eso Butler lo borró. Por otra parte podemos ver que el nuevo Asset está ya publicado, lo que significa que está listo para ser consumido.

g1

Para probar el video podemos hacer click en el botón Play de Media Services y vemos con el player por defecto el video codificado, como se muestra en la siguiente imagen.

h1

Prueba de Adaptative Streaming

Ahora vamos a probar la característica de WAMS llamada Dynamic Package, como se muestra en el siguiente diagrama. Más información en http://msdn.microsoft.com/en-us/library/jj889436.aspx

i1

 

Para probar Dynamic Package necesitamos configurar a lo menos una instancia reservada en el servidor de origen de Media Services. Para nuestro ejemplo necesita solo una instancia reservada, cómo hacerlo puede verse en el artículo How to Scale a Media Service en http://azure.microsoft.com/en-us/documentation/articles/media-services-how-to-scale/

Una vez que tenemos al menos una instancia reservada del servidor de origen tenemos que leer desde la cola de notificaciones de Butler. Está cola se llama wamsbutlerallencodefinish y está en la cuenta de almacenamiento de WAMS. Utilizando alguna de las herramientas para el servicio de almacenamiento de Azure podemos ver el contenido del mensaje de notificación y copiar la URL que contiene el manifiesto, como muestra la siguiente imagen.

En este caso de ejemplo la URL es http://testpoweshell.origin.mediaservices.windows.net/f2def825-e100-4490-81d3-3904c065d8bc/BigBuckBunny_400.ism/manifest

Con esta URL podemos usar un player que soporte Smooth Streaming para ver nuestro video usando adaptative streming. Existen multiples opciones para esto, se puede usar para probar el Player llamado vértigo que se encuentra en la liga http://player.smooth.vertigo.com/.

Copiamos en el cuadro de texto llamado Manifest URL la url de nuestro manifiesto y apretamos el botón Set Source and Play y ya podemos ver nuestro video con este modelo de entrega adaptativo como se muestra en la siguiente imagen.

j1

Próximos pasos

Los próximos pasos con WAMS VOD Butler son comenzar a manejar la configuración para poder obtener formatos de videos que calcen con las necesidades específicas de su sistema.

Links relacionados

  1. Windows Azure Tech Series: Media Services 
  2. Windows Azure Media Services: Publicar videos para IOS y Windows Phone #azure

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s