Lets start by explaining the difference between the two prevalent ways to serve up video – streaming video and HTTP download video (there is also “progressive downloading” which is a hybrid of streaming and HTTP download, but I see no compelling reason to use or discuss it).
HTTP download requires you to download a fair amount of the video before it will start playing and in some instances depending on the video format, the entire video has to be downloaded before it will play. HTTP download will generally have a certain amount of buffering even on a high-speed internet connection. With HTTP download, the video player can’t fast-forward to parts of the video that haven’t been downloaded yet. We’ve all seen the buffering bar when watching a video (The darker grey line that shows you how much you’ve actually downloaded). Without streaming you can skip ahead in that grey line, but if you go past the end of the grey line, you are forced to wait for the download to catch up. Like most people, including your surfers, I don’t like waiting.
Streaming video gives you the ability to view a video starting at a point other than at the beginning as well as skipping around in the video without having to wait. Streaming video will also start playing much faster, usually almost immediately. The obvious advantage is the lack of waiting required to view a video. Another advantage to streaming is the ability to stream live events, or webcast. So, given the obvious advantages to streaming video, we’re going to focus on that in this article
There are three components to streaming a video. First, you must have a server deliver the video. Next, there is the player that receives the video and displays it to the viewer and, of course, you have the video itself. All three of these components need to be set up properly in order to stream the video.
So let’s start with video formats. They are, in no particular order:
- Good compression and quality
- Wide compatibility with Windows PCs
- Certain older versions of Windows Media Player may experience playback issues
- Not widely compatible with Mac and Linux
- WMV doesn’t support user interactivity well
- None that I can think of
- Hardly anyone uses RealPlayer anymore, so you would have a very limited audience.
- Excellent compression and quality
- Compatible with all Macs and many PCs
- Cannot contain interactive objects like buttons and textboxes
- Quicktime Player is not installed by default on PCs
- High Quality
- Can contain interactive objects
- Smaller file sizes
- Most computers have the flash plugin by default
- SWF files are limited to 16,000 frames
- Higher quality with smaller file size due to compression
- End user must have Flash Player 9 or higher (which the majority do)
The leading contender of video formats currently is flash video (although H.264 is quickly overtaking Flash due to the DVD level quality it can display). The main reason is that the files it creates are smaller then many of the other video codecs like mpeg or divx. It also supports indexing. Indexing is putting fixed points in the video during the encoding process so you can skip around. This is required for streaming so you actually have a place to start later in the file. Some common tools for encoding a file to flash video are ffmpeg and mencoder (both free). Flvtool2 is usually used to add the indexes after the flash file is created. National Net supports all of these tools and can install them at your request. You can also use on2 which is a company that will encode videos for you or a product like Sony Vegas, which is PC based software that allows you to encode your own videos.
Next comes the server. There are two main protocols for delivering the video. HTTP, which is the traditional delivery method of the internet (if you have a website, you’re using HTTP already) and RTMP which was designed specifically for streaming videos. Both are valid ways to stream, but the difference is that HTTP is usually free while RTMP software tends to be more commercialized and sold by companies like Adobe. Some people claim that the RTMP servers function better but I’m not sure I agree. HTTP servers include apache, nginx and lighttpd. They all require that specific modules be installed in order to read the indexes in the file. Wowza and Adobe Flash Server are just two of many choices for setting up an RMTP server. National Net supports all of these servers as well.
Last we have the players themselves. Web pages, despite our best efforts are still primarily static places. One of the few technologies to come out that allows us to interact dynamically in a web page is shockwave flash. It was making flash be able to play video that gave us the players we see today. Once you embed the flash file in your web page, it becomes a video player and most of them understand how to stream a video. This allows you to skip ahead and watch videos until your heart’s content. A few popular players are jwplayer , flvplayer , flowplayer and Adobe’s own flash player. These are all embedded in your pages and the web browser runs them. Setting up the flash player in your web site is not extremely difficult and each of the players mentioned above come with adequate documentation to assist you in setting up the player in your web site.
Remember, if you don’t like waiting for a movie to play, neither do your surfers, so do them a favor and always be sure to use streaming videos where possible.