Microsoft Communities
Ben Waggoner

Ben Waggoner

Total Posts: 73 |
This blog focuses on Silverlight from a media technology perspective. It also covers encoding in supported formats, particularly Windows Media.
Blog.PostedBy: Ben Waggoner | Jul 3rd @ 6:54 PM

Much has been made of our making the Mac a first-class citizen of Silverlight. We build the Mac and Windows versions together, and release them simultaneously. We've intentionally structured Silverlight to minimize dependencies on the underlying hardware and OS, and carry around all our codecs inside the runtime.

What I haven't talked a whole lot about in too long is our support for authoring Silverlight video experiences on the Mac. While our own Expression Encoder 2 is Windows-only, we work with partners to provide WMV and VC-1 encoding on other platform. Telestream has been a great partner here, with their Flip4Mac QuickTime component and their Episode stand-alone compression tool (originally known as Compression Master, and which came along with their acquisition of Popwire).

Flip4Mac is a testament to both the portability of the Windows Media technologies and the flexibility of Apple's QuickTime architecture. It works as a QuickTime component, enabling QuickTime to play Windows Media content like any other supported format, with full access to all of QuickTime's features like hardware accelerated full-screen playback (all supported in the free version). For example, in the QuickTime Pro Properties window:

WMV-Properties

Looks just like any other QuickTime file. Even the ASF metadata shows up.

Flip4Mac also supports content authoring in the paid version, as well as import into content creation apps like Final Cut Pro. It's got pretty deep control, even exposing features like B-Frames that'd take a registry key with Windows Media Encoder.

 

So, how about a quick walkthrough through the Flip4Mac encoding settings?

 

Flip4Mac is accessed like any other exportable format from QuickTime (like MPEG-4). It also comes with a bunch of presets for typical scenarios.

Export-to-Windows-Media

 

It has the normal set of basic video export features you'd expect, nicely Macified. I appreciate the "Size: Current" so I don't have to always type in the frame size of the source when I'm not scaling.

Export-Video

 

The Advanced button reveals some deeper options, including a complexity control for speed/quality tradeoffs and B-Frame distance. You can also set Flip4Mac to deinterlace interlaced sources, or pass interlacing on through to the final encode. Since it can both encode and decode interlaced VC-1, Flip4Mac can be a great way to transfer editable 480i video sources over slow connections. It can match DV quality in 20% the data rate.

Export-Video-Advanced

 

For Silverlight audio, Flip4Mac supports both WMA 9 Standard and 9 Professional. It doesn't encode the 32-96 Kbps WMA 10 Pro low bitrate modes that Silverlight 2 will be able to decode, but does have the full variety of WMA encoding modes.

Export-Audio

 

And the coolest new feature of Flip4Mac: built-in Silverlight templates! This lets you build a complete Silverlight player (using Expression Encoder templates we provided) directly from any app that support QuickTime export.

Export-Silverlight

Blog.PostedBy: Ben Waggoner | Jun 22nd @ 1:25 AM

So, Streaming Media is doing a special "Europe edition" of Streaming Media, and I'm doing an article about webcasting for it. I've getting a bunch of questions about how to deliver low-latency live streaming to Silverlight, and so with their permission, I'm excerpting this section on that topic.

EDIT: A correction was made; turning off Fast Cache in Windows Media Services does not have any effect on webcasting latency.

So, Streaming Media is doing a special "Europe edition" of Streaming Media, and I'm doing an article about webcasting for it. I've getting a bunch of questions about how to deliver low-latency live streaming to Silverlight, and so with their permission, I'm excerpting this section on that topic.

While by default, Windows Media can offer 15-20 second end-to-end delay, it's possible to drive it down to 2-3 seconds with best practices on a good network, and we're looking at what we can do to push it to below even that. The critical thing is to tune the encoder, server, and player latency together.

There's an older but more detailed "Reducing Broadcast Delay" document on this topic over at the Windows Media portal that may be worth perusing.

 

Low Latency Webcasting

Latency is the measure of how much time goes between when video enters the encoder and leave the user display. Latency is something that doesn’t matter at all in some markets, and matters a lot in others.

The reason we have latency is buffering, and the reason we have buffering is for quality and reliability. By having the server wait several seconds after a video stream is received before sending it out, it’s able to support more peaks and valleys in the data rate, and makes it possible for a dropped packet to be detected and resent before its needed. In the same way, buffering in the player lets it average out data rates and recover dropped packets as well.

