Lately I’ve been spending a lot of time in the Silverlight video space. Both with writing the video chapter for my Silverlight 4 book as well as at work. Creating a basic video player is straight forward (link 1 | link 2), have a button to play, a way to control the volume, a scrubber to show the position of playback, and of course an area to view the video.
Once you get beyond the basic requirements, the “basic video player” becomes very involved. A few questions that will need attention are:
- “How do you handler markers?”
- “How is streaming video handled?”
- “What do you do an an error?”
- “What’s the strategy for buffering?”
- “Can the video player support Smooth Streaming content?” (this is a whole different conversation)
- “How does the video player handle Closed captioning?”
And on and on the list goes. At some point (hopefully in the analysis phase) you should ask is it better to build or buy. If you decide to build, give me a call ;), but before you do I would encourage you to take a look at the following open-source (free) Silverlight video player options. If nothing else, these players are great place to start.
I’ll start off with the three best options, then highlight other projects I am less familiar with.
Silverlight Media Framework (SMF)
This is so much more than a video player, it’s an entire framework. Developed by Vertigo in coordination with Microsoft, SMF has been used on the largest, most watched, Silverlight video players to date. Wimbledon, NFL’s Sunday Night Football, PDC live keynote, and the NBC’s Vancouver Olympics video players, to name a few, all use SMF. To say it’s robust would be an understatement.
Other than the standard video player controls, here are additional highlights of SMF:
- Smooth Streaming support – includes the Microsoft.Web.Media.SmoothStreaming.dll
- Great base classes like MergeableCollection, SimpleEventArgs and ObservableObject
- A light weight data project
- Blendability – the player is easily skinned
- InStream markers
- Bitrate – the ability to show bitrate
For a more detailed list of features, and the code, check out SMF’s site.
Silverlight Video Player
If you have ever watched a video on Channel 9 (if you haven’t check out Silverlight TV) the player being used is this video player. It was developed by Tim Heuer (Microsoft) and Joel Nuebeck (Silverlight MVP). Although SVP does not the feature set the SMF player has, this is still a solid and proven video player. It’s is probably the best option for a standard, light weight, feature rich video player.
Silverlight HyperVideo player (HVP)
A new video player to the scene is the Silverlight Hyper-Video Player (HVP). This offering is from Jesse Liberty (Microsoft) and the Community. Targeting Silverlight 4, HVP takes advantage of the MEF framework and is rooted in best development practices. Although the project is young, there is a lot of traction and Jesse is doing an amazing job of documenting each step. Keep on eye on HVP as this maybe the most scalable offering.
The above three video players I have personally used, dug through the code, and/or evaluated. The following projects I am not as familiar with, but could be possible options for your scenario:
Sharepoint video player - http://svp.codeplex.com/
Silverlight Media Player http://silverlight30.codeplex.com/
xLite player - http://xliteplayer.codeplex.com/