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:
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:
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:
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:
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:
Dentro del cuadro de diálogo podemos seleccionar cualquiera que empiece por H264 Smooth Streaming»
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:
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!