The Silverlight Guru
If you've got questions about streaming with Silverlight—or anything related to Windows media video or audio—you've come to the right place. Ben Waggoner is Microsoft's principal video strategist for Silverlight and he's well-known to those who frequent industry conferences and forums. He's the source, and he's happy to address Silverlight questions large or small.
For this series, we'll be fielding Silverlight questions from Streaming Media's readers and from the Streaming Media forums for Ben to answer. If you've got something you'd like help with, post to the forum or, even better, drop us a note at firstname.lastname@example.org, so we can keep surprising Ben with questions he hasn't seen before.
Our first question was mailed in from Lee, with a military address:
I have been using a Bosch video encoder to display video. I am using the VLC application to display a video stream: rtsp://18.104.22.168/file/ It works fine, but I cannot use the video source for MediaElement in Silverlight: I got an error.
Is RTSP supported for Silverlight. If so, how do I get the video using Silverlight 3.0?
"Silverlight doesn't have a native RTSP protocol handler," says Ben. "So generally you can't use an RTSP link in a MediaElement. That doesn't mean you're out of luck, however. There are companies that have built add-ons using the Media Stream Source API in Silverlight, a mechanism for adding support for new file formats, protocols, and codecs. Check out SilverSuite from StreamCoders.com, which seems to have exactly what you need.
Our second question was mailed in from Andreas in Frankfurt:
Does Silverlight offer the possibility to realize a live-TV streaming client which has real DVR functionality (storing streamed video on the hard disk)? Also in the context of encrypted video based on Microsoft DRM and PlayReady? If it's not supported directly, what could be a possible workaround? Is multicast support on the Silverlight roadmap?
DVR functionality is already happening, says Ben. The version of Silverlight being used for major events, such as Wimbledon and the 2010 Winter Olympics supports live DVR functionality. Viewers can rewind and re-watch content that's still in the cache. Silverlight-powered virtual DVDs just launched in the U.K., starting with Harry Potter and the Half-Blood Prince and The Hangover, and they provide the same experience as having the actual discs. Those virtual discs store PlayReady content on the viewers' machine for later playback. "That's all working Silverlight 3 functionality in the current version of the IIS Smooth Streaming software," he says. "We've had DVR functionality working for months for live events."
Windows Media DRM 10 and PlayReady DRM are supported natively in Silverlight. The only twist is that you have to have a PlayReady license server to issue a license. For legacy content designed to be played in the Windows Media Player or for content designed to be played in both the Windows Media Player and in Silverlight, you can use the classic Windows Media DRM and have a single media file that will work in both cases. Older DRM files can be supported in Silverlight and play back without having to be re-encrypted.
Microsoft announced at the IBC conference in September that multicast would be a feature of Silverlight 4.
Our third question comes from Vaclav in the Czech Republic:
We are trying to broadcast two different streams in one Silverlight player. Is it technically possible to synchronize the start (buffering, etc.) of two different streams in some way? We would like to provide two language options for one live video stream. No postproduction is therefore possible.
It sounds like you're trying to serve one video stream with two audio streams, and Ben says that's absolutely possible. That was something the Silverliight team encountered with the virtual DVDs mentioned in answer two, because the movie viewers needed to be able to jump between different language tracks and have everything remain perfectly in sync.
There are timestamps that go in the video and audio streams, and Silverlight can see those to make sure everything is playing at the right time. Do this in Expression by making a full bit rate file as you would a normal Smooth Streaming file. Then, make a second dummy file with video set at the minimum rate allowed and containing only the alternate audio. When you play it back, only that audio will play. You'll need to write some Silverlight player code to tell the player to look at the timestamps and make sure they're synchronized (sadly, there's not yet public code available as a reference). There's a little bit of overhead with this method, 50Kbps, since you'll have the small empty video track riding along. That's because Expression Encoder 3 doesn't support the ability to create an ISMV file without video. "That's something we'll be addressing down the road, as well," says Ben.
Submit your Silverlight questions to Streaming Media’s Formats, Codecs, and Players forum, or send them directly to the author at email@example.com.
This month the guru takes questions on RTSP Streaming in Silverlight, Windows Media Encoder on a Smartphone, and Windows Media Player 12 with Windows Server 2008.