The Silverlight Streaming ads pilot program has launched and is live in production!
A couple of weeks ago, we successfully launched the SLS ads trial (see previous references below). This means that for the very first time, we have opened up a Windows Live service to breadth developers to enable them to use the Microsoft adCenter Publisher platform. There is real US Dollar revenue associated to this pilot program. It is currently available in the US only, to people who can fill in a W9 form.
This pilot program allows you to upload video content to Silverlight Streaming and play it back with contextual ads relevant to the playback experience, based on keywords you provide at video upload time, or configure later on in the video properties. The selected participants will become adCenter Publisher account holders seamlessly, as the account provisioning into the ads platform is done directly when they decide to enable ads in their SLS-based video playback experience. This will allow them to login directly directly to https://beta.pubcenter.microsoft.com.
We are still accepting participants, so if you think this is for you, register on the web interest form, we'll process the pool of participants for the second batch of invites to the ads trial program shortly.
Previous references to the SLS ads trial program on this blog: March 26 blog post | April 29 blog post
The Silverlight Streaming service has been successfully upgraded to work with Silverlight 2 Beta 2. As mentioned in my previous post about this maintenance release, all Silverlight 2 Beta 1 applications hosted in SLS should be upgraded to use the Silverlight 2 Beta 2 runtime as soon as possible if it is not already done. They are no longer supported from SLS, and they will no longer work anyway as soon as the Beta 1 time bomb kicks in. The Silverlight 1 applications are not impacted by this service upgrade.
In conjunction with this SLS upgrade, all existing and new albums created on PhotoZoom are now displayed with the Silverlight 2 Beta 2 version of Deep Zoom. More information about this topic in the PhotoZoom section of Matt's blog.
As you may have already noticed, since the Silverlight 2 Beta 2 was released a week or so ago, and if you have upgraded the Silverlight runtime on your machine, not all applications hosted in Silverlight Streaming work correctly. This is due to several breaking changes in the Silverlight runtime between Beta 1 and Beta 2, which we intend to become compliant with later this week from the Silverlight Streaming service perspective.
This means that you have a few more days to upgrade your Silverlight applications hosted in Silverlight Streaming for them to continue to work with the Silverlight 2 Beta 2 control going forward. It is also important to note that regardless of the Silverlight Streaming work involved in this respect, the Silverlight 2 Beta 1 will expire (and no longer be usable) starting 30 days after the Beta 2 release date and no later than September 1, 2008.
I'm pleased to announced that the Beta refresh release of the Silverlight Streaming publishing plug-in for Expression Encoder 2 is available for download right here.
This plug-in makes it very easy to manage your encoded Silverlight video experiences and publish them online using the Silverlight Streaming service, from within the Expression Encoder 2 application.
As well as adding support for Expression Encoder 2, the plug-in has a number of enhancements, and uses the latest Silverlight Streaming service API:
- File-by-file upload: There's no more need to package the files in a zip archive, and uploading file-by-file improves upload reliability and performance, while alleviating the risk of timeouts
- Better upload progress reporting
- Quota display that shows available/remaining online storage space
- Support for application republishing: you can replace or merge existing applications
- Several UI enhancements (e.g. resizable preview window, application list sorted in inverse date order, etc.)
Those of you who already know the SLS publishing plug-in for Expression Encoder 1 will no doubt love this one even more, and if you have never used the SLS publishing plug-in for Expression Encoder before, this is the perfect time to start. Enjoy!
References:
Silverlight 2 Beta 2 is out, read ScottGu's blog about this release on http://weblogs.asp.net/scottgu/archive/2008/06/06/silverlight-2-beta2-released.aspx.
Due to the imminent launch of the Silverlight Streaming ads trial program, the Silverlight Streaming service has not yet been updated to be fully functional with the Silverlight 2 Beta 2. As a direct consequence, Silverlight Streaming doesn’t work with Silverlight 2 Beta 2 applications yet. This is a temporary situation that we are working hard to address promptly.
It is important to note that the Silverlight 2 Beta 1 will time bomb 30 days from the Beta 2 release, at which point in time it will be necessary for you to have all your Silverlight 2 applications fully functional on the Beta 2 release.
Due to popular demand we have just released an update to Silverlight Streaming that allows you to bypass the transcoding service when uploading a VC-1 compliant video without using the workaround described in my previous blog post about this matter.
When you go to the "Manage Videos" page on the Silverlight Streaming admin web site you will now see a checkbox below the video file name text box. Simply check it if you wish to bypass the transcoding service and upload your video to Silverlight Streaming "as is". This would apply to all WMV files encoded using Expression Encoder for example.
Remember, you should make sure you run your video through the transcoding service -and leave the checkbox unchecked- for videos that are not VC-1 compliant and Silverlight-ready. This would be the case for any non-WMV files and some WMV files. When in doubt, leave the checkbox unchecked.
Note that there is a glitch (we'll fix it shortly) that clears the video file name when refreshing the upload control after your check the checkbox, so check it before you actually browse to the video file you wish to upload to Silverlight Streaming, so you don't have to go look for it a second time.
Another FAQ for you...
As you may have already noticed, currently there is a bug in Silverlight Streaming that prevents WMV files created with Expression Encoder 2 to be transcoded successfully when you upload them to SLS using the Manage Videos turnkey scenario. Note that it works fine with WMV files encoded using Expression Encoder 1.
If you go through the time and effort of editing a video file with Expression Encoder 2, you probably don't want to run it through another transcoding pass anyway (different encoding profile than what you chose, double-encode glitches, etc.) So here is a simple workaround to bypass the SLS transcoding service should you want to upload a video file only.
Needless to say, this workaround only makes sense if the video file you are uploading to SLS is already Silverlight-compliant, encoded using a VC-1 codec. If you upload a file that cannot be played back in a Silverlight player, it won't do you much good to have it hosted in SLS.
- Once you’re done encoding your video file, rename it to VIDEO.WMV
- Go to http://silverlight.live.com, sign in into your SLS account and go to Manage Applications, *not* Manage Videos
- Provide an application name, then click on Create
- Browse to the file you just encoded, remember, it is called VIDEO.WMV, then click on Upload
- Done! Go to Manage Videos, you’ll see the “application” name in the video list, your video file is now hosted in SLS (you can play it back either by using the new http permalink feature, or the good old iframe invoking the default SLS player) and you’ve bypassed the SLS transcoding service.
Note: the standard SLS file size restrictions apply. If your video file is larger than 105 MB, the upload will fail.
This question has actually become an FAQ, so I thought it would be worth blogging it once and for all.
It is quite frequent that when you encode a video using Expression Encoder, and publish it on Silverlight Streaming, that you do NOT want it to start immediately upon loading the web page where the video player is hosted. Preventing auto-play was already possible in Expression Encoder 1, even though you had to tweak to setting directly in the skin, once the video was encoded, or change the template and then all the subsequent video encoding would be done using auto-play = false.
Quick reminder of how to do that in Expression Encoder 1: You can edit startplayer.js manually after encoding, but before publishing, and set autoplay to false:
StartPlayer_0.prototype= {
_handleLoad: function() {
this._player = $create( ExtendedPlayer.Player,
{ // properties
rootElement : $xamlGet("Main", $get(this._hostname)),
autoPlay : false,
volume : 1.0,
muted : false,
startTime : 0.0,
loopCount : 1,
autoScale : true
},
{ // event handlers
stateChanged: Function.createDelegate(this, this._onStateChanged)
},
null, $get(this._hostname) );
this._playNextVideo();
},
Now in Expression Encoder 2, you can do it directly from the user interface. It is not trivial to find as you have to make sure that a video is actually imported in Expression Encoder, and that you have selected a skin template, then click on the expanded view of the control bar. See step-by-step below.
1. Open Expression Encoder 2 and Import a video
2. Go to the Output tab on the right hand side, and select a Template
3. Click on the Show Advanced Properties arrow symbol to expand the options available
4. Select or unselect the various check boxes that are now available for you to pick from:
- Cue Video on page load = download the video when loading the web page, deselect if you don't want to load the video when your page loads
- Automatically start video when cued = autoplay, so deselect if you don't want the video to start playing when loaded. This is particularly recommended if you have multiple videos on the same web page. It can create quite an annoying cacophony when they all playback together.
See screen shot below with the click spots to get there.

This long awaited feature is now live in production!! Regardless of how a WMV file ends up in Silverlight Streaming: whether you upload it via the API or using the admin web site, or whether you use the "Manage Applications" scenario or the "Manage Videos" scenario, you will now be able to reference WMV files hosted in Silverlight Streaming using an HTTP permalink.
It is no longer necessary to pass streaming:/accountId/fileSet/fileName.wmv as initParams to your Silverlight application, you can directly point to the WMV file in Silverlight Streaming using the following HTTP permalink: http://silverlight.services.live.com/accountId/fileSet/fileName.wmv, where:
- accountId is your Silverlight Streaming account ID; check the Manage Account page to find it
- fileSet is the folder name where your video file is stored; you can see the list of folders in your Silverlight Streaming account in the Manage Videos page
- fileName.wmv is the video file name
This new HTTP endpoint is directly available for you to copy/paste directly in the Video Properties page.

If you are using Silverlight 2 Beta 1, next time you go to http://silverlight.live.com to upload a video, you will be able to enjoy the completely overhauled upload stack. The tip of the iceberg is the window that allows you to pause the upload and resume it at a later time. More importantly the uploader supports resumability so if the connection drops for whatever reason, it will keep on trying without loss of data, and without forcing you to restart the video upload from the beginning.
Note that if you are using Silverlight 1, the upload stack is the same as before, and doesn't support resumable upload.
1. Go to "Manage Videos" and click "Upload Videos"
2. Browse to the file you want to upload and transcode, give it a title, and click on "Upload".
3. Notice the new uploader windows pops up and provides status after a couple of MB have been transferred. You can pause the upload on-demand.
What next? Extend the robust uploader functionality to the applications scenario. I cannot wait!
This trial was announced at MIX'08 and since then we've been hard at work to make it happen. You can read the details in my previous post about this program, but the short story is that if you want your video content to make money for you, look no further. You can register on the web interest form which we'll use to select a group of people for the first phase, due to begin soon. Now you can see on the Silverlight Streaming admin web site what it will look like. We're still working on the final design, but this is the concept.
First, the ad title shows up, and blends in over the video player.
Then, the ad title expands to the full width of the ad banner.
Finally, the ad text and URL show up.
Click on the URL to go to the web interest form and register for a chance to be part of the first group of people to participate in this pilot program when it goes live.
In reference to my previous post about the new invocation method introduced on April 10th, after due consideration with the Silverlight runtime team, we decided to pull out this feature.
It allowed you to distribute an application hosted in Silverlight Streaming as a Windows desktop application which allowed you to make abstraction of the web site hosting, but it didn't have the same behavior on all browsers and required Internet Explorer to be installed on your machine. This is against the Silverlight cross-browser paradigm to which we want to remain true.
We'll be working on addressing the same use case (desktop invocation of a cloud-hosted Silverlight application) in a cross-browser implementation.
This is becoming an FAQ so it's time to blog it for the record.
If you want -or have- to manually process the Expression Encoder 2 job output in order to publish the player and video to Silverlight Streaming, here are the three simple steps to follow. The first two are script-able to make it even easier.
First, go to the Expression Encoder output folder (in "C:\Users\<username>\Documents\Expression\Expression Encoder\Output" unless you modified the default configuration), then run this little script in a command prompt to create the manifest.xml you'll need later.
@echo off
echo ^<SilverlightApp^> >manifest.xml
echo ^ ^ ^<version^>1.0^</version^> >>manifest.xml
echo ^ ^ ^<loadFunction^>StartWithParent^</loadFunction^> >>manifest.xml
echo ^ ^ ^<jsOrder^> >>manifest.xml
echo ^ ^ ^ ^ ^<js^>MicrosoftAjax.js^</js^> >>manifest.xml
echo ^ ^ ^ ^ ^<js^>SilverlightControl.js^</js^> >>manifest.xml
echo ^ ^ ^ ^ ^<js^>SilverlightMedia.js^</js^> >>manifest.xml
echo ^ ^ ^ ^ ^<js^>ExpressionPlayer.js^</js^> >>manifest.xml
echo ^ ^ ^ ^ ^<js^>PlayerStrings.js^</js^> >>manifest.xml
echo ^ ^ ^ ^ ^<js^>player.js^</js^> >>manifest.xml
echo ^ ^ ^ ^ ^<js^>StartPlayer.js^</js^> >>manifest.xml
echo ^ ^ ^</jsOrder^> >>manifest.xml
echo ^</SilverlightApp^> >>manifest.xml
Second, create the zip archive as follows:
zip myVideo.zip manifest.xml MicrosoftAjax.js SilverlightControl.js SilverlightMedia.js ExpressionPlayer.js PlayerStrings.js player.js StartPlayer.js *.jpg *.wmv *.xaml
Note that the js files are listed individually on purpose to make sure we do not package Silverlight.js in the lot. However we can use the wild card for the other file types.
Third, go to http://silverlight.live.com, sign in using your Windows Live ID credentials, browse to the "Manage Applications" page, and manually upload the myVideo.zip file to your SLS account.
Just a quick note to let you know that the Silverlight Streaming SDK has been updated with a brief "How To" guide in order to supplement the DAV API code sample published last Tuesday.
The title says it all, but before, let's look back at the history of the upload paradigm in Silverlight Streaming by Windows Live.
When we first launched the Silverlight Streaming service as an Alpha for MIX '07, it was required to package the Silverlight application in a ZIP file, along with a manifest.xml. There was no deviation from that requirement, be it from the administration web site or the API (REST at the time).
Then, for the Beta launch at MIX '08, we enriched the API to use WebDAV thus adding a wealth of verbs to the 4 already supported in the RESTful API. We stayed very close to the standard WebDAV specification. More importantly, we opened up the file-by-file management support via the API. This introduced one major paradigm shift, which is that you could no longer use PUT in order to create a folder. The required API call to perform that operation is now MKCOL, and you only use PUT to upload files within a file set. If you still want to use the original concept of uploading a ZIP archive containing your application files and a manifest.xml, you can as we still support it, and you have to use POST.
Recap:
|
ZIP archive (as a file set) |
Individual file (*) |
| PUT |
NO |
YES |
| POST |
YES |
NO |
(*) It is important to note that ZIP is also a supported file type for a Silverlight app, so you can POST a ZIP file in an existing file set.
Shortly after MIX '08, we released support for Silverlight 2 applications, which required XAP support of course. However, we still needed you to package the Silverlight XAP file(s) with the manifest.xml in a ZIP file in order to upload it via the admin web site. (BTW, try to say say "ZIP the XAP" 100 times very fast!!)
Last night, we enabled the support for naked XAP upload, meaning you can now directly browse from the Silverlight Streaming admin web site to your Silverlight 2 XAP file and upload it in its original format without packaging it in a ZIP file. It will be accepted directly, without being parsed as an archive (which it is) by Internet Explorer.
Example:
- Go to http://silverlight.live.com and sign in
- Go to "Manage Applications"
- Click on "Upload an application"
- Type a name, e.g. XAP-Upload, then click on "Create"
- Browse to a Silverlight 2 application XAP file, select it, then click on "Upload"
- Upon landing on the "Application Properties" page, click on [Create] in the "Configure this application" section, this creates a default manifest.xml based on the XAP you just uploaded and once you validate the message prompt, it opens the manifest editor.
- You will notice that the Silverlight version and source element have been pre-filled. If this is correct, click on "Update", and you're done!
Finally, you can click on "Launch Application Test Page" which is now available in the "Application Properties" and see what you Silverlight 2 application looks like when running from Silverlight Streaming, before exposing it to the world on your web site or your blog.