Dynamic Packaging in Microsoft Azure Media Services

When working with media is important to consider the different players and platforms that we work with. If we talk about Adaptive bitrate streaming, for example Silverlight and XBOX using Smooth Streaming, iOS and Android require HLS (HTTP Live Streaming), and so on. The traditional way of working in front of this situation would be creating an asset for each of the possibilities:

Tradicional Encode and Package

In this post I would like to show how you can use Azure Media Services and Dynamic Packaging. In this way, all you need is to create a unique asset in multi-bitrate MP4 or multi-bitrate Smooth Streaming and, depending on the request from the client, Media Service will send the video requested in the right protocol:

Using Dynamic Packaging

The way of using this is by the following steps:

On-Demand Streaming Units

In order to work with Dynamic Packaging, at least you need one dedicated unit for On-Demand streaming:

On-Demand Streaming Units

Upload a video through the platform

We can upload a test video through the portal, where we are allowed up to 200MB or select a video from a Storage account. We use the UPLOAD button on the bottom menu:

Upload video

You can also upload content via NET as shown on this post.

Encoding the video

The next step is encode the video into MP4 or multi-bitrate or multi-bitrate Smooth Streaming. In this case, I chose Smooth Streaming, and the platform offers a lot of presets for this. In the same section where we have the content, select the video you just uploaded and click on ENCODE from the menu below:


You can select any beginning with «H264 Smooth Streaming» :

H264 Smooth Streamig

You can also do this through .NET, as shown inEncoding assets in Microsoft Azure Media Services from .NET.

A new line within the section will be generated, but will not be available until the encoding process is complete. To see the status of it we can see it in the JOBS section:


Publishing the video

The last step for the platform is to publish the video. Select the new content and click on PUBLISH bottom. It is an almost immediate process, which will provide us an URL with the following structure:

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

Depending on the output we want to obtain, we include the following parameter at the end:

  • 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)

For example, to test HLS since I used 3ivx HLS Player, requesting Apple HTTP Live Streaming (HLS) V3: [MEDIA_ACCOUNT_NAME].origin.mediaservices.net/[locator ID]/[filename].ism/Manifest(format=m3u8-aapl-v3)

Another scenario can be MPEG DASH, which makes use of (format=mpd-time-csf), and we can prove it through page DASH-264 JavaScript Reference Client: [MEDIA_ACCOUNT_NAME].origin.mediaservices.net/[locator ID]/[filename].ism/Manifest(format=mpd-time-csf)

For Smooth Streaming have the following player, which also gives us additional video data.
Best of all is that we only store and paid for the files in a single format and Azure Media Services is responsible for build and serve the appropriate response depending on the request.

Hope this helps.

Happy clouding!