The online video delivery experience
When delivering online videos there are generally two distinct ways to do it. HTTP Progressive Download or Streaming. You may assume that all videos are streaming, but you’ll be surprised to know that most aren’t.
So what are these two methods? How do they differ? What are the advantages and disadvantages of both? Why would I want to use one method over another?
All web servers are capable of progressive download. This is merely the method of a video file being delivered via HTTP to a browser. This is similar to someone downloading a file from your website. In fact the video is delivered in the same manner that an image, a CSS, a JS, PDF, or any other file on your web site is.
The real difference is that media players can begin to show the video while it’s downloading. For example, a FLV file being delivered via HTTP Progressive download will begin to play in your Flash Player as soon as a little bit of data is received by the browser. The same is true for Windows Media files. Quick Time will wait until the entire file is downloaded before it plays, unless the QuickTime player on the PC/Mac is set for progressive play. So be careful when posting QuickTime videos.
It’s quite obvious when a video is being delivered via HTTP Progressive Download. You will typically see the little status bar grow as the video downloads. You won’t be able to move the scrubber button past the amount that has downloaded already. This makes it impossible to jump to the end of the video before that portion has downloaded. If you have a slow web server or limited bandwidth or the end user is on a slow Internet connection, then it’s possible for the end user to notice buffering.
Buffering occurs when the download can’t stay ahead of video. The video will stop while it downloads more. If you pause the video and it allow to download a large portion, then you can watch the video uninterrupted. In either case, this is a poor end user experience, this is when you would consider using a CDN.
There is a technology called Psuedo or Seek streaming. This method utilized TCP/IP Range Requests to allow the user to jump to any portion of the video and the player will make a range request of the file to download that portion. This method is usually only for FLV videos and requires special services, or servers and custom Flash players to function.
When a video is delivered via HTTP, it is actually downloaded to the end users computer. This is good and bad. It’s good because if the person watches the video again, it’s already cached on their computer. It’s bad because it makes it extremely easy for someone to steal your content.
Finally, if someone only watches the first minute of your video but doesn’t stop the download, the browser will download the whole file and you will pay for the delivery of the file even though the person didn’t watch the whole thing.
Streaming video requires access to a streaming media server. Some servers are Flash Media Server, Wowza Media Server, Windows Media Server, Darwin Media Server (QuickTime), Real Media Server. These servers usually require licensing and may cost several thousands of dollars.
Some well known streaming protocols are RTMP, RTSP, and MMS.
When a video streams, it is being sent via UDP protocol to a player on the end users compter. The user will have the ability to fast forward or rewind the video. The video isn’t being downloaded to the end users computer so it is less likely that the content will be stolen. Also if the user only watches 5 minutes of a 30 minute video, then you only pay for the delivery of 5 minutes, not the whole video.
The biggest disadvantage of streaming over progressive download is if the user watches the same video over and over you will pay for the delivery of it each time. Videos are also streamed at what ever bit rate they are encoded at. Keep this in mind when creating HD quality video. 8Mbps video may sound and look great, but most homes can’t sustain an 8Mbps connection. If you have really high bit rate video, consider delivering via HTTP.
Most web hosting providers or Content Delivery Networks (CDN) will have streaming media servers available to use. Historically, Flash video was more expensive to deliver than other forms. Recently prices have compressed and you will find that it costs ProstaStream about the same to deliver Flash or Windows Media files. In the past I would have said if your video is more than 10 minutes in length deliver it via Stream and less do progressive. Since prices have come down, I would consider streaming for any length video since streaming typically begins to play faster than progressive.
If you are looking at using a service such as a CDN or Cloud Computing and they say you can stream your videos, confirm with their tech support that they are utilizing a streaming server and not just offering bandwidth.
If you are delivering Flash videos, then you should be delivering via RTMP or RTMPE protocol for streaming and http for progressive. Windows Media uses either MMS or RTSP. Quicktime and Real Media use RTSP.
I hope you find this article of interest? This is a good guide to help you through deciding to use streaming delivery of videos or HTTP Progressive Download.