Microsoft Smooth Streaming part 1

15 November 2011
Kacper Chomicz

The problem

Teaser - presentationA few times each year Cognifide hosts an internal conference where employees can share their knowledge and ideas giving short presentations. The form is similar to TED conferences so each person has about 15 minutes to present her or his topic. The last two events were recorded, giving people who couldn’t attend or work in different locations an opportunity to participate.

The first time we put all the videos on a shared network drive, for everyone to download, but it turned out almost nobody did. Another problem was sharing those presentations with our clients or partners – sending a link to the video file didn’t actually encourage people to download and watch it.

Last time we decided that we need to do it better; that we need to give everyone who could be interested in those talks the best possible experience, best quality and do it as fast and as cheaply as we can.

The solution

For starters we had a Windows 2008 based server, about a day of free time and a group of really excited people. Our solution had to support all major browsers, iPhones and iPads, be easy to set up and give us an opportunity to learn something in the process.

We started by gathering requirements - our solution:
  • Should be free or inexpensive,
  • Installation should be fast and easy,
  • Should offer the best possible quality,
  • Should work on all major browsers, iPhones and iPads.
After initial investigation we decided to go with Microsoft Smooth Streaming mainly because it complies with our requirements and above that:
  • Almost no configuration is needed,
  • Quality depends on client’s capabilities and network conditions (adaptive streaming),
  • HTTP based (easy to cache video fragments on edge servers),
  • This technology constantly evolves and new features are introduced in each release,
  • Encoding of videos can be done using Expression Encoder or any other software like ffmpeg,
  • Transform Manager, an IIS extension, can be used to automate the encoding process (works almost out of the box),
  • Videos work on all Silverlight enabled devices and on iPhone and iPad.
After choosing the technology the rest was straight forward. We installed everything using Web Platform Installer and used Transform Manager (and Expression Encoder) to handle video conversion. A simple web application was set up using Cognifide’s HTML templates and we were ready to go.

Check below for a Smooth Streaming Demo and more technical details about this technology.

In the second part of this article I will show how to set up the server, encode files and experience Smooth Streaming.

Demo site

Microsoft prepared a great demo site for everyone to experience Smooth Streaming. You can play with the player to check how this technology works in practice – just limit the Bit Rate and observe what happens with the quality of the video. The Bit Rate Graph will show you available bit rates and the one currently playing. Of course you can play, pause, seek and watch this video in full-screen mode.

For more advanced applications including multi-cam, presentation and an iPhone example check the new IIS Smooth Streaming Showcase.

In-depth overview of Microsoft Smooth Streaming

The idea behind Smooth Streaming is very simple – the encoded media file is split into small chunks by the IIS Server and those chunks (usually about 2 seconds long) are sent to clients over HTTP, thus enabling easy CDN usage, low cost caching on standard proxy servers near network edge and eliminating firewall problems. During the encoding process multiple streams are created for the client to choose from based on local conditions. This process happens in real-time, resulting in high quality glitch-free video playback, making true HD experience possible.

Smooth Streaming - overview

Images courtesy:

For a more detailed description of Smooth Streaming including its historic background check out Alex Zambelli’s technical overview. All that is needed to benefit from Smooth Streaming on the client side is a device – PC, Mac or WP7, web browser and Silverlight plugin, iPhones and iPads are also supported. Unfortunately at the moment Silverlight isn’t supported on Android devices but in April on Mix 11 conference Moonlight team showed a working port.

At this point you are probably thinking about setting everything up and encoding your own videos. In that case - stay tuned for part two!