One of the least talked about (and least understood) facets of Silverlight is Silverlight Streaming (SLS). Silverlight Streaming is a service provided by Windows Live for hosting and streaming Silverlight applications and content.
The name implies that it’s all about streaming, but the name is misleading. SLS is good—very good, in fact—at streaming audio and video. It supports HD/DVD-quality video at bit rates up to 700 kbps via the same VC-1 codec used by DVD HD and Blu-Ray, and it supports stereo audio. It even supports 16:9 aspect ratios so that HD video looks HD. But just as importantly, it’s capable of hosting any Silverlight application whether that application streams media or not. In other words, if you’ve written a cool Silverlight app and need to host it somewhere, you can upload it to SLS and let Microsoft host it for you. SLS is backed by a terabit/sec global content delivery network (CDN). As one Microsoft person put it, “you do the building and we do the scaling.” Given that you get up to 4 GB of storage and 1 million minutes of streaming per month free, it’s a sweet deal no matter how you look at it.
Earlier this week I posted a video on YouTube of my jet training in Florida. I decided to see what the same video would look like hosted by SLS. Besides the higher fidelity that it offers, SLS lets you wrap whatever UI you want around the video. You can build your own video player in XAML, or, better yet, you can let Expression Media Encoder provide a video player for you. It comes with more than a dozen video player templates, and you choose the one you want when you encode the video. If you want to further customize the look and feel, you simply modify the XAML emitted by Encoder.
Once you’ve encoded a video in Encoder, you create a manifest in a file named Manifest.xml. Then you create a zip file containing the manifest and the files generated by Encoder and upload the zip file to SLS. You can then paste a bit of markup and JavaScript code into an HTML file to create a Web page that hosts the SLS application, or you can embed a magic IFRAME that does the same. The latter technique is especially useful when you want to embed an SLS app in a blog post or in any other page in which you don’t enjoy total control over the page’s markup.
I used the IFRAME method in this blog post to display the SLS application below. (You’ll need to have Silverlight 1.0 installed to view it.) The video player was generated by Encoder, and it took me all of about 10 minutes to create and upload the package. Click the arrow in the upper left corner of the player to display a list of thumbnails for quickly jumping to key locations in the video. These thumbnails are markers generated in Expression Media Encoder. Or click the arrow in the lower right corner to trigger a cool XAML animation that alternately hides and displays the player’s dashboard. You can zoom to full-screen by double-clicking the video itself (and exit full-screen mode by pressing the Esc key). The quality of the video isn’t that much better than the one on YouTube, but that’s because I didn’t have HD-quality video to start with.