IIS Media 4.0, SMF 2.3, RCE 1.0 SP1 and More

It’s been too long since my last post, so I thought I’d get warmed up and back into blogging form by posting something about recent releases on the Microsoft media platform.

After PDC 2010 in November which focused on new web technologies (e.g. IE9, HTML5, WP7), we hosted a special event in December called Silverlight Firestarter which focused exclusively on Silverlight. Scott Guthrie announced some of the new features going into Silverlight 5. Among the many features, the ones most interesting to media developers were:

  • Support for GPU-accelerated H.264 decoding, intended to make H.264 video perform better on low powered computers and increase battery life on laptops and netbooks.
  • Variable speed playback, also known as “trick play”, which will allow you to fast forward and rewind videos as well as play them back at up to 2x speed while maintaining the audio pitch. This is a feature particularly useful for e-learning, as well as suffering through boring corporate training videos. :) Note that some aspects of trick play, such as rew/ffwd, have already been implemented in the Silverlight Media Framework for Smooth Streaming videos.
  • OS power scheme awareness. This will allow you to watch long videos in Silverlight without worrying about your computer going to sleep during the season finale of “Dexter”.
  • Remote control support for media scenarios. I presume this will include support for Media Center remote controls.
  • Advanced DRM management. I don’t know much about this, but I’m guessing it has to do with supporting seamless key rotations.

Other noteworthy SL5 features include 64-bit support and improved GPU-accelerated graphics APIs.

Around the same time we shipped Windows Phone 7 which uses Silverlight as one of its two app development platforms (the other one being XNA). WP7 support ended up being one of the main features of the Smooth Streaming Client 1.5 (aka SSME) too. Vishal Sood wrote a great post about encoding video for Windows Phone 7. The biggest difference between encoding for WP7 versus the desktop is WP7 video driver’s current lack of support for mid-stream resolution changes. What this effectively means is that all streams in a Smooth Streaming asset delivered to WP7 must be encoded at the same resolution. We hope to fix this in future WP7 updates, but for now we have to live with it.

2010 also saw the release of IIS Media Services 4.0. The most exciting new feature of this release is support for dynamic repackaging and delivery of Smooth Streaming assets (VOD and live) to Apple iOS devices such as the iPhone and iPad. Apple iOS devices support HTTP Live Streaming, an HTTP adaptive streaming technology developed by Apple and based on the MPEG-2 Transport Stream file format. Because both Microsoft and Apple support H.264/AAC codecs, it is possible to repackage (remux) Smooth Streaming H.264/AAC assets into Apple HTTP Live assets by simply changing the container formats, without a need for re-encoding the video and audio streams. The IIS Media Services 4.0 release also supports live DVR features, AES encryption, archiving and B-frame encoding (H.264 Main/High Profile) for iPhone4 and iPad.

Apple has documented some of their own encoding best practices for iOS devices, though frankly, they seem a little on the conservative side. I’ve seen many online reports of iPhone4/iPad being able to handle H.264 High Profile at 1280×720, so it seems strange that Apple would limit their recommendations to just Main Profile at 640×360 (especially considering iPad’s display resolution is 1024×768). If you have experience with streaming to iOS devices and would like to share your encoding settings and feedback, please leave a comment. Even better – if you work for Apple and your focus is HTTP Live Streaming, send me an e-mail.

IIS Media Services 4.0 also includes support for low-latency streaming which can bring down the typical Live Smooth Streaming end-to-end latency to under 2 seconds. This requires the latest Smooth Streaming Client version and a low-latency compatible realtime video encoder, such as the ones made by Allegro DVTDigital Rapids, Elemental, Envivio and Inlet. (Did I forget your company? Let me know.)

Though not officially a part of the IIS Media Services package, the IIS Media team also recently released IIS Transform Manager 1.0 alpha, another IIS extension which allows you to automate your transcoding/transmuxing workflow. The most recent public release is just an alpha, but shows a lot of promise. It features integration with Microsoft Expression Encoder (for transcoding to WMV, MP4 and Smooth) and offline transmuxing (repackaging) of Smooth VOD assets into Apple HTTP adaptive assets. The final release, coming soon, will also feature support for distributed transcoding, DRM packaging tasks and – my favorite – MP4-to-Smooth tasks. The last one is particularly exciting because it will allow you to encode to Smooth Streaming using any H.264 encoder regardless of its lack of Smooth Streaming file support. For example, you’ll be able to encode videos with the awesome open-source x264 encoder and automatically convert its MP4 output files into Smooth Streaming assets as a background task.

Completing the slew of recent media releases are:

Last, but certainly not the least, stay tuned for the upcoming Microsoft Expression Encoder 4 service pack which will enable GPU-accelerated H.264 encoding using NVIDIA CUDA technology. Expression Encoder Pro’s H.264 compression engine is powered by MainConcept, and the new acceleration feature will be powered by MainConcept’s CUDA H.264 Encoder SDK. SP1 is scheduled for release in Q1 2011.

About Alex Zambelli

Alex is a Principal Product Manager at iStreamPlanet Co. in Redmond, Washington. Prior to his current job he was a Technical Evangelist for Microsoft Media Platform at Microsoft Corporation. He specializes in video streaming, adaptive HTTP streaming, VC-1 and H.264 video, and video processing best practices.
This entry was posted in Expression Encoder, H.264, Internet Information Services, Silverlight, Smooth Streaming and tagged , , , , . Bookmark the permalink.

4 Responses to IIS Media 4.0, SMF 2.3, RCE 1.0 SP1 and More

  1. David says:

    Hi Alex,
    I see you said IIS Media Services 4.0 could decrease the Live Smooth Streaming end-to-end latency to under 2 seconds with the help of Smooth Streaming Client. It really an exciting capability. I try to achieve it, but I failed. I revised the BufferingTimeProperty in SMF code to lowest value, but I find that the client still request from the past 7th fragment, which means there is 7 fragments latency. I checked the SMF codes carefully, but could not find how to set the playback position for live stream. Could you please give any help? Thank you a lot.

    • Hi David,

      In order to make low-latency Smooth Streaming work you need a live encoder which supports low-latency, such as the professional encoders made by Elemental, Envivio, Inlet, etc. You should inquire with them about the low-latency Smooth Streaming suppot in their products.

  2. Abdullah says:

    Hi Alex,

    Maybe this blog post is not the right place for this question but since there are related information inside, I wanted to ask.

    I have a 6-layer smooth streaming asset, bitrate and resolution are as below.
    Which h.264 profile and level would you recommend to use for each layer?
    Baseline, Main, High L?

    bitrate resolution
    3000 1280×720
    1800 704×396
    1200 704×396
    630 640×360
    360 480×270
    230 320180

    Thank you

    • Hi Abdullah,

      There’s no need to vary the H.264 profile per layer, unless you’re planning on re-purposing that asset for different platforms (e.g. iPod, iPhone3, iPad, WP7, PC/Mac) and each player client has the logic to pick only the layers supported by the client platform.

      For example, if you’re creating a Smooth Streaming asset for delivery to Silverlight and WP7 – you might as well use High Profile to maintain the highest quality for all layers. After all, both the Silverlight H.264 decoder and the WP7 H.264 decoder are capable of decoding HP, so there’d be no benefit to using Main or Baseline only for certain layers.