Several years ago, it was unheard of to deliver media content to end users across large distances and at high speeds, while still maintaining quality. But modern technologies and telecommunication facilities have progressed to the point where we can now achieve such goals. For example, the quality of audio and video streaming across the Internet has greatly improved. But despite recent developments in the telecommunication environment, some problems still persist. A major problem with media applications is interactivity and response time to user actions. Media application developers are increasingly interested in infrastructure optimization solutions that help users run such applications more efficiently—especially high-load applications.
Microsoft IIS Media Services seeks to solve these and other problems with media applications on the Internet. IIS Media Services is essentially a set of extensions for Microsoft Internet Information Services (IIS), which is an application server included in Windows Server 2008. Both IIS and IIS Media Services are free products that greatly improve media content delivery to end users. This article explores the development of media applications that use IIS Media Services.
Delivering Media Content to End Users
Before we delve into a discussion of IIS Media Services, let’s look at current approaches to media content delivery. Existing technologies for delivering media content include traditional streaming and progressive download.
Traditional streaming. Traditional streaming is based on constant transfer of an information stream from a server to a client. After a client connects to a source, the server constantly broadcasts a stream for the client. If it’s necessary for the client to control the playing process, the client sends commands to the server to specify particular actions. For example, the client can send the server a command to seek and play for a particular number of seconds, or a command to stop and resume playing. The server receives these commands and alters the stream that is transferring to the client.
This approach undoubtedly has advantages. First, using a traditional data streaming transfer channel is quite effective, because only the portion of the media content that should be played immediately is loaded. Media content that will play later isn’t loaded. Another advantage of this approach is the ability to construct a responsive user interface. Because the data transfer channel is used only to transfer currently playing content, seek or resume operations can be executed in a short period of time. In addition, this approach lets you trace user activity on the server side. As the client sends seek, stop, and resume commands, the server can collect this information for future analysis. Such information can be useful for media content owners.
Traditional streaming also has disadvantages. The main disadvantage of this approach is its complex infrastructure construction. Because each client maintains a connection with the server during the entire video viewing session, the server’s infrastructure organization has certain imposed restrictions. The client/server connection is a limited resource that you must consider separately. Thus, you can’t organize your infrastructure based on the classic web server approach. Moreover, traditional streaming doesn’t let you use existing caching mechanisms.
Progressive download. Progressive download uses an existing web server infrastructure. The progressive download of media content is similar to downloading a file from a web server. However, a client can start playing a file before it's downloaded. The player actually loads part of a file, which begins playing on the client, while the rest of the file is downloading.
Progressive download has several advantages over traditional streaming. The main advantage is the ability to use an existing infrastructure to place content. That is, you can place media content on the Internet using an existing web server via the HTTP protocol. In addition, you can scale a similar solution using already existing mechanisms (for example, HTTP caching).
Nevertheless, progressive download also has a number of disadvantages. Because this approach is similar to a typical file download, buffering comes into play. When a network is fast enough to keep up with playback, buffering is not necessary; however, where factors such as line status, sudden changes in a server's load, or simultaneous downloads on the client side may lead to an unstable bandwidth, buffering becomes absolutely necessary because any moderate drop in connection speed under the amount required by the stream could interrupt the user's viewing experience.
With progressive download it's also impossible to receive the analytical information about a media content viewing. As the player downloads contents as an ordinal file, a server cannot trace what part of the file has been watched. A more serious problem posed by progressive download is excessive traffic consumption. This problem is more common for users with a high-speed Internet connection. With a high-speed connection, a user can download and begin watching a video very quickly. However, if the user stops watching the video after a few seconds, the full download of the file is wasted and the data transfer channel is used inefficiently.
Despite its disadvantages, progressive download is the most popular media transfer technology. The cost of deploying and maintaining a server infrastructure is lower for progressive download than for traditional streaming.