Welcome back to our 7th and second last appointment with our Streaming Introduction Mini-Series, and the Streaming Technologies. You may say: ”Hey! What is the deal with WMS Streaming, RTSP Streaming, ShoutCast, IceCast and so on?” You’re right indeed , my Reader, we are going to leave all other Streaming Formats/Technologies/Protocols out of this introductory Series for some god reasons: it is intended to be an Introduction to Streaming and therefore covers only the main, 2015 approaches to Streaming ; if we covered all ways to Stream content we’d easily end up writing into next year; to the sake of Streaming Consultancy and as it pertains to CDNs Support of it, above mentioned Streaming approaches are considered “Legacy” nowadays or are supported in a very limited fashion; last but not least, we’ll be happy to cover them in a future, more in-depth technical Series of Articles on Streaming Consultancy and so , please, bear with us until then.
Back to today’s favourite of ours, Progressive Downloads concludes our journey – begun 6 Articles ago – around the Approaches to Streaming, and anticipates our next Article which instead will cover some typical Security Profiles associated to Streaming. For although Progressive Downloads concludes our Formats’ speculation, it is indeed the oldest, Open Source approach to Streaming, leveraging HTTP‘s 206 support fro Byte Range requests. Without further ado, let us have a dive into it.
Progressive Downloads aka Pseudo Streaming aka HTTP Progressive Streaming
We are living in a world of broadband. Is this statement true? Probably yes if you are living in a technologically “advanced” Country. But there is still a large part of this globe which survives on the old modem. Let’s assume that we are not really interested in that part of the world. Still, Progressive Download is a Technology which needs to be understood due to several reasons. So, let’s look at what this technology is all about.
The Basics of Video Streaming
This is a great opportunity to have a close look at Video Streaming in general. First we must understand the difference between an analog and digital signal. An analog signal is the raw video footage you take with an ordinary video recorder. Analog is a lossless recording media since all aspects of the video are captured. This raw analog data or video has to be converted into digital data or video.
The question you may ask is “why cannot we transmit analog signals?” The bandwidth of an analog signal is very high and therefore it cannot be transmitted over normal cable or wire. This bandwidth has to be reduced to – say – 600 or700 kbps, in order to be transmitted. Earlier in the modem days, the bandwidth was actually 28.8 or even 14.4 kbps. Only broadband allows transmission at higher rates. This is where Progressive Download or Streaming comes into being.
To convert analog data to a digital signal we need something called CODEC – Coder and Decoder. There are thousands of Codecs in the market. The process of conversion from analog to digital by a Codec is called compression. The quality of the video comes down in this process, which is called sampling. Before we proceed further, let us remind you that a CODEC actually consists of two parts – one is the Encoder or coder which is present at the distribution end. This Encoder transforms Media Files into desired Formats as required for their digital transmission. The other part of CODEC is the Decoder which is available at the End User or Player’s end. Obviously, you will be using a CODEC which both ends understand in terms of encoding / decoding it.
There are two simultaneous events occurring at the Encoder’s end which reduce the output bandwidth as a consequence. The first is the Frame Rate. Usually, an analog signal or video is sampled at 25 -30 Frames Per Second (FPS , not to be confused with “First Person Shooters” for the gamer). This Frame Rate produces a continuous, uninterrupted Stream of video. As discussed earlier, this Frame Rate consumes bandwidth. An Encoder generally – though not necessarily – rates down frames to around 15 (as of lately, we increasingly come across video at a faster frame rate of 24 fps). The second aspect of the Encoder’s job is to reduce the size of video. For example, a 720×480 (pixels) video may be reduced to 360×240 Resolution. Reduction in Frame Rate and Resolution results in a video which requires smaller bandwidth for transmission.
At the Decoder’s end, the End User has to make sure that he watches the video at 360×240 Resolution; otherwise he will view a “pixelated” video. This should hopefully make sense. What have we achieved by doing all this? We have enabled Viewers with access to limited bandwidth to view large sized videos (in terms of time duration). Now let us consider another scenario. Our End User or Viewer wants to watch a video with higher resolution, say 640×480 but has limited bandwidth. How do we manage to satisfy this customer? This is where we take resort of Progressive Download.
Having understood the basics of Video transmission through the Internet channel, it will be easier to grasp the mechanics of Progressive Downloads. This “technology” is quite simple: you have a variety of videos, at different resolutions which are available for download as video files on a HTTP Server. When a request is made for a particular Video File, it is sent across to the player at a single Bitrate. The HTTP Server has to simply send the video file without any knowledge of the Player or End User’s environment. For a Webmaster wanting to keep it simple with technology, Progressive Streaming would be therefore ideal. At the Receiver’s end, you only need a basic Player which has the relevant codec to playback the video. It’s just like downloading any file – like a .pdf for example.
Advantages and disadvantages
As a result, even those with slow Internet Connectivity can watch videos with Progressive Downloads. That’s the reason why YouTube used an advanced version of Progressive Download till last year. One of the disadvantages of using this technology is that the video asset can be downloaded to a hard disk. So, how do those who provide Videos, Films or Movies on Demand deal with it? Netflix has a monthly subscription for example. Members can watch Movies for that month and thereafter have to pay again. Now, if Netflix used Progressive Downloads, such a Business Model would not be possible for obvious reasons.
Pseudo Streaming aka HTTP Progressive Streaming
If you use Progressive Downloads as a Video delivery technology, you may have to wait till the entire file is downloaded. To circumvent this problem, Pseudo Streaming (also known as HTTP Progressive Streaming) is used. Unlike with plain Downloads, you can start viewing the video even before it is fully downloaded. In a way, the video behaves as if it were streamed. This is made possible because the downloaded Media is preceded by Metadata and, as mentioned in the beginning of our Article, seeking back and forth in the Video is allowed by leveraging HTTP 206‘s Byte Range Requests and Partial OK Responses by the Server upstream: you want to jump from minute 3 to minute 54 of your favourite Movie? You ask the Server for the relevant portion of Bytes to resume your playback from.
Progressive Download enjoys the benefit of both Streaming and traditional download. In case of Progressive Download, End Users can download Videos or Media even though they may not have the necessary bandwidth or resources. The only limitation is that End Users have to wait till a portion of the Media is downloaded and buffered. Due to this reason many big Online Media Entities like YouTube opted for this Technology. It should be noted that last year YouTube moved to Adaptive Streaming. This is because they feel that their viewers now have faster internet connections.
Another advantage of HTTP Progressive Downloads is that you need a simple and ordinary Web Server to store and stream Media. You save on expenses and also avoid complex technical issues. Overall, Progressive Download is still a good bet for Broadcasters with limited resources and know-how. Original article can be found here.