Streaming video has come a long way since the famous (in some circles) Severe Tire Damage concert in 1993 (warning: the band is... colorful). There are many (mostly very boring) books on the topic of streaming, but one of the biggest improvements in recent memory is the way in which video is buffered.
Suffering from Buffering
At its heart, video streaming often results in impatience, since you must download a video file to your computer while simultaneously watching it before that download has finished. To avoid stops and starts in the video, some portion of the file has to be downloaded before playback begins. That process is called buffering. The faster your Internet connection is, the less time it takes to buffer enough of the file to avoid jerkiness. Yes, that's a technical term. The more reliable your connection is, the smaller the buffer needs to be. When you view streaming video, even in your Web browser, you're using clever software which calls all the shots on buffering so you don't have to.
So buffering works pretty well if the speed of your Internet connection is constant. But if you're watching a streaming video and your son starts Skype on his tablet to video chat with his girlfriend, you might end up with a paused video and a message to wait patiently. There has to be a better way, right?
One solution to this problem is adaptive bitrate streaming or ABR. There are several flavors of ABR out there but an open standard hasn't really emerged yet. The de facto standard, called HTTP Live Streaming or HLS, was designed by Apple.
With ABR, that big video file you want to watch is saved in multiple resolutions, each one suited to a specific connection speed. Then each of those files is broken down into smaller pieces, each a few seconds long, and stored on a server along with a file that describes where each of those small pieces can be found and how they can be assembled into the full video. When you watch a video using ABR (you probably already have without knowing it), your computer talks to that server and figures out how fast your Internet connection is at that moment. Then it requests the first small chunk of your video in the appropriate resolution (bonus: since it's a small file, your video starts up quicker!). Once it has that file, it analyzes how long it took to download it, re-thinks which resolution is appropriate and grabs the next few seconds of the video. Wash, rinse and repeat! You may see a drop in resolution as you're streaming that video, but it's much less likely to pause and jerk.
Where Can I Get This Amazing Technology?
You're probably already streaming (and buffering) video and using ABR without knowing it, but be sure to look for our next post where we'll compare and rate a number of online video streaming services.