Recently we’ve been inundated with a lot of projects at my workplace that involve flash video, and I expect this trend to only increase as time goes on. This has led to a lot of discussions concerning the differences between streaming video and progressive download and there appears to be a lot of confusion about which is the “best” method.

ABC Uses Video Streaming to Deliver Full Episodes of Select Programs

Figure 1. ABC uses video streaming to deliver full episodes of select programs such as Lost.

I’ve noticed a general perception that streaming video is a magic bullet for delivering high quality video. This perception is incorrect as the benefits of streaming have absolutely nothing to do with the visual quality of the video. In fact, if you implement streaming smartly, the quality of the video will probably be worse for some users.

Chris Hock at Adobe presents a pretty thorough breakdown comparing the two methods of delivering video. His article does a great job of explaining the primary differences between the two methods and is well worth the read. However, there are a few details which I think are important which do not receive much attention. Let me start by summarizing the overall differences in the user experience between the two methods, which should help to shed some light on the video quality issue.

Quick Summary of Progressive Download

Anyone who’s viewed movie trailers on the Apple website with quicktime has essentially experienced progressive download. The video can start playing when a user arrives at the site. You will see a load bar on the bottom as the video loads. If the playhead beats out the load bar, the video will pause until enough of the video loads to allow the playhead to continue. A user can choose any quality which is offered (e.g., high, medium, low) no matter what bandwidth they have. High bandwidth users will see the videos almost instantly and have no issues watching the video straight through. Low bandwidth users can still choose the high quality video, but they will need to wait for a portion of the video to load before playing, and the video may pause during playback to allow it to continue loading. The important thing to note is that the video quality for the two users, low and high bandwidth, will be exactly the same. The low bandwidth user will simply hit points where they need to wait for loading.

Quick Summary of Streaming

Streaming video is slightly more complicated. If it is implemented correctly, there will be numerous versions of the flash video. Each one should be compressed differently and will target a key bandwidth profile. For example, there could be a small, heavily compressed version for dial-up users and a large, low compression version for broadband users (and perhaps a few versions in between these two). When a user attempts to view streaming video, flash will detect their bandwidth and stream the appropriate video for their connection speed. This means users on a low bandwidth connection will automatically receive a smaller, lower quality video. With streaming video, bandwidth becomes a limiting factor in the video quality. If you try to send high quality video to a low bandwidth user, the experience will be horrendous. In this scenario, the Flash player winds up in a play-pause-rebuffer play-pause-rebuffer cycle which makes the video unwatchable. On the positive side, users should receive a video quality appropriate to their bandwidth which will eliminate load times, which is one of the primary advantage of streaming.

Rihanna Video on NikeWomen.com

Figure 2. NikeWomen Rockstar Workout uses progressive download to deliver near HD quality video.

Response to Table

The previously mentioned video breakdown article has a very useful table on the last page. This table is a quick overview comparing the differences between the two methods, and I have used this table as a starting point from which to clarify a few details. I have ignored those rows of the table where Adobe indicates that progressive download and streaming are identical, and posted comments concerning those rows where Adobe indicates there are differences.

Startup Time

Adobe indicates that startup time is quicker with streaming video. This may in fact be true. However, I have not found the startup times to be significantly different and I would not factor this into your decision making process.

Seek and Navigation

Adobe’s table indicates that streaming video has superior seek and navigation abilities. This is mostly true, but doesn’t cover the whole story. Adobe’s main point is that progressive video can not seek video segments which have yet to be downloaded, while streaming video can, which is an important factor.

However, if a user is replaying content they’ve already viewed or is jumping forward to content which has already had time to download, progressive download will actually offer a superior user experience. Whenever a streaming video jumps to a different section, it needs to rebuffer. This means every jump to a different segment of streaming video can result in a pause in the video playback. Progressive download allows you to instantly jump to any segment of video which has loaded with no delays and to scrub back and forth across this content, this is not possible with streaming video.

Both streaming and progressive download have their particular advantages and you should base your decision on your needs. If your video is really long, and/or needs to be accessed non-sequentially, you should probably use streaming. If your video is meant to be watched in order, with users only jumping back to replay things they’ve already seen, your content will play just fine with progressive download.

Web Delivery

Progressively downloaded videos are stored in the user’s cache. This gives progressive download the previously described superior seek ability once the content is cached. Because streaming video is not cached, any replay or seeking of a different segment will require the player to rebuffer.

With progressive download, you may experience minor performance issues while the browser writes the video to the cache. There can be occasional stuttering which will go away once the video has completely downloaded. This will only occur if viewing a large video on a fast internet connection on low performance machines. I only experienced this issue in our local testing environment where transfer speeds were ridiculously high. The problem cleared up once the video was served from a remote web server.

Felix has brought up a good point in the comments section. For publishers who want to maintain strict control over their content, streaming offers the advantage that it is extremely difficult to save the viewed content locally. With progressive download, a user can simply retrieve the video content from their cache or download it as a file directly from the web server. With streaming video, saving the content locally is much more difficult. The user would probably need to rely on a screen capture application such as Camtasia and would need a fairly high powered machine to do so successfully. For content providers like ABC who could lose revenue from users viewing content outside of their provided venue, streaming is a more appropriate delivery method.*

Performance

I can’t really speak to this. Our client’s hosting service was well equipped to handle both streaming and progressive download on a large scale, and we did not notice significant performance differences. Your mileage may vary based on your server infrastructure and I’ll leave this to the IT folks to debate.

Video Stream Control

I’m not really sure what Adobe means by this, I’m guessing it’s either in reference to the “Seek and Navigation” issue or the “Live Video” capabilites of the streaming server.

Live Video

If you want live video, you need to stream.

Compatibility

If you need to support Flash 6, you need to stream. Otherwise, this is a non-issue.

What’s Not Listed in the Table

There are a few additional differences not listed in the Adobe table which I think are important considerations when implementing a video solution.

Complexity

Progressive download is easier to setup, and requires no special server side software. If you have access to a web server, you have access to progressive download. Streaming requires special software which needs to be installed on the server.

Cost

Streaming requires additional hosting costs, either as a result of purchasing and managing the server software or from additional fees which must be paid to your hosting provider.

Final Words

My main point in writing this piece was not to argue which method was “better” but to help clarify the situations in which I think each method is the most appropriate. I think the additional costs and complexity associated with streaming video has given it a “premium” aura which has led people to believe it is the best solution for all cases. However, in most of the cases I’ve encountered, progressive download was actually preferable, and should generally be the first option most users should explore. There are special cases which can either only be handled with streaming video, or for which the benefits of streaming really shine. If you are not one of these special cases, you will not reap much benefit from streaming video.

Situations in Which You Should Use Streaming Video

* Added 5 May 2006 based on feedback in comments
** 6 May 2006 – There is another table provided by Adobe (scroll to bottom) which lists out nearly the same conclusions I’ve listed here..