The IIS 7 team launched it’s first public beta of their Smooth Streaming extension.
Alex Zambelli provides a fantastic overview of the the new features in Smooth Streaming and describes its architecture in detail.
There are some really amazing features in Smooth Streaming that I can’t wait to begin to take advantage of. One of the biggest benefits is the ability to edge cache the content using standard networking equipment that exists today. The files are not streamed in the traditional sense, but are actually progressive downloaded in small 2-second chunks via HTTP. This allows each little chunk to be cached independently as though it was just another image or file request. So if someone in your neighborhood already asked for that chunk, it is probably still sitting in some local HTTP cache saving you a long trip back to the originating server.
In addition, the player uses logic to determine the network bandwidth and CPU load on the client machine, and it can choose which 2-second chunk to request next from a list of available files with appropriate bandwidths on the server.
The new file format for Smooth Streaming is based on an open ISO/IEC standard (ISO Base media file format) known as MP4. The MP4 container allows for easy storage of these chunks that are required by Smooth Streaming. You should read Alex’s post to understand the “box” nature of what is known as the “Fragmented MP4 File”. Another thing I like about MP4 is there is lots of room for adding metadata about the “boxes”. These new files also come with new file extensions to learn. The .ismv and .isma files are the new extensions that you will see for these MP4 containers.
One of the even more interesting aspects of Smooth Streaming is the server manifest file and the client manifest files. These are XML files that are hosted along with the MP4 containers to describe the various tracks, available bitrates, and metadata about the files for a given presentation.
The server manifest (*.ism) is based on the SMIL 2.0 spec. The advantage of this XML based manifest file is the ability to easily customize and extend the metadata available, and also the potential to dynamically generate the contents of the manifest for custom application needs.
The use of RESTful Urls in Smooth Streaming makes it possible to seek into a file at a specific fragment using an absolute time value (100 ns units).
Now think about how handy that is, along with the tips from my previous post. You can now seek by SMPTE timecode using my TimeCode class to convert from a SMPTE 29.97 drop frame timecode to an absolute time in seconds, and then pass that to the Smooth Streaming server.
Or you could create an EDL and dynamically generate the client manifest required to play back your edits without requiring a file to be transcoded again. Just send down the modified client manifest with the chunks in the order that you want them played back! All kinds of interesting possibilities.
The best way to download the beta is to use the Web Platform Installer.