Streaming vs. Downloading Video: Choosing The Right Solution
Delivering From A Web Server
Delivering your video file using a web server is sometimes referred to as "progressive download" or "http streaming". In fact, it's not really streaming at all, but a very simple bulk download of the video file to the viewer's computer. Let's say you have a video file encoded at 200kbps. You place that file on your Web server, and put a link to the file on your web page.
The web server does not know or care that it's a 200kbps video file. It simply pushes the data out to the client as fast as it can. It may appear to be streaming since playback can begin almost immediately. The "progressive download" feature in most media players allows them to begin playing the file as soon as enough data has been downloaded. Of course, you can't fast-forward to the end of the file until the whole file arrives from the server.
If the actual network bandwidth is smaller than the 200kbps that the file is encoded at, then you may have to wait a while before you can begin playing it. But even on a 56kbps connection, the video will look great – you're essentially trading waiting time for video quality. The temporary file is saved to the user's computer, so they can play it again if they want to without having to download it again.
Web servers use HTTP (Hypertext Transport Protocol) to transfer files over the network. One of the features of HTTP is that it operates on top of TCP (Transport Control Protocol), which controls the actual transport of data packets over the network. TCP is optimized for guaranteed delivery of data, regardless of its format or size. For example, if your browser or media player realizes that it's missing a data packet from the server, it will request a resend of that packet. Resend requests take time, take up more bandwidth, and can increase the load on the server and if the network connection is sketchy, you could begin to use more bandwidth for resends than you're using for the video itself! TCP is not designed for efficient real time delivery or careful bandwidth control, but for accurate and reliable delivery of every bit.
Next Page: Delivering From A Streaming Server