MPEG DASH preview from Windows Azure Media Services

By John Deutscher
Principal Program Manager Lead
Windows Azure Media Services

With our most recent service updates from our origin server team, we have enabled a new feature in the server called “Dynamic Packaging” that allows you to encode to a single set of standard ISO MP4 files and then dynamically request multiple protocols by simply changing the URL that you use on your content.

Nick Drouin, Program Manager for Dynamic Packaging on the WAMS team, provides a great overview of this feature on his blog here.

This week we introduced a new “preview” feature of Dynamic Packaging to enable support for MPEG-DASH live profile streaming.

For those of you that are not familiar with MPEG DASH, I will give some quick background.  DASH is a universal delivery format that provides end users with the best possible video experience by dynamically adapting to changing network conditions.  It is technically similar to protocols like Smooth and Apple HLS in the sense that it provides a manifest definition for the description of multiple bitrates of video and audio available to a client player application. It is then up to the client player to make decisions at run-time about various factors such as network bandwidth, CPU utilization, screen dimensions, etc… to adjust the streaming experience for each viewer.

The big differentiator with DASH is that it is an international standard that is now controlled by a standards body – the Motion Picture Experts Group (MPEG) – instead of being controlled by Microsoft (Smooth Streaming) or Apple (HLS). Several companies participated in the creation and standardization efforts around MPEG DASH, including Microsoft, Apple, Netflix, Qualcomm, Ericsson, Samsung, and many more.

One of our team’s long term partners in Italy is Rainet. They have been early adopters of many of our technologies back to IIS Media Services 2.0. They are also an early adopter of MPEG-DASH with WAMS Dynamic Packaging . Rainet has started to test and adopt this feature during the development in their Windows 8 Apps for Rai.TV.  The new Rai.TV application offers catch-up TV services for their viewers in Italy (Rai Replay) and soon they will be adding support in their web site for DASH with the Dash.js open source player library.

For a deeper background on MPEG DASH, I recommend you read the overview from the DASH Industry Forum here.

For Media Services, the plan and roadmap has always been to embrace the industry standards as the evolve and make it simple for customers to get any format to any device.  We see MPEG-DASH as the eventual replacement for all of the features that we have introduced and implemented in the past years with Smooth Streaming.  Over time we will get out DASH support to have feature parity with Smooth, and introduce some even cooler features that are only available to us in an industry standard like DASH .

The implementation of MPEG DASH in Media Services is first coming to the Origin Streaming service through the Dynamic Packaging feature.  This is available now for you to take for a test drive.  While the DASH feature is technically only at “preview” quality, you can access it from your on-demand streaming Origin server in Media Services.

