Demo Live Streams in Silverlight
Customers that I demonstrate Silverlight to, often ask me about Live Streaming using Silverlight. It is actually pretty trivial to demo a live stream.
To create the live source, all you need is a digital video camera that plugs into either a USB port or the 1394 port on your laptop. Your standard DV Handycam is fine(I have tried my Sony Mini DV successfully) , and so are any of the typical clip-on style video conferencing cameras (like a Microsoft Lifecam). Obviously this provides an SD source – to get HD you will probably have to shell out some more money and get one of the new fangled HD consumer cameras.
You will also need an encoder (either Expression Media Encoder or Windows Media Encoder works fine) and a MediaElement on a page pointing to the URL where the encoder publishes the stream. If you want to get fancy and demonstrate a somewhat more realistic scenario, you can also add Windows Media Services as the streaming service to this mix – I typically use Windows Media Services 2008 running in a VM.
Once you plug in the camera and switch to Live Streaming mode in your encoder, xMedia Encoder or WM Encoder will pick up the camera as both a video and an audio source. Below is a snapshot of xMedia Encoder using my Lifecam as a source.
The default publishing options for xMedia Encoder is to broadcast over port 8080 - make sure you check the Streaming checkbox in the Output tab.
Your MediaElement declaration can look like so:
<MediaElement x:Name="MediaElem" Source="mms://localhost:8080/" AutoPlay="true" Width="800" Height="600" Stretch="Fill"/>
And below is the result - my handsome mug in all its glory :-).
If you want to make the scenario a little bit more realistic, you may want to add a streaming service to the mix. It is highly unlikely that a production environment would allow players to directly connect to an encoder.
I have been pretty successfully using Windows Media Services 2008 on a Windows Server 2008 Enterprise RC0 VM. Once you install Media Services, you will need to add the Streaming Media Server role to the server instance. You will then need to take the following steps to set up Windows Media Server to stream your live content:
- Enable the HTTP Control Protocol on the Media Server. To do that open up the MMC snap-in for the Media Server, navigate to the root node (should be the name of your server), and the Properties tab within. Select the Control Protocol category, select the "WMS HTTP Server Control Protocol" plug-in, and right click "Properties". If you are also running IIS on the same box, make sure to select some other port (other than 80) in the property page.
- Bring up the "Add Publishing Point (Advanced)" wizard (right click on the Publishing Points node), and create a Broadcast pub point, and specify "push:*" as the content location. This allows the encoder to push content to the pub point, and activates the pub point automatically once the encoder starts pushing.
Once you are done, revisit Expression Media Encoder, and change the Streaming settings in the Output tab to publish to the publishing point you just set up, by providing the URL to the publishing point. The URL is of the format https://[Media Server Name]:[Port You Selected]/[Publishing Point Name]. Clicking the Pre Connect button will confirm connection, and may ask for credentials depending on your domain settings. With this out of the way, if you start Encoding, the stream will automatically be pushed to the Publishing Point by Expression Media Encoder.
Your MediaElement declaration can look like so:
<MediaElement x:Name="MediaElem" Source="mms://svr08-mediasvr:49000/SLLiveStream" AutoPlay="true" Width="320" Height="240" Stretch="Fill"/>
And that's all you need to do to get Windows Media Server into the streaming process.
Comments
Anonymous
November 30, 2007
PingBack from http://www.absolutely-people-search.info/?p=1649Anonymous
December 02, 2007
Every little bit helps - thanks (and keep them coming)!Anonymous
January 10, 2008
Can someone remotely access the media stream with an IP address and the port number? Or do you have to use Media Server step that you describe above? DaveAnonymous
January 10, 2008
Yes you can. Whether you choose to use WMS for setting up the streaming backend or not, as long as the stream is available over one of the compliant protocols i.e. http, rtsp or mms Silverlight should be able to access and play the stream.Anonymous
February 02, 2008
This article is very Useful, may I have your email address to know more about live stream with silverlight? Thanks.Anonymous
February 26, 2008
i am not able to connect to my media server by using your format. is there any alternateAnonymous
April 03, 2008
Great post. Right now I'm using Windows Media Services to expose a collection of music. I'm using authentication to protect the media. When I point Silverlight (2 Beta 1) at a protected URI, I get an error. Is there a way to authenticate against a WMS audio/video resource as I do when I point Windows Media Player or Realplayer at it?Anonymous
May 24, 2008
Very helpful information, thanks! How would you go about adding a second video camera source, can you switch between the two with Windows Media Services or do you need additional software/hardware?Anonymous
May 25, 2009
Thank you so much. Your post helped me. I've been trying to stream a live source from WMS and couldn't. But I finally can!Anonymous
May 26, 2009
Hi, I am new to this live streaming. So i dont underlstand completely. Can you send me somthing that may be useful. this is my mail id : shanvm@in.comAnonymous
June 19, 2009
Hi, Thank you for the nice article! Can you please specify where can we find "MMC snap-in for the Media Server". ThanksAnonymous
October 02, 2009
Good information. Currentrly iam working on Smooth Streaming. How to do Live Smooth Streaming using Expression Encoder 3. Could you throw some information on how to generate Live MBR to Media server from Expression Encoder 3. My Mail ID : prasaddamgeti@gmail.comAnonymous
October 02, 2009
I cannot do the same with encoder 2 sp1 and also encoder 3. Its always "Couldnot open media file mms://127.0.0.1:8080/ AG_E_NETWORK_ERROR". Should I try to change some setting in encoder as well as IIS 7 on Vista? ThanksAnonymous
November 03, 2009
Is there any way to remove latency thru Expression Encoder into silverlight? I only need one person in the world at any given time to view the stream from an IP camera so bandwidth is not an issue? Any thoughts on how this could be achieved?Anonymous
July 02, 2010
This is an excellent article. It basically turns USB cameras into IP cameras, which is just waht I was looking for. Thank You for sharing ;-)Anonymous
March 23, 2011
Works really well! Thanks for posting this. Now, I am going to make a SIlverlight App that I can run the feed into.Anonymous
July 18, 2011
Can silverlight support rtsp streaming?? I have a requirement of streaming rtsp live stream - the camera that monitors the store. I want to do it from sharepoint 2010 using silverlight. Any help would be greatly appreciatedAnonymous
April 12, 2012
For implementing Silverlight calls I chose the Ozeki VoIP SIP SDK. Its Mediagateway example ensures communication between two Silverlight clients via a SIP PBX; or communication between a Silverlight client and a SIP telephone/softphone.Anonymous
February 05, 2013
Sir... I want to show live video in my website html or asp.net. Can you please send me code for thisAnonymous
February 05, 2013
Sir... I want to show live video in my website html or asp.net. Can you please send me code for this email: anugula.anil@gmail.comAnonymous
July 17, 2013
I want to show live video in my silverlight5 application. Please send me complete source code for the same example? My email: Ritesh.Singh@bixi.ch