Large buffers were extremely important in the modem era, and are still useful in many kinds of networks today. The defaults are good for delivering high quality content over a variety of networks. But when minimizing the latency is important, and reliable networks are available, the end to end delay can be reduced substantially.

Since total end-to-end latency is the sum of the encoder latency, server latency, and player latency, plus how long it takes the packets to travel between each of those, improving latency requires tweaks to the encoder, server, and player in parallel.

 

Encoder

On the encoder side, reducing buffer size reduces startup latency. WME and Expression Encoder both enable you to go down to one second.. Using Lookahead or Lookahead Rate Control will increase latency beyond the buffer value (typically about another half a second for LRC).

WME Low Delay setup

For audio, Windows Media includes the “WMA Low Delay” audio codecs from 192-64 Kbps which provide lower latency than the normal WMA modes. If you’re targeting Silverlight 1.0 or WMP 10 or earlier, you’ll want to use that for low latency. If you can require WMP 11 or Silverlight 2, you can use the lower delay yet WMA 10 Pro codec at 32-96 Kbps.

WMA Low Delay

 

Server

WMS features like Advanced Fast Start can dramatically reduce latency for on-demand content, but don’t apply to live webcasting as the server has to wait for content to arrive from the encoder it in real time, and so can only play out at real time.

Server buffering can be turned off entirely in WMS for Windows Server 2003 and 2008, yielding a significant drop in latency.

Disable_buffering

EDIT:

The previous version of this post suggested that turning off Fast Cache would help webcasting latency. On further research, this turns out not to be the case. Disabling Fast Cache will slow down on-demand startup time, but will have no effect one way or the other for live content.

Player

Normally the player isn’t under control of the streamer. By default WMP dynamically picks an optimum buffer size based on its measurements of network and stream performance. However, it’s possible to lower the buffer size in the player’s options. This can help reduce latency when watching streams with a good connection, but could produce pauses in the video when watching video from the general Internet.

Silverlight makes the player buffer size a controllable parameter, so an optimal setting can be applied for the content, and even adjusted on the fly. This is controlled by the BufferingTime parameter in a Silverlight MediaElement.

MediaElement-in-Blend

Blog.PostedBy: Ben Waggoner | Jun 21st @ 2:29 AM

The Silverlight and Expression teams are very customer focused, and we like to release products on a fast cadence. We've got a lot of methods of customer outreach, and I'm happy to share a new one, the Expression Encoder Customer Panel.

David Sayed has all the details over on his blog:

Expression Encoder Customer Panel

Now that Expression Encoder 2 has been released, the team is hard at work on the next version of the product.
We want to be as responsive to community feedback as possible, and would like to set up a panel of customers with whom we can have ongoing conversations.

What is the Customer Panel?

The Customer Panel is a way for us to build strong relationships with users of our product. We'll use it as a way to understand your needs, workflows as well as how you use the product. We'll also use it to float future feature ideas and get feedback on them

What is the time requirement?

The Customer Panel is an ongoing project. The overall impact should be minimal and if at any point you no longer want to participate, just tell us. Typically we'll aim to reach out the Panel every couple of months or so. There may some times when we reach out more frequently.

How is this different to a Technology Adoption Program (TAP)?

TAPs are for specific releases and focus on getting you pre-releases of the software to play with. We'll use the same framework for the Customer Panel, but it is longer lived and goes beyond a particular release. This is an opportunity to have lasting impact on product direction.

OK sign me up!

If you want to take part, please send me an email by clicking here.

Blog.PostedBy: Ben Waggoner | Jun 16th @ 7:31 PM

Max Bloom has written a good article about NBC Universal''s upcoming Olympics broadcasts in Silverlight.

 