To get started with testing out DASH, follow these simple steps.

  1. The first thing you need is a Windows Azure account.  You can get a free 90 day trial account here, or if you are an MSDN subscriber you already have benefits that allow you to use Azure and Media Services. Check out Scott’s blog that describes the new monthly monetary credits available here. You can get up to $150 per month in credits that can be used for Media Services.
  2. Next, get a Media Services account. Read through the How to Create a Media Services Account article on Windows Azure to get started.
  3. Go to the Azure Management portal by logging into http://manage.windowsazure.com
    image
  4. Navigate to your Media Services account in the left hand navigation menu and select your account in the main window.
    image
  5. Click on the ORIGINS tab at the top of the screen and then click into the Default Origin in your account. Click on the SCALE tab at the top of the screen.  In order to test the DASH streaming feature, you will need at least 1 On-Demand Streaming reserved unit (RU).  Drag the slider up to 1 to add to your account.  Note that there is a price associated with this.  Each RU is $199 a month (check current pricing here).  The price is prorated throughout the month, so dialing this up to 1 for a day would be around $7 for the day.  If you have MSDN monthly credits you can apply them to this feature as well.
    image
  6. It takes about 10 minutes for the Reserved Origin unit to be spun up and deployed. Monitor the portal dashboard tray for status notifications.
  7. To test out DASH streaming, you need to have one of the following:  An existing Smooth Streaming Asset, or an existing set of multiple bitrate MP4 files in an Asset that you already encoded.  Alternatively you can upload and encode a full set of MP4 files using the portal as well.   For now, I will assume you have nothing, and walk through the basics.
  8. Select the Content tab at the top of the Portal page.
    image
  9. Click on the Upload button in the command bar.
    image
  10. Upload a video file in one of the formats that is supported.  Don’t forget to provide a name for the file.
    NOTE: The upload control in the portal uses your web browser and has a limitation of 200 MB.  If you want to import something >200MB, you can use one of the Azure Storage client tools like CloudBerry or others that supports ingesting large files into Azure.  From there, use the option in the Upload dialog box to import the Asset from Storage.
    image
  11. Once your file is uploaded, kick off an encode in WAMS by pressing the Encode button.  In the Encoder dialog, you can select from one of the pre-defined presets. At this step, you MUST use one of the presets that begins with “H264 Smooth Streaming”.   This will generate multiple bitrate Smooth Streaming files that are GOP aligned and encoded with H264 video and AAC audio.

    NOTE:
    If you are writing code to do this, I encourage you to instead use the “H264 Adaptive Bitrate MP4 Set” presets, as this will generate standard MP4 files instead of Smooth. Currently through the portal you have to use Smooth due to lack of portal support for getting the correct dynamic URL from MP4 file sets. We are working on making that easier soon!
    image
  12. Depending on the size of your file and duration, it may take awhile for it to encode. Take a break here and go get a nice beverage.
  13. After the encode completes, you should refresh the CONTENT page in the portal and see your finished Asset.  From here you can “PUBLISH” the Asset so that it is publicly available on your Origin Streaming server.
    To do this, click the PUBLISH button in the command bar.
    image
  14. Once your asset is Published, you will now see a URL in the portal under the Publish URL column for your asset.
  15. The Published URL you are given back will be for the Smooth Streaming manifest. It will be in the following URL format:{media services account name}.origin.mediaservices.net/{locator ID}/{filename}.ism/Manifest
  16. To get back MPEG DASH from the dynamic packaging feature at this step, you just need to change the format of the Manifest being returned.Just add (format=mpd-time-csf) after Manifest and you will get a dynamically generated MPEG-DASH live profile MPD file.So the full URL will look like this:
    {media services account name}.origin.mediaservices.net/{locator ID}/{filename}.ism/Manifest(format=mpd-time-csf)
  17. If you get an error at this point (404, etc), double check that you actually have an On-Demand Origin reserved unit set up.  Make sure that your URL has “origin.mediaservices.net” in the domain name as well.
  18. Just so you are aware, here is a quick table of the other supported format URL strings that you can use with Dynamic Packaging:
    Smooth Streaming /Manifest
    Apple HLS v4 /Manifest(format=m3u8-aapl)
    MPEG DASH (live profile) /Manifest(format=mpd-time-csf)

     

  19. Now you can test your stream in any compliant MPEG-DASH player.  There are a few available out there, with my current favorite being the DASH-IF reference client called DASH.js that is available on GitHub.Microsoft Open Tech recently announced that they are actively contributing to the DASH.js player framework.It currently only works in specific browsers that support the HTML5 Media Source Extensions (MSE).More clients will be available over time this year.  Check out the software section of dashif.org for more details – http://dashif.org/software/

    We also provide basic DASH playback support in Flash through our OSMF player framework plugin. To get started with that player:

    1. Browse Strobe Media Playback and SS Plugin setup page.
    2. Set the src to the URL you got in step 16 for your DASH file.
      image
    3. From plugins section select “Microsoft Adaptive Streaming Plugin” from the drop down menu.This will show the dynamic plugin URL.
      image
    4. Click “Preview and Update” . This will bring preview player and start playback.

Please take our DASH preview streaming out for a test drive and provide us as much feedback as you can via our MSDN forum web site.

If you don’t currently have a Media Services account, or don’t have the time to walk through my steps above (totally understand), we have also hosted some DASH test streams that are coming from one of our test Origin servers in Azure and are being cached through our friends at Akamai (big thanks to Will Law for setting this up for the benefit of DASH).

First some warnings and credits.  The following test streams are being made available as a best effort by our team and they may not always be available or may change at any point. If they stop working for you on this page – sorry, I can’t guarantee the uptime.  If you need something more stable – follow the steps above in your own account.

These streams are using content that is Creative Commons Attribution 3.0 licensed by The Blender.org. (CC) Blender Foundation | mango.blender.org

MPEG DASH TEST Streams (cached via Akamai)

Clear content:

Sintel:

http://wams.edgesuite.net/media/SintelTrailer_MP4_from_WAME/sintel_trailer-1080p.ism/manifest(format=mpd-time-csf)

http://wams.edgesuite.net/media/SintelTrailer_Smooth_from_WAME/sintel_trailer-1080p.ism/manifest(format=mpd-time-csf)

http://wams.edgesuite.net/media/SintelTrailer_Smooth_from_WAME_720p_Main_Profile/sintel_trailer-720p.ism/manifest(format=mpd-time-csf)

Elephants Dream:

http://wams.edgesuite.net/media/MPTExpressionData01/ElephantsDream_1080p24_IYUV_2ch.ism/manifest(format=mpd-time-csf)

Big Buck Bunny:

http://wams.edgesuite.net/media/MPTExpressionData02/BigBuckBunny_1080p24_IYUV_2ch.ism/manifest(format=mpd-time-csf)

Tears of Steel:

http://wams.edgesuite.net/media/Tears_of_Steel_Smooth_1080p/tears_of_steel_1080p.ism/Manifest(format=mpd-time-csf)

 

DASH/CSF+ Common Encryption (CENC) protected content
NOTE: PlayReady license header – only works on devices that support PlayReady decryption of DASH – i.e. TVs, SetTops, future browsers with EME support, etc…
720p, Baseline Profile:

