You are currently browsing the category archive for the ‘Media Services’ category.
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.
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.
- 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.
- Next, get a Media Services account. Read through the How to Create a Media Services Account article on Windows Azure to get started.
- Go to the Azure Management portal by logging into http://manage.windowsazure.com
- Navigate to your Media Services account in the left hand navigation menu and select your account in the main window.
- 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.
- It takes about 10 minutes for the Reserved Origin unit to be spun up and deployed. Monitor the portal dashboard tray for status notifications.
- 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.
- Select the Content tab at the top of the Portal page.
- Click on the Upload button in the command bar.
- 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.
- 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!
- 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.
- 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.
- Once your asset is Published, you will now see a URL in the portal under the Publish URL column for your asset.
- 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
- 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) - 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.
- 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)
- 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. 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:
- Browse Strobe Media Playback and SS Plugin setup page.
- Set the src to the URL you got in step 16 for your DASH file.
- From plugins section select “Microsoft Adaptive Streaming Plugin” from the drop down menu.This will show the dynamic plugin URL.
- 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:
Elephants Dream:
Big Buck Bunny:
Tears of Steel:
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:
1080p, High Profile:
This morning the Windows Azure Media Services SDK finished deploying the source code for our .NET SDK out onto GitHub.
This is a huge milestone for our team, as we have been working hard towards providing an open source version of our .NET SDK on GitHub for some time now. This is fantastic for our end customers now, since it gives you deeper insight into the SDK and how it works and allows you to fork the SDK directly and make modifications (some of you move faster that us!)
Key changes to this release of the SDK are outlined on this blog post from Mingfei Yan
http://mingfeiy.com/announcing-windows-azure-media-services-net-sdk-open-source-on-github/
Key features include:
- Storage 2.0 client SDK support – this has been a major pain point for multiple customers.
- Notifications API support – I will try to blog more on this feature, but essentially it provides you notifications on encoding job progress through an Azure Queue in your account.
This is the last version that we will support Storage client SDK 1.7, so please plan to migrate to Storage client 2.0.
We will also be updating the NuGet “official” release in the next week with a build from this same release on GitHub.
Going forward we will develop directly in GitHub first and release to NuGet at the end of each sprint.
We are looking forward to your contributions on this Github project.
Mingfei Yan (@mingfeiy) is the lead PM for the .NET SDK, and George Trifonov (@GeorgeTrifonov) is the lead developer for this project and they will be monitoring feedback and commits.
For more information on developing for Media Services, please check out our developer page.
Thanks,
John Deutscher
Twitter – @johndeu
I’ve been very busy traveling to the International Broadcaster’s Convention (IBC) in Amsterdam and delivering two fantastic Microsoft Media Platform Summits in both Amsterdam and Prague. Now that I’m back in the office again, it’s time to get back to updating folks on what is new and upcoming in Windows Azure Media Services this Fall and into next year.
We have been in Preview release for about 4 months now across 6 data centers and things are going amazingly well. Lots of great feedback and interest from around the globe. As we approach our first official general availability release later this Fall, we will be updating the Services SDK for .NET and our MSDN documentation with new sample code and scenarios.
Nick Drouin, one of the Program Managers on the Windows Azure Media Services, has just started up a new blog (http://blog-ndrouin.azurewebsites.net/) to post sample code and how-to articles around using various features of Media Services. Some of you may know Nick already from his work on IIS Transform Manager. This year he is responsible for many of our cool new features in Media Services such as Dynamic Remux – the ability to encode and store only a single set of standard MP4 multi-bitrate files and allow Media Services to dynamically serve out either Smooth Streaming or Apple HLS to client players. This feature will reduce your storage costs and simplify multi-screen and multi-format delivery. We will expand this feature to include MPEG-DASH support, as well as dynamic encryption for DRM in the future.
Check out the first set of articles that Nick has published on getting started with Media Services. He also is working on a post on how to use the Aspera On-Demand for Windows Azure that is now in beta on the Azure Marketplace.
Another feature that is coming soon is a set of updates to our Azure Portal experience to add even more support for Media Services directly in the Azure Portal. Keep an eye out for that later in the Fall.
As always, if you have any questions, please jump over to the Azure Forum for Media Services and post. I’m spending a lot more time over there answering questions lately. And if I miss a question due to my busy schedule, there are lots of knowledgeable folks on the team willing to help as well!
|
In this episode, Alex Zambelli — Senior Technical Evangelist — and Samuel Ng — Senior Development Lead — discuss Windows Azure Media Services. Alex and Sam go into detail about the features and services that are coming very soon in the Preview release of Windows Azure Media Services.
http://channel9.msdn.com/Shows/Cloud+Cover/Episode-81-Windows-Azure-Media-Services

I am excited to finally be able to discuss what I have been working on this past year and explain why I have been so quiet on my blog for the most part. I haven’t been able to discuss my project publicly for a long time outside of NDA conversations with partners and customers so this post is going to be a lot of fun for me.
About a year ago at NAB 2011, we began to discuss with customers and partners the idea of a set of platform level services in the cloud to enable the easy, flexible, and highly scalable delivery of media. The set of services that we envisioned would enable customers big and small to move their media production and streaming delivery workflows easily and securely from on-premises to a public cloud infrastructure.
To that end, our team began to focus on the architecture and design of a Platform as a Service (PaaS) offering on Windows Azure that would take the best components of the Microsoft Media Platform, including IIS Media Services, Expression Encoder, PlayReady, IIS Transform Manager, Audience Insight, Rough Cut Editor, our player and client frameworks for PC, Mac, Windows Phone, iOS, and Xbox, and combine them into a set of easy to use services sitting behind a RESTful API.
Last week at the National Association of Broadcaster’s convention, we finally announced Windows Azure Media Services. This new collection of services coming soon to Windows Azure simplifies the creation, management, and delivery of media to almost any device including Microsoft Xbox, Windows Phone handsets and Windows PCs, as well as non-Microsoft platforms such as smart TVs, set-top boxes, MacOS, iOS, and Android. Content providers and media partners can take advantage of the cost benefits and cloud capacity found with Windows Azure, and provide customers massive amounts of digital media in the variety of formats they require, when they require it. Windows Azure Media Services’ ready-to-use services allow customers to simplify the creation of complex media workflows built on the Microsoft Media Platform and third-party technologies.
To learn more about Windows Azure Media Services and sign-up for the upcoming Preview, please click here. We will be accepting sign ups for the next few weeks and will alert you as soon as the services are live for use.
For additional details on the announcement, please check out Scott Guthrie’s Blog (announce details, media partners, capabilities, architecture overviews, scenarios)
Or for press release information and partner information, head on over to the Microsoft Cloud Virtual Press Room.
I’ll follow up with a number of blog posts as we get closer to Preview release. After the Preview is live, I’ll be adding a set of technical posts and hot-to articles.

With the latest release of the IIS Transform Manager Beta, we added a new “task” and Job Template to convert from standard MP4 files (non-fragmented) to Smooth Streaming format files (fragmented MP4). The benefit of this new task is that you can use a lot of existing encoders on the marketplace that allow you to generate regular MP4 files and then easily convert those to Smooth Streaming format for delivery in IIS Media services 4.0.
To use the new MP4 to Smooth Task you need to start out with a set of multi-bitrate encoded MP4 files that meet the requirements for Smooth Streaming encoding:
That means you can use your favorite encoder that can generate H264 and AAC MP4 files (there are a lot of those out there!) as long as you make sure to set them up to create GOP aligned (or Coded Video Sequence aligned for you fellow video nerds) files.
To do that you need to stick to some advanced settings in your H264 encoding tools:
- Make sure that if you switch framerates at lower resolutions, you only use EXACT half framerates of your upper resolutions (for example 29.97 and 14.985)
- Set you KeyFrame Min and Max distinance to 2 Seconds per your framerate
- Disable any forced I-frames at Scene cuts. Usually this is referred to as scene detection or –no-scenecut in x264
- If you are using X264, output your stats file from your first pass and feed it into your second pass.
For example, the following settings worked for me when I used X264 to generate MP4 files using an AVISynth script.
x264.exe –pass 1 –bitrate 2962–ssim –output NUL –profile high –preset slower –tune film –stats “.stats” –keyint 48 –min-keyint 48 –no-scenecut ElephantsDream.avs
x264.exe –pass 2 –bitrate 2962–ssim –output “MP4\%~n1_2962.mp4″ –profile high –preset slower –tune film –stats “.stats” –keyint 48 –min-keyint 48 –no-scenecut ElephantsDream.avs
After you have your folder of .MP4 files you can then use the new Watch Folder called “MP4 Video Files files to H.264 Smooth Streams” that is available in the IIS Transform Manager Beta.
Just Enable and Start this new Watch Folder after modifying the Folder Path that you want to use for it.
Next click Explore Watch Folder in the Actions menu (or right click and select Explore Watch folder). This will open the Watch folder up in Explorer view.
Before we drag our files into this view, we first need to create a “playlist” XML file in SMIL 2.0 format that will be used by Transform Manager to bind the MP4 files that you drop into the folder into a single Smooth Streaming package.
To do this, open up your favorite XML editor and create a basic SMIL 2.0 file with a <body> and <seq> element. UPDATE:Watch out for whitespace characters or tabs in front of the <?xml> processing instruction or it will cause errors. Inside the <seq> element you list the <video> or <audio> tracks that you wish to use from your MP4 files.
You simply point the Video element’s “src” attritbute to your multiple MP4 source files and the audio element to the specific MP4 file that contains the audio track you want to use in the remux.
<?xml version=”1.0″ encoding=”utf-8″?>
<smil xmlns=”http://www.w3.org/2001/SMIL20/Language”>
<body>
<seq>
<video src=”ElephantsDream_1427.mp4″/>
<video src=”ElephantsDream_2056.mp4″/>
<video src=”ElephantsDream_230.mp4″/>
<video src=”ElephantsDream_2962.mp4″/>
<video src=”ElephantsDream_331.mp4″/>
<video src=”ElephantsDream_477.mp4″/>
<video src=”ElephantsDream_688.mp4″/>
<video src=”ElephantsDream_991.mp4″/>
<audio src=”ElephantsDream_audio.mp4″/>
</seq>
</body>
</smil>
If you have multiple language audio files, you can also use the systemLanguage attribute on the <audio> element to set the language tag that will be used in the Smooth Streaming manifest. For example, the playlist below uses the systemLanguage attribute to add a Spanish and English audio track.
This will generate two separate .isma audio tracks and the appropriate manifest entries in the Client and Server manifests.
<?xml version=”1.0″ encoding=”utf-8″?>
<smil xmlns=”http://www.w3.org/2001/SMIL20/Language”>
<body>
<seq>
<video src=”ElephantsDream_1427.mp4″ />
<video src=”ElephantsDream_2056.mp4″ />
<video src=”ElephantsDream_230.mp4″ />
<video src=”ElephantsDream_2962.mp4″ />
<video src=”ElephantsDream_331.mp4″ />
<video src=”ElephantsDream_477.mp4″ />
<video src=”ElephantsDream_688.mp4″ />
<video src=”ElephantsDream_991.mp4″ />
<audio src=”ElephantsDream_SPA.mp4″ systemLanguage=”spa” />
<audio src=”ElephantsDream_audio-eng.mp4″ systemLanguage=”eng” />
</seq>
</body>
</smil>
Finally, you drag all of your MP4 files and your new XML playlist into the Watch Folder to kick off the remux job.
After a short period of time the Job Monitor will show the progress of the conversion.
You can select the Activity Log tab in the Job Details panel to see the detailed progress log.
After the job has finished and you will be able to locate your job in the Finished folder in the Job Monitor view of Transform Manager.
Just double click on the row for your Finished job and it will open up the location of the Finished Folder for your Job ID that will contain your generated Smooth Streaming content. If you want to automate the copying of the output content to a final location on disk, or to another server you can add the RoboCopy Task to the default MP4 To Smooth Job Template and supply the location details on where you want your copy to go.
The new MP4 to Smooth makes it very simple to use a lot of existing encoding software that supports standard MP4 files with H.264 and AAC to generate Smooth Streaming content quickly and easily. This can also be handy when you need to generate MP4 files for HTML 5 progressive download playback in browsers, and also want to quickly and easily add Adaptive HTTP Streaming with Silverlight.
