More and more people start to watch video online and people spend more time watching video online. According to ComScore,
In US, 37 billion videos was viewed by 181 million internet users in April 2012.
84.5% US Internet Audiences watch video online.
Each person spends 21.8 hours per month.
This blog is to explain some common video streaming technologies used by major content provider or media channel. If you are curious about streaming technology or you are a developer/content provider who wants to find out more about how to get started, this is the right blog for you.
There are three major streaming technologies used nowadays: Progressive Download, Traditional Streaming and Http-based Adaptive Streaming. I will introduce Progressive download in this blog, Traditional Streaming in Part 2 and Http-based Adaptive Streaming in Part 3.
1. Progressive Download
According to Figure one, this is how progressive download at its early version. Basically any content provider will encode its video and put up in a normal web server (server we use to host HTTP pages, nothing special). And as viewers, we need to know the URL of the video file, and we download the video file into our computer. We could only watch videos while the download is completed.
Since I mentioned “Encode” just now, I would like to explain the concept of Encode in a nut shell.
As showed in figure 2, before putting raw file which is the output from your recording device, you need to compress the video into a format that media player could play, and you will need to choose the right quality. So there are two decisions you need to make here: Video Quality (measured by Bit-Rates) and Video Format.
- Video Quality: the higher the bit-rates, the higher quality your video has. For instance, a 100kbps streaming video is phone-video quality but a 10 mbps streaming video is DVD quality. The higher bit-rates requests you to have higher bandwidth to consume.
- Video format: There are different file types supported by different media player, such as H.264 (MP4), FlashVideo (FLV), QuickTime (QT), Windows Media (WMV) and etc.
You would always want to choose a video format that could be supported by as many as client devices possible. You may ask why can’t I encode videos into all these formats. The answer is simple, encoding is expensive and you have to keep many files for one video.
Later on, progressive download technology also gets improved. Now, you will notice, when you watch video on Youtube for example, you don’t have to wait for the whole video to be downloaded. You could start watching video once the first few seconds gets loaded.
As showed in figure 3 above, the first dark blue bar shows where you watch until and the light blue bar shows how much video you have loaded into your video browser – which is a buffer. Therefore, once the buffer is filled with a few seconds of video, the video will start playing as if you are watching video in a real time.
However, there could be a problem potentially. For instance, you are watching a video for the first 10 minutes. During this 10 minutes, web server continues pushing videos into the buffer and you loaded another 30 minutes of content. However, after this the first 10 minutes, you decide to close the video. You and the content provided both just wasted 30 minutes of bandwidth. However, media channels made a lot of improvements on this, including trying to slow down the speed of video loading, so media player doesn’t keep loading video in the background.
Another character I want to point out for Progressive Download is, when the file start to be served through HTTP, the video quality couldn’t be changed. If you are loading a DVD-quality of video, even though your bandwidth drops, you will still need to wait for high-quality video to get loaded. This clearly isn’t an ideal experience for viewers.
Now, we will move to the second part of this blog: Traditional Streaming.