Optimizing for media delivery
I had the opportunity to speak at TechEd US in June this year, co-presenting with Brad Abrams and Sam Zhang on creating and delivering rich media on Windows Server 2008. Brad covered Ajax and Silverlight, I talked about WMS and some new functionality that we're planning to integrate into IIS, and Sam did an AWESOME demo of live streaming, from encoding in Expression to delivery to a Silverlight client via WMS. Demos at big conferences like TechEd can be scary enough, depending on its complexity -- Sam took it to the next level by setting up a full end-to-end live streaming environment, with a web cam balanced on a little tower of catering trays and an ice bucket, a client laptop and a server laptop. The demo went smooth as silk -- any time Sam gets tired of coding, he has a second career as a speaker.
If you want to check out the video of the talk, Brad's posted it to his blog. Unfortunately, the audio's a little messed up. Brad's mic was working fine but Sam and my mics were low volume so you'll need to jack up the volume during our section. It was a fun talk, despite being the 9 am slot right after the big conference party. I think the Halo preview videos helped. :-)
We're in the process of getting all the IIS TechEd videos posted up to IIS.NET, so stay tuned, we had eight talks there this year across the server administration and application development tracks.
You can check out the full talk for the details but there were a few nifty WMS tips that I wanted to note in case you didn't want to sit through the video.
-
One of the tips we have on improving streaming quality of playback with WMS was to go with a video capture device that supports USB 2.0. The difference is actually pretty amazing between a device that supports USB 1.1 versus 2.0. You'd be surprised how many of the later web cam models in the store today still support USB 1.1. We were using a device that supported USB 1.1 and then switched it out for a device that used USB 2.0; the difference was significant.
-
When you use a network adapter that implements TCP Offload Engines (TOE), you are offloading some pretty intensive operations like TCP algorithmic calculations. This makes a big improvement in performance. The usual network adapter suspects provide this suppport.
-
For streaming performance, you can get a faster start time by disable the buffering on broadcast publishing points for synchornous events. It's important to note that your faster starter time means that you're trading off on the synchronity...faster start time equals less synchronous. If you're okay with the slower start time because it's important to be more synchonous during hte event, you can keep the default buffering.
-
Another default thing to consider....the default acceleration bandwidth limit in WMS is 3.5 Mbps, which captures the mid range of content. If you're working with high bit rate content, like movies or TV broadcasts, you should bump up the default. High bit rate content ranges from 700K to 6 Mbps.
If you're looking for more information about WMS, Vishal, a PM on the IIS team, has started a blog at http://blogs.iis.net/vsood/. We also have a team IIS media blog at http://blogs.iis.net/media/.
We'll be talking more on IIS.NET about the bandwidth throttling module we're planning for IIS7...