IIS7 Live Smooth Streaming using Inlet Spinnaker 7000 with Silverlight
I was lucky to enough to work with this uber cutting edge technology that was used for the Youtube March Madness broadcast. Will post soon on how we were able to make this behemoth work.
After one month of stagnation it’s high time to finally put down the real guide about the Spinnaker 7000.
Some disclaimers
- Was done in a testing environment
- No performance tuning whatsoever
- No further configuration done to both IIS and Spinnaker
- Setup was done in less than 24 hours
- By no means I’m an authority in this subject. If you purchased the Spinnaker Inlet would be able to help you as much as they helped us
IIS.Net pretty much covered a lot of the steps that would get you started on Live Smooth Streaming but unfortunately they didn’t cover using a Spinnaker from Inlet. Last I checked, Inlet doesn’t have one as well. (Package does contain a manual but not as ‘friendly’ as it can potentially be)
This will give you a lowdown on what you would be needing on IIS side and it is essential reading.
http://www.iis.net/extensions/LiveSmoothStreaming
http://learn.iis.net/page.aspx/620/live-smooth-streaming-for-iis-70—getting-started/
http://learn.iis.net/page.aspx/620/live-smooth-streaming-for-iis-70—getting-started#install_samples
Moving on to my guide
Three major steps in the setup.
- Hardware setup - Connecting your camera to the Spinnaker 7000.
- Spinnaker setup page - how to accept input from your camera and audio device using the Spinnaker setup page
- Connecting with IIS 7 - How to setup your publishing points and serving your video out
Remember that the goal of Live Smooth Streaming is to be able to serve different ’streams’ of the same live video depending on your bandwidth. This means you need to setup a number of ’streams’ coming from the same source (I believe this can also come from different sources)
Hardware Setup
The Spinnaker 7000 being designed for high end cameras doesn’t necessarily cater for your normal video cam. If you want to use low end consumer cameras a visit to an electronics shop is required.

Consumer cameras usually have normal VGA connectors
The usual two audio, one video is good enough for this prototype. Spent less than 10USD for the converters.
Spinnaker Setup Page
Now this is where all the fun starts.
Spinnaker requires that you are on the same network as the web server. I simplified everything by giving the machines a static IP. It also works with DHCP if you have that setup.

Button interface
Quite a cumbersome way to setup the appliance. You only have to worry about it once though as you would be using the web console next time.

IP Setup on my prototype
IMPT: Firmware upgrade!
The Spinnaker 7000 is a Windows XP Embedded Appliance. As with devices like this rule of thumb is to always check for firmware upgrades. Also, the interface of Spinnaker is not really award winning. Be sure to start and stop the encoder when changing any values.

As of May the newest firmware version is 4.0.0.8099
I got the firmware from Inlet folks themselves.
You got the firmware and the camera, next is to get the camera to show within Spinnaker.

Check with your camera manual on the output that it has (PAL, NTSC) but as usual, nothing is stopping you from trial and error
You can double check if your video already works by going to the summary page. It has a small preview window at the bottom of the page.
After this you would have to specify how many streams you want to push.
The sample from IIS.Net contains a video that has configurations for different streams. This would be valuable as we setup our own streams.
required reading: http://www.iis.net/media/experiencesmoothstreaming

Setup below shows bit rate croppings and resizing. These were the variables we found on the sample files (bunny video) We tried tweaking the values with common numbers (known common resolution numbers ex. 800 x 600, 1240 x 720 and such) to no avail. The best alternative is to follow the settings of the bunny video. Change the variables depending on the stream and you’ll essentially produce the same results as the bunny video.

You'll be repeating the steps to the different streams
Be sure to save your work. No point in doing it all over again because of a single mistake.

Connecting with IIS7
This would be very much similar to the sample files. Except that the bunny video is using a command line push encoder while you will be using an appliance type.
required reading: http://learn.iis.net/page.aspx/620/live-smooth-streaming-for-iis-70—getting-started#pushencoder


