Code Quick Start
If you just want to get right into the code, check out these directories
Otherwise, read on for a little more detail.
The ManagedMediaHelpers projects are a set of classes for working with and learning about Silverlight's MediaStreamSource which allows media developers to ignore the media container and transport mechanism.
You may wonder -- why would anyone want to do this?
For one thing, having access to elementary streams means that developers can now implement scenarios that other solutions haven't necessarily provided thus far. One example of this is adaptive streaming or multi-bitrate support as was seen during the 2008 Olympics and which is available with IIS's SmoothStreaming
For another reason, having access to elementary streams allows developers to implement scenarios that the Silverlight runtime hasn't had a chance to implement yet or that the runtime might not be able to implement in the same timeframe that a developer wants it. Examples of this could be, RTSP:T protocol support, SHOUTcast protocol support, seamless audio looping, ID3 v1 and ID3 v2 metadata support, and many other scenarios.
Finally, having access to an object which takes elementary data (video frames and audio samples) gives developers a chance to explore and learn about some of the upper layers of media technologies without worrying about setting up lots of underlying scaffolding and the headaches and context that can entail.
How is this project structured
This solution consists of 9 projects with varying extensions.
You can look at these from a platform centric POV . . .
- .Desktop builds against .NET Framework
- .Phone builds against Windows Phone 7
- .SL4 builds against Silverlight
. . . or a purpose centric POV.
- Demo live apps for WP7 or Silverlight showing the MediaStreamSource in action
- Test test project for the MediaParsers
- MediaParsers Utility classes, common media classes, and mp3 specific data conversion
- Mp3MediaStreamSource The core class that handles reading a media stream and parsing it as Mp3 content
Tools used to create the project
This code is released under the Microsoft Public License (Ms-PL). See License.txt for a complete copy of the license.
(c) Copyright 2008 Larry Olson
Changes to support duration and streaming (i.e. non-seekable) content
(c) Copyright 2010 Rdio.