| Comments

Many have inquired if Silverlight Live Streaming had a replacement since the announcement of it being deprecated.  The SLS team blog pointed to Azure as a possible solution.  Since it doesn’t seem like anyone except James has really tried this, I decided to dust off my Azure account information and give it a try.

First, a note about SLS.  As I’ve said before I don’t think the offering was named very well from the start.  “Streaming” implies a specific technical connotation to most folks.  In fact, the media (or other files) hosted on SLS were never streamed as you might be thinking they were.  It was always a media file hosted on a content delivery network (CDN) and distributed delivered via basic progressive download…not streamed.  Now that we got that out of the way, let’s move on.

Setting up Azure

I’ll be honest.  I’m not sure how you go about getting an Azure token/invite at this point.  But you’ll need one.  Those who attended PDC08 already have access to one.  I believe MSDN subscribers will have access at some point but I don’t see it enabled on my account just yet either.  Bottom line is you’ll need an invitation token.  I cannot help you in this regard, so don’t even ask…I wish I could, but I can’t.

Once you have an Azure account, you want to create a Windows Azure Storage instance and give it a name.  I recommend not using special characters in the name as some of the tools I’m explaining below had problems with that.  I gave mine a simple name “timheuerblob1” and let it provision.

Azure Storage Account creation

Once you have that you’ll see a bunch of configuration screen details:

Azure configuration details

I’d recommend doing the following tasks first before you proceed.  In the bottom you’ll see an option to enable CDN.  For this purpose of hosting files/storage I recommend putting it on.  Additionally, this provisioning of CDN can take some time so do that first.  The next step is to configure your custom domain names (if you’d like) to map to the CDN and/or blob storage endpoints.  This is a simple/fast process but requires you to understand DNS entries and have the ability to modify your domain’s DNS information.  You can find step-by-step instructions at Steve Marx’s blog post here.  Without enabling this CDN feature, you really aren’t going to get the same level of scale as you did with SLS.

The key things you will need for the next part are the Primary Access Key and the Endpoints.  Make note of them.

Tools to upload content

Windows Azure blob storage is exactly what it says: storage.  Right now there aren’t any provided tools from Windows Azure to really manage the contents of the storage blob containers (unless I’m mistaken, and if so, please correct me).  There is an API for you to get access to and publish content, but if you’re wanting to use it like an SLS replacement you’re likely hoping for an easy tool to upload/manage the contents.

Enter two tools: Azure Storage Explorer and Cloud Storage Studio.  Both of these are Windows clients (WPF incidentally) and are installed on your machine.  Cloud Storage Studio actually has an online version if you wanted to use that offering.  I did not try that tool as I’m okay using a client tool.

Azure Storage Explorer is a CDDL licensed CodePlex project (which actually has no source code checked in at this point) provided by Neudesic – a Microsoft partner.  It is a simple UI that requires you to input your blob storage name, access key and endpoints in the Storage Settings dialog.  I initially had problems with this as my name had a special character in it.  I deleted my initial (and old) instance and recreated a new one in Azure and didn’t have problems after that.

Azure Storage Explorer screenshot

It was pretty simple to use and understand.  Create a container, upload stuff into it.  Done. 

Cloud Storage Studio is a commercial offering and unclear if it is going to be free always or just in CTP mode right now.  I couldn’t find information that jumped out at me on their site to let me know. 

Cloud Storage Studio screenshot

Cloud Storage Studio wouldn’t let me resize the window and that was frustrating.  Other than that it operated as expected, same thing – blob container select and upload.

While both tools were providing me basic blob container and upload capabilities, I felt the upload was slow (comparing to my Amazon S3 experience in creating a tool for content management).  I’m not sure if that was the app, Azure, or the nature of the API.  Also, neither tool seemed to enable me to set the content-type of the contents of the blob I was uploading.  I see this to be a problem for some.  The default of application/octet-stream isn’t going to work for all scenarios (for example I cannot use it to host XAPs and embed them because I would need to be able to set the content-type header).

Side note: Be sure to check out James Clarke’s CodePlex work on a Windows PowerShell script that will do encoding via Expression Encoder and then trigger a publishing plugin – such as one that will automatically upload to an Azure blob storage account.

Other than that, they served the need of filling the gap for a UI tool that already worked out the API stuff.

UPDATE: CloudBerry for Azure

I cannot believe I didn’t know about this one, since CloudBerry is what I use for my Amazon S3 storage and is AWESOME.  I was directed to CloudBerry for Azure Blob Storage (oddly by their competitor above) and I downloaded it immediately. 

