Dynamic Packaging en Microsoft Azure Media Services

Cuando trabajamos con media es importante tener en cuenta los diferentes reproductores y plataformas con los que trabajamos. Si hablamos de Adaptative bitrate streaming, por ejemplo Silverlight y XBOX utilizan Smooth Streaming, iOS y Android requieren HLS (HTTP Live Streaming), etcétera. La forma tradicional de trabajar frente a esta situación sería creando un asset por cada una de las posibilidades:

Tradicional Encode and Package

En este post me gustaría mostrar cómo es posible utilizar Azure Media Services y Dynamic Packaging. De esta manera, todo lo que necesitaremos es crear un único asset en multi-bitrate MP4 o multi-bitrate Smooth Streaming y, dependiendo de la solicitud por parte del cliente, Media Service se encargará de enviar el video en el protocolo solicitado:

Using Dynamic Packaging

La forma de hacer uso es a través de los siguientes pasos:

On-Demand Streaming Units

Para poder trabajar con Dynamic Packaging, al menos se necesita de una unidad dedicada para el video bajo demanda:

On-Demand Streaming Units

Subir un un video a través de la plataforma

Podemos subir un video de prueba a través del portal, donde se nos permite subir hasta 200MB o bien seleccionar un video de una cuenta de Storage. La subida se realiza desde la sección CONTENT a través del botón UPLOAD del menú inferior:

Upload video

También es posible subir el contenido a través de .NET como se muestra en este post.

Codificación del video

El siguiente paso es convertir el vídeo en multi-bitrate MP4 o multi-bitrate Smooth Streaming. En este caso, he elegido Smooth Streaming, y la plataforma nos ofrece una serie de presets que nos facilitan el trabajo. En la misma sección donde tenemos el contenido, seleccionamos el video que acabamos de subir y seleccionamos la opción ENCODE del menú inferior:

Encode

Dentro del cuadro de diálogo podemos seleccionar cualquiera que empiece por H264 Smooth Streaming”

H264 Smooth Streamig

También es posible realizar esta tarea a través de .NET, como se muestra en el post Codificando assets para Microsoft Azure Media Services desde .NET.

Se generará una nueva línea dentro del apartado, pero no estará disponible hasta que el proceso de codificación haya finalizado. Para ver el estado del mismo podemos verlo en la sección JOBS:

Job

Publicación del video

El último paso con la plataforma es publicar el video que acabamos de convertir. Seleccionamos el nuevo contenido y hacemos clic en PUBLISH, en el menú inferior. Es un proceso casi inmediato, el cual nos proporcionará una URL con la siguiente estructura:

[MEDIA_ACCOUNT_NAME].origin.mediaservices.net/[locator ID]/[filename].ism/Manifest.

Dependiendo de la salida que queramos obtener, deberemos incluir el siguiente parámetro al final:

  • MPEG DASH: (format=mpd-time-csf).
  • Apple HTTP Live Streaming (HLS) V4: (format=m3u8-aapl)
  • Apple HTTP Live Streaming (HLS) V3: (format=m3u8-aapl-v3)
  • HDS (for Adobe PrimeTime/Access licensees only): (format=f4m-f4f)

Por ejemplo, para probar HLS desde Windows he utilizado 3ivx HLS Player, solicitando la opción Apple HTTP Live Streaming (HLS) V3: [MEDIA_ACCOUNT_NAME].origin.mediaservices.net/[locator ID]/[filename].ism/Manifest(format=m3u8-aapl-v3)

Otro escenario de moda puede ser MPEG DASH, que hace uso de (format=mpd-time-csf), y podemos probarlo a través de la página DASH-264 JavaScript Reference Client: [MEDIA_ACCOUNT_NAME].origin.mediaservices.net/[locator ID]/[filename].ism/Manifest(format=mpd-time-csf)

En el caso de Smooth Streaming tenemos el siguiente reproductor, que además nos da datos adicionales del video.

Lo mejor de todo es que sólo almacenamos y pagamos por los archivos en un único formato y Azure Media Services se encargará de contruir y servir la respuesta adecuada dependiendo de la petición del cliente.

Espero que sea de utilidad.

Saludos!