Read the article yourself, but here's a few choice quotes from it:

  • "NBCU plans to offer 3,600 hours of live programming from Beijing. That’s 212 live hours for each of the 17 days of the Olympics... In addition to the sheer volume of live content to be delivered—three times what was offered in 2004— what’s notable is that most of NBCU’s live programming—2,200 hours—will be delivered online at NBCOlympics.com."
  • "The 2008 Summer Games in Beijing will mark the arrival of streaming as a viable alternative to the Olympics’ television broadcast. This summer, NBCOlympics.com will offer 4,400 hours of on-demand streaming in addition to its 2,200 hours of live programming, making the Beijing Olympics the most ambitious streaming media project in history."
  • "To help meet that challenge, the NBCOlympics.com player offers a “metadata overlay” feature, which allows the player to display transparent data and navigation tools over the video window. This enables users to access statistics and other data without covering up, pausing, or leaving the primary video display. For example, play-by-play announcers’ dialogue can be keyed into an XML data stream, then rendered as a timecoded, scrolling text caption that transparently overlays the bottom of the video display. The player also enables the TiVo-like experience of pausing, rewinding, and replaying content, and these two features together allow viewers to use either the timecode or the play-by-play captioning to rewind to a specific point in the on-screen action and replay it."
  • "A slew of DRC-Stream software and encoder boards from Canada-based Digital Rapids are being deployed in Beijing to populate NBCOlympics.com’s encoding farm, but other than committing to VC-1, NBCOlympics.com has yet to confirm encoding bitrates, frame rates, or frame sizes. (Without offering more specifics, Miller says NBCOlympics.com will be streaming through a managed bitrate solution to optimize the user’s connection, with a target maximum bitrate of 650KB/sec.) Digital Rapids is also supplying software to enable transcoding from other digital media formats into VC-1.Miller promises hundreds of hours of online HD video..."

Note that there's already a bunch of content up at NBCOlympics.com if you want to get an early taste of what's in store on 8/8/08.

Blog.PostedBy: Ben Waggoner | Jun 7th @ 10:39 AM

After months of hard work, Silverlight 2 Beta 2 and its SDK are now available for download!

 

The best overall description of what's in it is in this post from Scott Guthrie.

 

Media Features in Silverlight 2 Beta 2

Of course, my focus is on the media features. New to Beta 2 is:

Hooks to enable adaptive streaming

Beta2 adds client support for "adaptive streaming" - which enables managed code to be able to pull in media files and streams from arbitrary URLs, and then reassemble them and pass them off to the video and audio decoders. This can enable a whole lot of different ways to address how to make media available, including supporting seamless streaming switching between content encoded at different bitrates. And since this is all running inside managed code, a CDN or content provider can tune the heuristics used to get the optimal content from the optimum server.

While the API is in place, we don't have any full end-to-end demos for how this works at the moment; you'll be seeing a variety of ways to use this technology down the road. Since our API is so flexible, I imagine customers and partners will find all kinds of fun things to do with it.

Content Protection

Beta2 includes client sideWindows Media DRM 10 and PlayReady DRM support.  Both work cross browser and cross platform. Note that WMDRM10 will require a PlayReady license server (available in the coming weeks); existing content will work with Silverlight, but with the new license server.

Server Side Playlists

Beta2 adds improved support for server side playlists on Windows Media Services (previous releases only supported client-side playlists). That's still a feature in development (we are still a beta), so if you have server-side playlists that aren't working as you expect, it'd be great if you could put a link in comments, or email them directly to me so we can see what's going on. Note that web playlists from the IIS 7.0 Media Pack have always been fully supported.

Quality and Performance improvements

While there's no API change here, Beta 2 includes a variety of improvements to both performance and quality (particularly scaling quality) during media playback. Full-screen playback in particular is improved.

 

Windows Media Audio 10 Professional

And don't forget that Silverlight 2 adds support for the WMA 10 Pro codec. This isn't changed from Beta 1, but it's a big improvement compared to the stock WMA in Silverlight 1. WMA 10 Pro in the 32-96 Kbps range is what we call the "LBR" or Low Bit Rate mode, which is up to 2x as efficient as classic WMA. Audio is quite understandable at 32 Kbps, danceable at 48, an flawless at 64-96. Expression Encoder 2 supports the new modes, and Windows Media Player 11 can play them back as well.

For Silverlight 2-only projects, WMA 10 Pro is the codec of choice for any kind of bandwidth constrained content. And, of course, it's supported in Expression Encoder 2.

 

Also, note that, like WMA, WMA 10 Pro also supports 2-pass VBR encoding, which can help quality further when doing progressive download. 48 Kbps average 96 Kbps peak can sound pretty great.

I'll try to get up some A/B comparison demos in the next few days.

Page Navigation