CloudBerry Azure Blob Storage explorer

It met every expectation I had and has been the fastest client.  To me, the other clients must meet this bar of functionality *for blob storage interaction* to be considered for me to use.  The one thing it doesn’t have is custom CDN URI generation in its “WebURL” functionality – but I suspect this might be an Azure API limitation (I’m not familiar with the Azure API).

UPDATE 2: Cloud Storage Studio

Be sure to read the comments below from the team at Cloud Storage Studio.  They were kind enough to reach out to me to clarify some things above and listen to my feedback.  They are ACTIVELY looking to improve their product and provide value-add to Azure users/developers.  I sincerely appreciate when people reach out to their customers for feedback.  It’s been a great dialog with them helping them understand how I would use Azure and what my tools needs might be.

My Silverlight media test

Using my new found tools and some sample media files I uploaded a 720p high-def 30 second clip (30MB) to my blob storage account.  I then used put together a page with a simple player and pointed it to the Azure-hosted media.  I first pointed the media player to the basic blob endpoint.  The result of which is here: Non-CDN Hosted Media Playback.

Users who tested it with me said that the video buffered quite a bit and in remote areas (Australia) it took about 1.5 minutes to download the video.  This is again because this is still not streaming but just progressive download.

I then changed the media URL to the CDN version (after waiting 24 hours for propagation, etc. just to be sure) and have the CDN Hosted Media Playback.

I have to be honest and say that the CDN versions seemed to be better at consistent playback after the initial buffer of video (i.e., I received no more future buffering).  I’d be curious as to what other international people see on the CDN version as it would give a better view of how well the CDN delivers content globally.


I’m not sure if this will be a solution for everyone, but if you are looking for a Microsoft offering for cloud/CDN storage, give Azure a try.  NOTE: It is not a free service once it goes into production!  In fact, most CDN/cloud storage solutions you will find are not.  I’m currently using Amazon S3 for mine and have been for a long while.  It, too, is not free.  (Here’s the Amazon S3 CloudFront version of same media file.)  Again, here are the links to the three different video hosted locations/tests I did:

Either way, now that SLS is gone as a CDN/free hosted service where many were putting their media, you’ll have to look for another option.  Azure is one of those options.  Does it provide an automatic skin for a media player?  No.  You’ll have to do that yourself.  Is it streaming?  No, but neither was SLS.  Is there streaming/smooth streaming on the horizon?  I don’t know…but it would be cool if there was!

Hope this helps.

| Comments

Yesterday, the Silverlight Live Streaming team (SLS) posted an update on their blog regarding the future of the Silverlight Streaming by Windows Live service.

SLS was a beta service to users to have a place to host and deliver their Silverlight-based applications or media to be delivered by Silverlight players.  It was launched at the time of Silverlight 2 as a free beta service to users under the Windows Live brand and offered 10GB of free storage to beta users.

In summary, the SLS service is being discontinued.  Effective immediately no new account sign-ups are going to be permitted for the service.  Existing accounts are not going to be deleted, nor is the content at this time.  A date for final termination of the service has not yet been set and the team has stated they will provide ample time to users to get their content out of the service.

Is there a replacement, if so, what is it?

A new Windows Azure based service for hosting and delivery of similar content is planned to be launched by the end of 2009 and would be a service that SLS users might consider transferring to, however is not a direct replacement of SLS.  Windows Azure is a broader initiative for the company and this is just one service that will be offered as a part of the suite of Azure cloud services.  Windows Azure is a pay service and will have costs associated with use.

How can I get my content?

The SLS team blog post has information about how you can retrieve your content from the service.  In a nutshell, we’ve enabled the WebDAV folder support for users of the service.  This gives you the ability to map a drive to your account and move files in your file explorer utility.  The key pieces of information you will need to accomplish this is your SLS Account ID and Key.  These are different then your Live ID account you use to log into the service.  To retrieve these, log into your account at the SLS site and click on Manage Account in the SLS options on the left after logging in, like this:

SLS Account ID information

Make note of these two things.  The blog post has instructions on how you can use this information to map a network drive or network location to a WebDAV URL or share location to access your content.  I’m guessing the servers might be under some heavy load using this method so please be patient.  Remember that any authentication prompt is not looking for your Windows Live ID, but rather the SLS Account information noted above.

Summary and some FAQ

Yes, this is a bummer the service is going away as-is.  While the service was meant to stream any stand-alone Silverlight application, I know a lot primarily used it to host video content for blogs, etc. because of the web player it automatically generated. 

