![]() |
How to Stream Video |
Creating, digitizing and streaming video is an extremely complex process. The following is a vastly oversimplified outline of how to stream video. If you decide to actually do this, be prepared to spend MANY hours, lots of money (on a fast PC with a HUGE hard drive) and suffer through multiple system crashes.
Video content can be created through traditional means such as a camera, camcorder or VCR. However, the type of film and the filming technique will greatly affect the clarity of the resulting video stream.
The resulting video must be transformed into a digital file. This is accomplished by using a computer equipped with a video capture card installed. The VCR, camcorder or other video device is connected directly to the capture card via standard RCA cords or S-video cords. An S-Video connection will give you better quality. Video editing software such as Adobe Premiere can be used to run the capture card, and edit the resulting file.
Video can be captured in a number of ways, and each setting will effect the ultimate quality of the resulting video. Some settings work better than others with various encoding methods (see next step). Furthermore, capture cards often perform their own hardware compression which may or may not work well with the encoder you choose.
The resulting digitized video file is far too big to transmit over the Internet. The file must altered to reduce it's size. There are many software packages that use different algorithms to accomplish this task. Once encoded, the files are usually only viewable on the player associated with the encoding software vendor. Some of the leading encoders include; Real Video, Vivo, VDO and Streamworks.
Most encoders provide numerous options for encoding at various speeds, levels of image quality and smoothness of motion. At this point it is really a zero-sum game; better resolution means fewer frames per second and vice versa. Setting a higher transmission rate vastly improves both image quality and fps.
There is no "best" way to encode video. It depends on content of the video (animation, fast motion, talking head) and the upper limit of transmission speed that is available. Most articles recommend encoding several ways, and viewing the results on a control PC.
Once the video files are created, they must somehow be served to clients. The simplest method is to download the entire video file, and then view it with a plug-in or helper application. "Raw" video files are typically quite large, however, and the user is not able to begin viewing the video until the entire file has been downloaded. An example of this method would be a Windows Movie (.avi) file.
A second technique is often called pseudo-streaming. This technique allows for playback as soon as enough data has been downloaded to fill a playback buffer. The required size of the buffer is dependent on the overall quality of the video, the speed of the connection, and in some cases the length of the video. The object is to maintain some data in the buffer at all times, to prevent disruption of the video playback. One example of this technique are Vivo encoded files (.viv). The Apple Quicktime plug-in also allows psuedo-streaming for regular Quicktime (.mov) files.
The last technique, aside from analog methods, is "true" streaming. Like pseudo-streaming, the viewer software maintains a buffer of data, which it uses to playback without having to download the entire file. Typically the encoding software greatly reduces the file size of the original video. The technique then takes advantage of a specialized server (which works in conjunction with a web server) to manage the stream of video between the server and the client. The server can dynamically modify the rate of transmission based on network congestion and other factors, greatly improving the quality of the delivered video. This also allows the user to "skip ahead" to a later portion of video, without needing to download the earlier portion. An example of this technique would be Real Video (.rm) files served by a Real Video server.
Mark Koyanagi is currently completing his masters thesis at the School of Information and Library Science, University of North Carolina at Chapel Hill. His resume can be found at: http://ils.unc.edu/~koyam/resume.html.