You have to download and install this module. If you’ve been reading the links to IIS.net you would have done so by now.
You’ll see the Live Smooth Streaming Module after installation. On the sites you can then specify the publishing points.
Once you have the above complete, you’ll need to point Spinnaker to the your web server. Of course, you would need to start the publishing point to receive data from the encoder.

Specify the IP of the web server and the publishing point
If you notice we setup two publishing points. One from the Spinnaker and one from the bunny vid. The publishing points are quite sensitive to starting and stopping and we had to follow the sequence quite rigorously.
Once those are up you need to configure your Silverlight app to point to the right publishing point. (codes for this are on the sample file). We also used the Silverlight player from the bunny vid as this contains several interfaces that really highlight the capabilities of Live Smooth Streaming. (Bit rate, FPS, Bit Rate Graph)
End result is

Tadah! Half of my body with erased details ;)
Notice the similar player? Take it from the sample code and you’ll get the same powerful player for yourself.

That’s pretty much it for this guide. Hopefully you’ll find it useful. The are almost no guides like this probably because of the cost of the Spinnaker, but just in case one falls into your lap and you need to set it up fast, the IIS.net guides and this blog post entry would be heaven sent. =)
Thanks for reading and feel free to drop me a note.
~Eugene
davanita
14 May 09 at 8:40 am
geek! :p
hi eugene!
eugene1772
14 May 09 at 4:39 pm
hahah taking advantage of work. hahaha you learn new things along the way. imishuuyuguys!
Birdman
29 Jul 09 at 12:54 pm
Sorry, the pictures are missing? I can see nothing.
admin
29 Jul 09 at 6:11 pm
hi birdman. it works for me.
Birdman
13 Aug 09 at 11:08 am
hi admin, it doesn’t work for me, include IE 7.0/Firefox 3.5, but doesn’t matter.
I have some questions, can you help me? Thanks!
1. The protocol between Spinnaker and IIS should be HTTP, right?
2. How often does the Spinnaker PUSH encoded content to IIS? I think this is the live streamiing lantency.
3. Spinnaker PUSH encoded content to the same file or different file(for example a single file for 10 seconds)? I mean, if push to the same file, for example LiveStreaming.ismv on IIS, the file will become very huge during time elapse.
Thanks again!
admin
13 Aug 09 at 11:53 am
sure man! how can i help?
Birdman
14 Aug 09 at 12:09 am
hi admin:
what’s your meaning? you are not the author or you can not catch my meaning because my poor english? Sorry:)
BTW: i can look the pics in another PC.
admin
14 Aug 09 at 5:26 pm
oppss sorry for that. i was checking your reply at the console and it was truncated. anyways, to answer your question.
1. yes, iirc.
2. push means its constantly sending data to the endpoint
3.depending on the number of streams you have it will write to that file. although i need some clarification on this one as the file itself doesn’t get big but the C: does so i’m not sure if it stores on the file itself or temp. But for sure it does eat up space in the long run.
Birdman
14 Aug 09 at 8:55 pm
Thanks for your reply!
I wander another questions:
1. You said the data is constantly sent from Spinnaker to IIS, then how does the manifest file? is Spinnaker to make it and send to IIS?
2. In live streaming, I think the manifest should be updated frequently, maybe 2s or 10s, so the client could know there are new data to get, right?
3. How does the client know when will reload the manifest? or this is pushed by IIS server?
admin
16 Aug 09 at 11:22 am
Hi Birdman,
Unfortunately I didn’t go into much detail in my implementation. I don’t really know the nitty gritty details. What I can do is redirect you to the IIS7 forums here http://forums.iis.net/1145.aspx I know some of the people who answer are from the product groups themselves and they’ll be able to give you a much detailed answer. Goodluck on your implementation! I’ll be glad to see what you have implemented in the future.
~Eugene
Birdman
18 Aug 09 at 10:08 am
Hi Eugene:
you’re so kindly, thank you very much!
admin
19 Aug 09 at 8:56 am
no problem birdman! hopefully you can share your implementation at the iis forums or here. would love to see how you solve the issues you are facing.