Q: Will the new Azure service enable video streaming and Smooth Streaming?
A: I think SLS had one of the most misleading names we’ve had on a product.  The video content on SLS was never really streaming in the technical sense.  It was always just a progressive download experience.  The Azure service details have not been completed for public detail just yet and will be announced when available as to what they will provide, costs and other details.

Q: What about the advertising platform?
A: Users who opted in and were approved for the advertising pilot with AdCenter will still have their AdCenter account information and content.

Q: When will you delete my content?
A: The final dates of discontinuance haven’t been determined and the team will give notice to all users (via the registered Windows Live ID account information/email and the blog) of timelines when they are available.  I would recommend to start downloading/saving your content now if you want it for later…this will save any mad rush to get content.

Hope this helps clarify anything but please also read the full announcement from the SLS team themselves.

| Comments

I actually didn’t plan on “announcing” the winners, but I did want to give some credit to some great contributions and my appreciation for those that attempted given such short notice.

Last week I posted a simple quick request for you to be inspired and have some fun with Silverlight and win a chance at a free registration to MIX09.  The deadline has come and gone and here are the winners:

Winner #1: Matthias and Presidential newspaper timeline.  Seriously you have to check this out.  Inspired by the Descry demographics, Matthias used the NYTimes API to gather data about US Presidential candidates and put them on a timeline…each candidate’s representation changing on a timeline which covers 2006-2008.  I really liked this, it was creative.  Great job Matthias!

Matthias infographic

Winner #2: Jason went the Line Rider route (I was hoping someone would!) and created a map using the Las Vegas strip icons like the Paris tower, the MGM Grand lion, and the Stratosphere.  We’re working on figuring how how we can share his map and Bosch cruising down the strip, but here’s a screenshot of part of it:

Line Rider Vegas

Congratulations guys!  I hope to see you at MIX09 and hope you have a great time and continue to be inspired about what you see in Silverlight!

There were also others that heeded the call:

Thanks to you all for participating.  It was fun to see some different ideas from folks on such a short timeframe.  Congrats to Matthias and Jason as well and we’ll see you at MIX09 in Vegas!

If you are in the contest mood, you can also write a game using Silverlight and have a chance at winning $5,000! (sorry, US-only contest – don’t shoot the messenger).

| Comments

Over the past year Sara Ford had created a Visual Studio tip-of-the-day feature of her blog that eventually was aggregated pretty much everywhere and also in the Visual Studio community page displayed within the product itself!  The tips were plenty and great…a ton of gems that you may not have known before and a subtle reminder that there is so much more to learn.

This year Scott Cate has decided to take this one step further.  He’s begun taking this tips concept and providing actual walk-through and visual demonstrations of these tricks.  One thing that I really like about this approach is that while I may skim through the text of a tip and thing “that’s interesting” I may never actually put it in practice because it’s only in text and not visual.  Seeing them in video helps me see the immediate value of taking the time to learn the tip and put it in practice and/or validates that the tip isn’t going to be helpful to how I use the tool.  If you’re a Visual Studio user, fire up a subscription to Scott’s VSTricks feed to get the videos and see what you’ve been missing (oh and a shameless plug that he’s chosen to use Silverlight to display the videos)!

| Comments

The Encoder team has updated their Silverlight Streaming (SLS) plugin for Expression Encoder 2.  On the surface pretty much nothing has changed, but it essentially updates the ability to use the plugin to publish Silverlight 2 templates to SLS automatically without getting the random error that you’ve probably seen if you tried.

Since the new Silverlight 2 player templates are completely parameter-driven, which is awesome, it did present a small challenge for the plugin.  When you use the new plugin with a Silverlight 2 player template, you’ll notice that the resulting application uses a bootstrapping method to launch with initialization parameters.  This models (in fact I modeled my information) the bootstrap method I outlined in a previous post.

With the new plugin, for media applications at least, you don’t have to mess with creating your Javascript files or manifest files…the plugin does all that for you now in the pre-processing before uploading to the SLS service.  Because all of this is in there now, my process of making the SL2VideoPlayer a one-click template in Expression Encoder is now complete!  I’ve chosen to stick with my “minimum” fork of the template (no markers or caption support) because that’s the scenario I use mostly, just a player.  You can get the template files here.  Just unzip into the Encoder templates directory and it will show up as an option.  When used, the SLS plugin correctly translates all the settings into initParams for you.

Here’s the download links: