Past and current state of Smooth Streaming Development
16/06/2010 - Update, this info was current
when it first was published, however please note that it
isn't any longer. Both the Smooth Streaming SDK/PDK and the
SMF have had new versions released since this post was
originally published, see more info at
http://www.iis.net/download/SmoothClient and
http://smf.codeplex.com/. I'm hoping to get a post up coverering these new
realeses in the near future.
/Ola
Over the last year, a rather large part of my development
work has included working with
IIS Smooth Streaming, especially in relation to Silverlight.
When I
started looking at Smooth Streaming, about a year ago, there
were not many places around the web where you could find
Smooth streaming development related resources. And although
the pictures is somewhat better today, there’s still not a
whole lot of good material around, so I thought I’d try and
putt together some posts sharing my experiences with
Smooth Streaming
development.
My Smooth Streaming background
About a year ago I started looking at building a solution
for one of our clients, one of the main features, was to
provide a rather large quantity of video material to their
online users. Some of the requirements included, that the
video content had to be “synced” with other content on the
screen. At certain points in the video, other content
needed to change etc. however it also had to work the other
way around. I.e. the video had to be able to respond to
items on the screen being selected, by going to the
corresponding spot in the video. As the client wanted a
highly interactive and rich experience, and video delivery
being such a large part. Silverlight was an natural choice
for the general development technology, however how to
deliver the video content took some consideration. Not
having worked with media on the web previously I set out to
see what the options were.
The options
I quite quickly ran into to trouble, finding that neither of
the two most common approaches
progressive downloads
nor
streaming media
really suited my requirements.
Progressive download, which is in general the most used technique, just
couldn’t provide a rich enough experience, especially when
it comes to start up time and “jumping around” (seeking) in
the video.
Streaming Media
provided a better experience but was still struggling to
provide the level of smooth and rich experience we were
aiming for. Plus the added complexity when it comes to
requirements on servers and configuration for streaming,
also added to making it a not so attractive option.
IIS Smooth Streaming
Luckily I remembered having recently heard about this new
technology Microsoft had released called Smooth Streaming.
After some initial research and tests, it quickly it became
apparent that this was a pretty much perfect fit for what we
needed. Very fast start-up time for the videos, almost
instant seeking, support for markers in the videos and all
of this provided by a free IIS plugin called
IIS Media Services! Granted I never looked at what other companies beside
Microsoft had to offer. A, I’m Working for a company
specialising in the Microsoft stack, and B, once I had done
some initial trials with Smooth Streaming, there was just no
reason to look any further.
The development experience back in the day
The development experience back in those early days, left a
lot to wish for. One of the major reason being that, as I
mentioned earlier, there was almost no resources or
documentation on how to build a Smooth Streaming enabled
Silverlight player, on the web or elsewhere. Eventually
Microsoft released a couple of templates for
Expression Encoder
which were Smooth Streaming enabled. And thanks to a blog
post by Tim Heuer about “Using Expression Encoder templates in your Silverlight
Applications”, I caught on to the fact that I could actually get hold
of the source for those templates. So by looking at that
code and by digging out the classes and libraries from there
that I needed, I eventually managed to get my player going.
I could of course have taken the source from one of the
templates and just re-skinned it, however the template
players included quite a lot of extra functionality and
styles I didn’t need. Which would have added alot of extra
size, to an already rather large xap file. Ripping out all
the things I didn’t need, was an option but seemed like it
would have been as much work as building my own. Anyhow, I
got the player working and skinned as per the design, the
client was duly impressed with the performance of the Smooth
Streaming video delivery and was very happy.
Today’s experience
For quite some time after Smooth Streaming was released, the
development story was pretty much limited to what I just
described, however over last few months, this has changed
quite a bit.
IIS Smooth Streaming Player Development Kit (SSPDK)
It started with Microsoft releasing beta 1 of the “IIS Smooth Streaming Player Development Kit”, which included the “Smooth Streaming Player SDK” in October last year (2009). The “SSPDK” (trust Microsoft when it comes to naming things) includes, a tool called pushencoder for simulating live smooth streaming scenarios, a xap file with a “sample player” built with the SDK and a dll, which once referenced in your project gives you a “Smooth Streaming Media Element” (SSME) control to use instead of the standard Media Element.
The SSME (yes that’s what they’re calling it, see above comment about naming), has quite a lot of both basic and advanced functionality, including DVR capability for Live Smooth streaming and slow motion functionality, as well as fast forward and rewind. It also includes things like logging and ad playback integration, to help you with monetization (making money!).
Beta 2
of the SSPDK was released in January 2010, even though it’s
version 2, it is still very much in beta and it shows. For
one the documentation is till very sparse and if you add the
SSME to a “page” and then open it in Blend, Blend promptly
Crashes (Microsoft.Web.Media.SmoothStreaming.dll,
fileversion 3.0.711.8).
Silverlight Media Framework
Shortly after the SSPDK was released, the Silverlight Media Framework was released for PDC09 in November 2009. The Silverlight Media Framework (SMF) is a Codeplex project under the Microsoft Public License, and it’s built on top of the SSPDK. The SMF codebase has been used for a number of the big Smooth Streaming “Showcase” projects on the web, like Wimbledon, Sunday Night Football on NBCSports, the UEFA Super Cup on Canal+, Roland Garros and the Tour de France on France Télévisions (Source smf.codeplex.com).
Since the initial release, there’s been another release and the current version is 1.1, however the team behind the SMF, only recently announced that they are now working on version 2.
In addition to the functionality provided by the SSME, the SMF also include things like support for markers, the possibility of including external data, alternative language tracks and more.
Plus of course the facts that it doesn’t crash when opened
in blend and that they provide a number of videos and sample
projects to show how to implement the SMF in a number of
common scenarios.
So where does this leave us
Well basically, this leaves us in a heck of a better situation than we had a year ago, the development options are however still somewhat limited. Unless you want to use the source code from the player templates in Encoder, which I would probably only recommend if you pretty much like the template the way it is, and only want to make minor tweaks. The SMF is currently the only reasonably “accessible” option for doing custom Smooth Streaming Development, especially with the current lack of a fully supported Microsoft SDK.
Personally, I think the SMF seems like a very good project
and a good option if you want to do Smooth Streaming
development (disclaimer, I’ve so far only been playing with
it, and not actually used it for any major project),
however the fact that it’s not an official product backed
by Microsoft or any other company, might deter some
people/companies.
I've later been told by people involved with the Smooth
Streaming project at Microsoft, that Microsoft is very much
backing the SMF.
I’m sure that by the time the SSPDK gets out of beta, the
current issues will be fixed and the people who doesn’t want
to or can’t use the SMF, will have a viable option open to
them.
Until next time
With that I think it’s time to wrap this up, I hope that at least someone has made it this far down the page and that you’ve gotten something out of it :-)
Until next time,
Ola