http://wams.edgesuite.net/media/SintelTrailer_Smooth_from_WAME_720p_Main_Profile_CENC/CENC/sintel_trailer-720p.ism/manifest(format=mpd-time-csf)

http://wams.edgesuite.net/media/SintelTrailer_Smooth_from_WAME_720p_Main_Profile_CENC/NoSubSampleAdjustment/sintel_trailer-720p.ism/manifest(format=mpd-time-csf)

http://wams.edgesuite.net/media/SintelTrailer_Smooth_from_WAME_720p_Main_Profile_CENC/NoSubSampleAdjustmentNoSenc/sintel_trailer-720p.ism/manifest(format=mpd-time-csf)

1080p, High Profile:

http://wams.edgesuite.net/media/SintelTrailer_Smooth_from_WAME_CENC/CENC/sintel_trailer-1080p.ism/manifest(format=mpd-time-csf)

http://wams.edgesuite.net/media/SintelTrailer_Smooth_from_WAME_CENC/NoSubSampleAdjustment/sintel_trailer-1080p.ism/manifest(format=mpd-time-csf)

http://wams.edgesuite.net/media/SintelTrailer_Smooth_from_WAME_CENC/NoSubSampleAdjustmentNoSenc/sintel_trailer-1080p.ism/manifest(format=mpd-time-csf)

15 comments

  1. Thanks for the article, it’s great to hear about MPEG DASH support in WMAS! And what about Live Smooth Streaming webcasts – we did it with Expression Encoder Pro, is it possible now to have /Manifest(format=mpd-time-csf) from live stream?

    1. Thanks Eugene,
      We are working on a public preview of live streaming for Media Services. Once the public preview is out we will be supporting HLS, Smooth and DASH protocols.
      Stay tuned!

  2. Thank you for great article. I would like to ask you, when is MPEG-DASH support going to be part of IIS Media Services to run it on-premise? Will it be possible to reuse existing Smooth Streaming H.264 streams? What is current state of support in web browsers? Thank you

    1. @David -no plans to announce around on-premises support. This feature is currently being developed primarily for Azure. You can reuse any existing Smooth Streaming (H264/AAC) asset as well. Just upload the Smooth asset into your Media Services account. Make sure to set the .ism file to IsPrimary in the SDK when uploading. There is an example in the Getting Started source code.
      Once it is in an asset, follow the same steps above at step #13, or use the API to get a locator and adjust the URL as needed for DASH.

      We can dynamically package from Smooth Streaming (H264) or standard ISO MP4 files (GOP aligned) to DASH live profile in preview.

  3. Thanks for the detail article! I’d like to ask you about ‘Dynamic packaging’. You mentioned, ‘Dynamic packaging allows it to encode to a single set of standard ISO MP4 files and then dynamically request multiple protocols by simply changing the URL that you use on your content.

    But as I know, HLS uses TS contents, so I think it’s not possible to use a format of mp4, does it?

    Then, does Dynamic packaging include the step to change the format from mp4 into TS?
    Or, is there any way to use mp4 assets in case of HLS?

    I’m waiting for your answer :)

    1. Yes, we can dynamically transmux from standard MP4 into MPEG 2 transport stream container. Its fairly simple process to re-container the elementary streams.

    2. Thanks for the answer! And I have a further question on that. Does it transmux from mp4 into mpeg -2 TS at runtime or make them in advance, before we get streaming services?

  4. Hi John,

    I use Elemental Encoder and would like to upload already encoded multi-bitrate MPEG DASH ISO files or GOP aligned MP4 files to Azure Media Services instead of using the presets of the Azure Expression encoder and paying for encode compute cycles. All videos are 60 minutes or longer. How would this work? I would also like to test MPEG DASH live streaming with Azure Media Services and Elemental Live Encoder. Can I get into the preview program?

    1. Phil, We don’t support uploading MPEG DASH files to our service at this time. You can encode GOP aligned multi bitrate ISO MP4 files to our service and stream them out. You will have to do some testing on your own though – as I can’t guarantee completely that the alignment from Elemental and the box structure in their MP4 files will work for certain with our Dynamic Packaging feature on the Origin servers. We don’t test every encoder on the market – and limit testing to our own and our partners. You can try it out and report back here. Remember to use at least 1 origin streaming reserved unit to test out the Dash dynamic packaging features.

      For Live, it is currently in Limited Preview – They will be opening that up further in the coming months. Live preview does not have DASH live released yet. That should be coming soon though.

    2. Thanks John. Are there any examples on how to upload the encoded ISO MP4 files? The examples I found only show how to upload mezzanine files and how to encode them in Azure.
      Does “coming months” mean another year? Live streaming support was announced over a year ago. :-)

  5. Thx John, We tested this and it works great, we even used it with our PlayReady DRM.
    Anyone else who wishes to test with PlayReady DRM can get a free test account from us.

    THX
    DE

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s