Powered by MSDN

US - English
NEW! Silverlight 5 is available Learn More

Live Streams RSS

16 replies

Last post Jan 09, 2009 10:33 AM by m3taverse

(0)
  • synced

    synced

    Member

    177 Points

    116 Posts

    Live Streams

    May 01, 2007 01:36 PM | LINK

    Good afternoon,

    Please could someone tell me what the capabilities are for Silverlight's live streaming capabilities. We currently have a Flash based solution because we chose Flash Media Server over Windows Media for the following reasons.

    As much as we tinkered with Windows Media, by setting the players buffer to none and setting the encoders buffer to none, we simply could not get the stream to be as real time as we would like. Flash has very real time encoding.

    We understand WMV is a high end codec and because of this superior quality there is a trade off in encoding time. However Flash's real time streaming uses the Spark codec (very fast encoding) oppose to the On2 VP6 codec (very slow encoding). In this situation real time is traded off for video quality. By setting a buffer of 0 on the client we achieve very real time streams.

    Unfortunately with Windows Media this is not possible.

    I would like to hear if this situation is possible in Silverlight. We love the technology however this is a show stopper for us when it comes to real time broadcasting & conferencing solutions.

    Any feedback would be greatly appreciated.

    Thanks and take care.

  • m3taverse

    m3taverse

    Member

    186 Points

    88 Posts

    Re: Live Streams

    May 01, 2007 03:06 PM | LINK

    Windows Media Server has some technologies that will allow you to reduce the latency on your streams by a lot.

    Most notably it has a technology called Advanced Fast Start (only available I think on Windows Enterprise Edition). This is sort of a combination of regular Fast Start (note that normal Fast Start adds to the latency by seconds), a databurst to reduce buffering on the client, in combination with a mechanism that makes clients start playing your stream without waiting for it's buffer to fill. You will also need to encode your streams specifically for this.

    All this together gives you the lowest amount of latency possible, and through your encoding settings you yourself can set the latency/QoS ratio.

    A few comments to make:

    * so far in my own tests I have not been able to get Silverlight to use either Fast Start or Advanced Fast Start. For me it behaves like the old mediaplayer where I get 6-8 seconds of buffering no matter how I configure my server or encode my streams.

    * It is my opinion and experience that you can not reliably use low latency streams on the Internet. This goes for both Flash en Windows Media. Your problem is that if you have viewers all over the world with all sorts of connections, a significant percentage of your users will have serious quality of service issues that translate into periodic buffering. It is also very difficult to scale up streams like these. If I'm doing mission critical streaming that will attract a lot of viewers, I want to use multiple servers that are possibly in different geographical locations. In any technology like this, if I add to my redundancy, I will automatically add to my latency because I've set up my infrastructure in such a way that the stream travels from Encoder to Server to some other Server to the client.

    So IMO low latency streams are great for demo's and relatively small scale and unimportant webcasts, but I personally would never use them on the Internet or for critical webcasts.

  • synced

    synced

    Member

    177 Points

    116 Posts

    Re: Live Streams

    May 01, 2007 06:49 PM | LINK

    Thanks for the reply!

    I did not know about Advanced Fast Start. I hope someone from the Silverlight crew could chime in on if this will be supported, or any other similiar mechanism.

    That being said, the comment about low latency streams not being viable. I think it depends on the content and situation for your stream. I agree webcasts etc do not fit well in this manner because a webcast is pretty useless if the stream is not clear and concise.

    On the other hand, there are situations where quality of stream being a trade off for real time is preferred. In my opinion this should be supported and the person putting on the stream should have this choice to make the trade off rather than having no choice.

    However there are cases where a lower bitrate / frames dropping / audio dropping is acceptable if the network condition is poor to ensure real time rather than the stream getting further delayed over time.

    Flash Media Server is great in this respect. Not only can I develop the server side code to alter this, you can also code the client side end to be dynamic. There are many articles about how to use ActionScript to enable a dynamic buffer where it enables "fast start" but also then further extends the buffer dynamically if the bandwidth is there to surge ahead and fill a larger buffer.

    This is great for enabling real time streams but also allows you to ensure broadcast quality if the bandwidth is available by having an extended buffer so if the connection lowers temporarily you have a buffer available.

    As mentioned since this is all possible programatically the developer can choose their route to take for the streaming solution. Choice is good. I don't like when companies try and assume there is only one use and force a non-flexible technology. This usually ends up making people wanting to do custom uses go another route.

    Let me give an example for our company.

    We love .NET technologies, and Windows Media.
    We don't enjoy developing in Flash & ActionScript.
    We could implement the same technology with WM Player ActiveX, WM Encoder ActiveX, WMS.

    However because the actual streaming aspect isn't very customizable on how it behaves like we can do in ActionScript by dynamically altering buffers, connections, bitrates on the fly etc and do the same in the Flash client side, we had to go this route.

    I am hoping this is different in Silverlight.

    This is also a far stretch but I hope Silverlight sometime in the future supports in the player encoding/streaming out as well. Flash player this is a GREAT advantage. Nobody has to run a stand alone encoding program to stream their video feed etc. We simply leverage Flash's built in capabilities in the player. Although I don't expect Silverlight to do that anytime soon, it would be a great bonus.

    This is just a bonus for now though. First and foremost if it can stream low latency along with WMS somehow and allow us to have the flexibility programatically for what is going on behind the scenes this would be great.

    Wow that was long sorry ;)

    Thanks and take care.

  • m3taverse

    m3taverse

    Member

    186 Points

    88 Posts

    Re: Live Streams

    May 01, 2007 07:44 PM | LINK

    What I think you should do is look at Windows Server 2003 Enterprise, and the Windows Server 2003 R2 SDK.

    The server has the Advanced Fast Start feature built in, and that's specifically designed for low latency streams. There's several articles about it in the SDK, and actually the built in help file for the Media Server gives you pretty much all the info you need. You can have the same low latency that you can achieve with Flash (you have to be sure to read some follow up stuff about how to encode your media). Not being all that familiar with Flash on the client side of things I don't know anything really about how to make a player that adjusts to different scenarios. The Windows Media player has the functionality built in to work with either the low latency streams, Fast Start streams and slow buffer streams. I'm not sure yet if this is supported currently in Silverlight, from my few hours of experience with 1.1 alpha it isn't.

    The reason that you want the SDK and the Enterprise edition is cos only 2003 Server Enterprise supports Windows Media Server plugins. These plugins are easy to make and to debug, all in your favorite .NET language, and give you realtime control over all aspects of your server, and even individual clients (referred to as "players" I believe). I do know a little bit about Flash on the server side, and I can tell you that it does not come close to the power of the Windows Media Server on 2003 Enterprise

  • bryant

    bryant

    Star

    10113 Points

    1662 Posts

    Re: Live Streams

    May 01, 2007 08:59 PM | LINK

    Check out this page in the SDK:

    http://msdn2.microsoft.com/en-us/library/bb412386.aspx

    Streaming

    In addition to progressive downloads, MediaElement supports live and on-demand streaming from a Windows Media Server. If the file URI specifies the mms protocol, the MediaElement attempts to stream the file first. If the file can't be streamed, it downloads the file progressively. If the file URI specifies another protocol, such as http or https, the MediaElement attempts a progressive download first. If that fails, the MediaElement attempts to stream the file.

    Note that live streaming media cannot be paused--calling the Pause method has no effect.

    To find out more about the differences between streaming and progressive downloading, see Key Concepts in Windows Media Technologies.

    streaming

    -- bryant

    Blog | Twitter
    _________________
    Dont forget to click "Mark as Answer" on the post that helped you.
  • gillesk

    gillesk

    Member

    304 Points

    67 Posts

    Re: Live Streams

    May 01, 2007 10:09 PM | LINK

    In the current beta, Silverlight doesn't support fast start or advanced fast start. But looking at your description, I don't know if that will help you at all since fast start doesn't change the number of seconds that the video is buffered, it only allows the video to start more quickly. If you want to get closer to real-time streams, we do provide a BufferingTime property on the MediaElement where you could decrease the amount of buffer that we keep. This should allow you to be much closer to real-time but you will be more succeptible to network hickups and congestion issues.
    Development Lead | Microsoft
  • m3taverse

    m3taverse

    Member

    186 Points

    88 Posts

    Re: Live Streams

    May 02, 2007 12:13 AM | LINK

    With all the focus on video, I bet Fast Start is coming, right? :)

  • vcsjones

    vcsjones

    Member

    72 Points

    18 Posts

    Re: Live Streams

    May 02, 2007 08:59 PM | LINK

    Yes, the RTM of Silverlight will have Fast Start in it.

    Cheers,
           Kevin Jones

  • rmavro

    rmavro

    Member

    26 Points

    18 Posts

    Re: Live Streams

    May 04, 2007 09:29 PM | LINK

    Hi

    While I can get live streams to work, they are very (VERY!) blocky and unwatchable in Silverlight, but perfect in Windows Media Player.  Is there some specific limited profile that must be used for Silverlight?

     /rich

     

    Rich
  • m3taverse

    m3taverse

    Member

    186 Points

    88 Posts

    Re: Live Streams

    May 04, 2007 09:35 PM | LINK

    rmavro

    While I can get live streams to work, they are very (VERY!) blocky and unwatchable in Silverlight, but perfect in Windows Media Player.  Is there some specific limited profile that must be used for Silverlight?
     

    That sounds interesting. Can you provide some more details rmavro?
    What is your current encoding profile, and can you perhaps show some screenshots of what it looks like?
    I wouldn;t mind looking at the actual stream if possible.
    Perhaps you're just missing the Windows Media fuzzy filter that attempts to hide encoding artifacts.