HTTP Streaming: What You Need to Know
[This article originally appeared in the 2010 Streaming Media Sourcebook.]
In the world of streaming, there are many terms that create confusion, starting with the word "streaming," which is often used interchangeably with the term "progressive download." Even the words codec, format, system, and wrapper/container are often used interchangeably, albeit incorrectly.
Of all of the terms, though, the one that seems to have the most uncertainty around it is HTTP streaming. As recently as 2007, the term was easily dismissed as a mistake because HTTP was a protocol that allowed content to be routed through port 80 while streaming often required a separate port.
In the past 2 years, however, HTTP streaming has become a reality, both for live and on-demand content. It is now, in turn, often confused with another technology that can accompany HTTP streaming—adaptive bitrate streaming.
In this article, I’ll address the differences between HTTP streaming, generic streaming, and progressive downloads. I’ll also touch a bit on adaptive bitrate technologies, even though these technologies are a bit nascent and several of the major players have yet to fully firm up the technologies’ integration into HTTP streaming.
Defining HTTP Streaming
As such, a set of definitions is in order from the outset. First, let’s look at progressive downloads, streaming media, and hybrid solutions.
A progressive download is a pre-encoded file that has been set to begin playing prior to the completion of the full download. In the old days, a file would completely download before it began playing, which meant the user had to wait several minutes (or hours) before he or she could watch the video.
The reason for the confusion of progressive downloading with streaming is that progressive downloaded file playback behaves somewhat like a streaming file, in that it often begins playing within 3–10 seconds of the time the file is selected. Streaming often requires a buffer, as does progressive downloading, to address network inconsistencies; playback begins only after an initial playback buffer is loaded.
With streaming, a user can click on any location along a file’s timeline and begin to watch the video after a few seconds of buffering. Progressive downloads, on the other hand, require the file to be downloaded linearly, meaning that a user’s bandwidth may constrain the user from jumping ahead several minutes, at least until that portion of the video file has been downloaded.
To address this limitation in progressive downloads and to allow commands such as fast-forward, rewind, pause, or location seek, some progressive download solutions offer "trick mode" requests that will divert downloading to the portion of the file that the user has requested. To do this, the file needs to be segmented, which we’ll later see is critical to the development of adaptive bitrate streaming and HTTP streaming delivery.
Unlike progressive downloads, which can often be downloaded from an HTTP server just as a PDF document can be delivered via HTTP, streaming content has, until now, required the use of a separate protocol to deliver streaming packets.
The long-standard real-time protocol (RTP), which was used by videoconferencing and voice-over-IP solutions, was joined by a companion, streaming-specific protocol (RTSP) as a way to differentiate traffic from HTTP content, which most often used port 80 and was not as time-sensitive as streaming content. Unfortunately, the use of a port other than port 80 for streaming also meant it was easily identified, which in turn meant that streaming content could be blocked at the router by IT departments intent on keeping streaming content from "damaging" their network.
Besides the trick modes previously mentioned, there is another innovation in streaming that allows content to be rapidly launched. Known as "fast start" or "hinting," this rapid streaming innovation allowed the streaming server to allow the player to begin playback without a buffer, almost guaranteeing that streaming content would begin playing back faster than progressive download content.