John McGowan's AVI Overview: AVI and the Worldwide Web

Effective Use of Video on a Web Page

The limited bandwidth of the Internet is the bane of effective use of video on a Web page. Video clips on a Web page need to be small. Even then downloading a video clip can take several minutes, hours over a 28.8 modem to someone's home. The longer the wait, the better the video should be! FIRST AND FOREMOST, tell a story!!! A video clip without a story is usually boring. A story can be told in 30 seconds, the duration of many television advertisements. Some stories can be told in less time. Because of the bandwidth limitations of the Internet, even 30 seconds is a big file, several megabytes. Characters, human personalities, sell. Sex sells. Violence sells. Talking heads (your company's CEO saying "Welcome to our great Web Site") tend to be boring. USE AUDIO! Sound makes a world of difference. Use base, lower frequencies in the soundtrack. Human beings are more sensitive to low frequency sound. A soundtrack with more base tends to sound "better" to most people. Most computer speakers are very cheap and don't reproduce high frequencies well anyway. You will likely cheat on higher frequencies to reduce bandwidth use by the audio as well. TECHNICAL ISSUES For widest distribution and ease of viewing: Provide video clips as AVI using the Cinepak codec. For maximum distribution, also provide flattened QuickTime files again using the Cinepak codec; these can be played on both PC's with QuickTime for Windows and on Macs. Provide MPEG-1 clips as well. Give the size of the video file in KBytes or MBytes in text as part of the link to the video file. This way the viewer can estimate how long it will take to download the file if they wish to. If you use less standard codecs or file formats to get smaller file sizes, provide links to download the needed viewers or codecs. Provide the AVI's with less standard codecs (e.g. VDOWave from VDONet) in addition to Cinepak versions. Don't omit the Cinepak versions. VIDEO ACCEPTABILITY Video encoded at less than 15 frames per second usually looks very jerky to human viewers, like a slide show rather than smooth motion. Most viewers seem to perceive some jerkiness in 15 frame per second video. The transition to smooth motion occurs somewhere in the range 15-17 frames per second. If motion is limited, frame rates below 15 may look acceptable, although often not. The early motion picture industry standardized on 16 frame per second film, which seemed to provide smooth motion in most cases. This appears to be the origin of the folklore in video engineering that 16 frames per second is the transition to smooth motion. Modern film uses 24 frames per second. Image resolutions should be 320x240 or larger. In some cases, smaller sizes such as 160x120 may work. In general, most viewers find sizes smaller than 320x240 too small. DO NOT COMPRESS the video so much that unnatural artifacts such as blocking occur. In general loss of fine details appears natural to human viewers. This corresponds to changes in natural viewing conditions such as viewing an object at a distance or in poor lighting. Unnatural artifacts such as visible 4x4 pixel blocks or 8x8 pixel blocks jump out at most viewers and destroy the illusion of a natural image. AUDIO DISTRIBUTION For AVI, sound codecs aren't very standard. Avoid using audio compression, especially more exotic codecs. ADPCM may be ok. Again, if you use an audio codec, make sure to include a link on your Web site to download the codec. If possible, provide a version of the AVI without special audio codecs (and Cinepak video). AUDIO ACCEPTABILITY Uncompressed audio takes space. You ALMOST NEVER need to use the 44 KHz sampling rate. At most, use 22 KHz sample rate. Many people cannot hear the frequencies above 11 KHz (the sample rate is twice the highest frequency that the sampled audio data can represent faithfully). People who can hear frequencies between 11 KHz and 22 KHz are not very sensitive to these frequencies. See if the soundtrack works ok at 11 KHz 8 bit Mono (not Stereo). Use this low quality setting if you can get away with it (often this won't work). NOTE: You can select audio and video codecs, convert the frame rate, convert the audio sampling rate, and resize the video using video editor applications such as Adobe Premiere or VidEdit. See the section on video editors: Video Editors TO REPEAT: TELL A STORY!!! Many video clips in current (7/20/97) use on Web sites are very short, a few seconds, and really don't tell a story. These clips are boring! So are most talking heads (I have one on my Web site and it IS boring). Movie trailers, short television advertisements, etc. illustrate what is needed. If you don't have a story, think seriously about dropping the video. See elsewhere in this overview for information on authoring AVI files and converting to QuickTime and MPEG-1. Return to Top

How to embed an AVI file in a Web Page:

A Simple Hypertext Link

The simplest approach is to use the anchor tag < A HREF="" > A Movie </A> In this instance, clicking on the link will cause the AVI file to be downloaded. The browser recognizes that the AVI file is not an HTML document. Typically, the browser invokes a helper application that can play the AVI file, such as Media Player under Windows 3.1. The movie will appear in a separate window. The browser may have a plug-in that provides support for AVI, in which case the video window will appear embedded in the HTML page. Web browsers such as Netscape and Internet Explorer know how to handle a file through a Content (MIME) type reported by the Web server. For example, the MIME type for AVI files is video/avi. The browser may contain a built-in decoder for this MIME type. For example, JPEG and GIF still image compression decoding and viewing is built into Internet Explorer and Netscape. The browser can be configured to invoke a helper application such as Media Player. Helper applications are invoked as separate applications with their own windows. The browser can be configured to use a "plug-in" instead of a helper application. A "plug-in" is a software component that extends the capabilities of the browser. The "plug-in" handles input and presents output embedded within the page. For example, a video plug-in's decoded video appears within the page, not as a floating window. In the case of a simple hypertext link, a browser with an AVI plugin will jump to a blank page with the AVI video appearing in a rectangle in the upper left corner of the blank page. The video is not embedded in the page with the hypertext link. It is necessary to use the Netscape EMBED HTML tag (see below) to produce a video embedded in the page. Using the EMBED tag is different from using a simple anchor A tag (hyptertext link). If the browser is unable to handle a MIME type (no built-in capability exists and no helper application or plug-in is specified), the browser will present a dialog box asking the user to select an application, save the file to disk, or cancel the operation. In both Internet Explorer and Netscape, the user can configure the browser to use helper applications or plug-ins as desired. Netscape now provides a Netscape plug-in known as LiveVideo to play AVI files. This plug-in should be installed in the \NETSCAPE\PLUGINS directory. For the Windows 3.1 (16 bit) version of Netscape this plug-in is named NPAVI16.DLL. Digigami provides a plug-in for Netscape Navigator (Windows) called CineWeb that adds playback of AVI, QuickTime .MOV, and MPEG files. The URL is:

Microsoft Internet Explorer HTML Syntax

Microsoft's Internet Explorer 2.0 added attributes to the IMG tag that allow for inline video (an AVI file actually embedded in the page rendered by the Web browser). These are the DYNSRC, CONTROLS, START, and LOOP attributes. For example, < IMG DYNSRC="movies/movie.avi" CONTROLS SRC="movies/movie.gif" > This will embed the movie in the page with some simple playback controls for the user to select. Browsers that do not support the DYNSRC attribute will use the SRC attribute and display the image movie.gif instead. Internet Explorer will ignore the SRC attribute. In the Microsoft spirit of a new API every week, Microsoft has added some new tags in Internet Explorer 3.0 and is discouraging use of the IMG tag and DYNSRC attribute. In Internet Explorer 3.0, Microsoft has added support for the Netscape EMBED tag, see the section on HTML for Netscape's LiveVideo below. Microsoft has also added a Microsoft specific OBJECT tag which does essentially the same things as EMBED and is overtly linked with Microsoft's OLE/COM/ActiveX environment. Naturally Microsoft recommends using the OBJECT tag. Unlike Netscape Navigator, Internet Explorer on Windows does not use plug-ins, either from Micrsoft or 3rd parties, to view AVI. Rather it invokes either the Video for Windows media player or the ActiveMovie ActiveX control. If necessary, Internet Explorer is able to effectively embed the applications in the Web page. Microsoft has a copyrighted white paper "File References on HTML Pages" on their Web site that provides a detailed description of referencing AVI files on HTML pages for viewing with Internet Explorer. Since Microsoft reportedly has $9 billion in cash for acquisitions, lawyers, and other fun - and I don't, I will refrain from simply incorporating the document here.

Netscape LiveVideo HTML Syntax

If you hunt around the Netscape Web site you will find the following detailed specification of the HTML syntax for embedding an AVI file in a Web page for use with the LiveVideo Plug-in. LIVEVIDEO SYNTAX DESCRIPTION LiveVideo plays video files in AVI format. (Currently for Windows 95 and NT only.) HTML SYNTAX EMBED - Use this tag to place AVI movies into your Web document. SRC=[URL] - The URL of the source AVI file. AUTOSTART=[TRUE|FALSE] - Setting the value to TRUE allows the AVI movie to begin playing automatically when the Web page is loaded. The default is FALSE. LOOP=[TRUE|FALSE] - Setting the value to TRUE allows the AVI movie to play continuously until the user clicks on the movie to stop it from playing or goes to another page. The default is FALSE. WIDTH=[# PIXELS] - Use this attribute to display the width of the AVI movie. HEIGHT=[# PIXELS] - Use this attribute to display the height of the AVI movie. Standard sizes for movies are 90x120, 120x160, 180x240, and 240x320 (all size references are HEIGHT x WIDTH). These are all standard sizes using the 4:3 aspect ratio. ALIGN=[TOP|BOTTOM|CENTER|BASELINE|LEFT|RIGHT|TEXTTOP|MIDDLE|ABSMIDDLE|ABSB OTTOM] - This attribute tells Netscape Navigator how you want to align text as it flows around the AVI movie. It acts similarly to the IMG tag. JAVA AND JAVASCRIPT FUNCTIONS play() - Starts playing the source file at the current location. stop() - Stops the currently playing video. rewind() - Rewinds the currently loaded video. seek(frame-number) - Sets the current frame of the video to the given frame number. Return to Top

Sending AVI by E-Mail or Network News

The original Internet e-mail system was designed for sending purely text messages using printable 7-bit ASCII codes (byte values from 0 to 127 that represent printable characters). Binary files such as AVI can include non-printing 7-bit ASCII control codes and values higher than 127. These cause problems. The Network News system was built on top of the Internet mail system. Network News postings use the same text format as mail messages with some additional headers for news postings. Network News postings use the same mechanisms to attach or embed binary files such as AVI to the message. There are two main ways to transfer binary files such as AVI by e-mail (and also the Network News system which is derived from e-mail). The older method is UUENCODE. UUENCODE is a utility that translates binary files into printable 7-bit ASCII codes that can be sent safely by e-mail. Simply include the uuencoded file in the body of the e-mail message. The modern method is to use MIME, the Mulipurpose Internet Mail Extensions. This is a standard for adding attachments to Internet e-mail, including binary files such as AVI. MIME supports a number of schemes, notable base64 encoding, to represent binary files as printable 7-bit ASCII characters. See the section on
MIME for more information. More modern e-mail software include built in support for uuencode and MIME. LESS COMMON METHODS btoa btoa (binary to ascii) is another Unix utility for encoding binary files to printable 7-bit ASCII files. btoa is less widely used than UUENCODE. BinHex Another method is to use the Macintosh program BinHex. Like UUENCODE, BinHex translates a binary file into printable 7-bit ASCII codes that can be transferred over mail networks. There are cases of AVI files being BinHex'ed and added to newsgroup postings as text MIME attachments. BinHex 4.0 files are identified by a first line: (This file must be converted with BinHex 4.0) followed by a blank line, followed by a colon, followed by the data. On the PC, (1) WinZip 6.2 (and later versions of WinZIP) can open and decode BinHex encoded files. WinZip 6.2 also opens and decodes uuencoded, XXencoded, and MIME (base64, plain/text, and quoted-printable) files. (2) BinHex'ed files may be decoded using the PCBINHEX utility. For more information on BinHex, see:

Microsoft Internet Mail

In Microsoft's Internet Mail (included in Windows 95 OSR2 for example), click New Message to generate a new e-mail message. Select Insert | File Attachment to add an attachment, for example an AVI file. Select Format | Settings... to choose UUENCODE or MIME. Internet Mail defaults to MIME. One can also select UUENCODE. Internet Mail automates the binary file attachment process. Return to Top

How to Encrypt AVI Files

One option is to use the PGP (Pretty Good Privacy) program. PGP appears to have been developed to encrypt conventional e-mail messages, printable 7-bit ASCII characters which PGP's documentation calls "ASCII-Armored Text". You need to encode binary files such as AVI using a binary to printable 7-bit ASCII encoder such as UUENCODE or BinHex. Then, run PGP on the encoded text. In the case of E-Mail, there is a PGP-MIME standard for encrypted multimedia attachments to e-mail messages. PGP versions exist for Windows, Macintosh, and Unix. PGP includes extensive documentation on its use. PGP at MIT for Non-Commercial Uses Pretty Good Privacy, Inc. Editorial Comment: PGP almost certainly provides excellent protection against most would-be non-governmental codebreakers. PGP also emphasizes the threat of surveillance by the NSA, FBI, and other governmental agencies in its marketing literature, citing apparent efforts by the government to suppress public key cryptography in general and PGP specifically. For example, Phil Zimmerman, the PGP author, was the target of a government investigation relating to PGP. Spy agencies, both foreign and domestic, play such a major role in funding research into cryptography and in most companies and organizations involved in communications security that it is very difficult to know if ANY well-known cryptography algorithms, whether or not obviously associated with the NSA as in DES or the Clipper chip, is secure against these agencies. These agencies might have the sense to appear opposed to the use of an algorithm which they in fact know how to break, to make a high profile but ineffective effort to suppress such an algorithm while quietly dealing with algorithms which they cannot break. Return to Top

MIME types of AVI

MIME stands for Multipurpose Internet Mail Extension. This is a mechanism that was developed to support multimedia and other file type attachments to Internet e-mail. MIME defines MIME types that identify the data type of the attachment. The World Wide Web uses MIME types to identify the data type of files on Web sites. A MIME type consists of a type/subtype, for example image/jpeg for JPEG images. The MIME specification (IETF RFC 2046) specifies a type of video for video images. The specification defines video/mpeg as the MIME type for MPEG video. Beyond this, the MIME specification (IETF RFC 2048) specifies a mechanism for registering MIME types with the Internet Assigned Number Authority (IANA). As of 5/16/97, the following video subtypes were registered with IANA: video/mpeg video/quicktime video/ video/ video/vnd.motorola.videop Thus, AVI has never been officially registered with IANA. To view the complete list of registered MIME types: More than one MIME type appears to be used in practice for AVI files. MIME types used for AVI: video/avi video/msvideo video/x-msvideo Note that according to the MIME specification the prefix "x-" indicates an unregistered, experimental MIME type. For extensive information on MIME, visit The MIME Information Page at: Return to Top

Configuring Web Servers to Handle AVI Files

Web servers are configured to send a MIME type to Web browsers to indicate what to do with a file on the Web site that the browser is viewing. For example, the MIME type image/gif indicates to a browser that it is viewing a GIF file. Web servers must send the AVI MIME type(s) to Web browsers for files installed on the Web site. There are many Web servers. Probably many are automatically configured to send a MIME type for AVI files (files with the extension .avi). The folowing explains how this configuration is done for some of the more popular Web servers.

Apache httpd

The free Apache httpd Web server is one of the most popular (perhaps the most popular) Web server in use (May, 1997). This is a free implementation of the httpd daemon for Unix machines. Apache is frequently run on Sun workstations used as Web servers. By default, Apache httpd looks in a configuration file httpd.conf for directives that configure Apache. One of these directives is AddType AddType video/avi .avi The example above would configure the Apache Web server (the httpd Unix daemon) to send the MIME type video/avi to a Web browser for files with the file extension .avi on the Web site. The Apache httpd daemon includes a command line option -f to override the default httpd.conf file name and file location. The Web administrator can use this to set up an alternative configuration file. Apache allows users to add a file .htaccess in the root directory of their Web site which contains directives such as AddType. In this way individual users may add or override the configuration of the Web server. For example, my Web site did not send the x-world/x-vrml MIME type for .wrl (VRML) files. Netscape with Live3D expected to see this MIME type for VRML "worlds". I created a .htaccess file with addtype x-world/x-vrml .wrl With this, my browser would correctly view VRML files. The same could be done with AVI files. For further information on Apache, see the Apache Web site:

CERN (or W3C) httpd

The CERN httpd is similar to Apache. The CERN httpd defaults to looking in a configuration file /etc/httpd.conf The configuration file contains configuration directives. One of these is AddType AddType .suffix representation encoding [quality] For example: AddType .html text/html 8bit 1.0 Extensive information on the CERN httpd web server, including a user manual, is available at:


The NCSA (National Center for Supercomputer Applications at my alma mater, the University of Illinois at Urbana-Champaign) HTTPd web server is similar to Apache and CERN. NCSA HTTPd looks in a resource configuration file conf/srm.conf (srm for Server Resource Map) You can add AddType configuration directives to this configuration file to add new MIME types or override the default MIME types used by NCSA HTTPd. AddType type/subtype ext1 ext2 ... extn For example: AddType text/plain txt doc or AddType video/avi avi Extensive information on NCSA HTTPd is available at:

Microsoft Internet Information Server

Microsoft Internet Information Server is a server providing HTTP (WWW), FTP, and Gopher services for Windows NT 4.0 Server. IIS handles the mapping from file extensions to MIME types through the Windows NT System Registry. To view and modify the MIME map: 1. Run the Windows NT Registry Editor Regedt32.exe 2. Look in the Windows NT Registry Key (Folder): HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\InetInfo\Parameters\MimeMap 3. The MimeMap Key contains a series of Registry Values (entries) of form: < mime type > , < filename extension > ,, < gopher type > 4. On my IIS server, the sole Registry Value (entry) for avi is: video/x-msvideo,avi,,>:REG_SZ: :REG_SZ: identifies a text string in the Registry editor. The IIS server will send the MIME type video/x-msvideo for files with the extension AVI. IIS also uses the entries: video/x-ms-asf,asf,,5:REG_SZ: video/x-ms-asf,asx,,5:REG_SZ: for the Microsoft Active (or Advanced) Streaming Format files. 5. IIS defaults to treating files as vanilla binary files if they are not explicitly listed in the MIME Map. 6. To add a new MIME type, in the Registry Editor - Select Add Value ... from the Edit menu. - Create a Registry Value of type REG_SZ (for a string) - Enter the MIME type information as above as the NAME of the Registry Value. - Leave the string blank.

Netscape Enterprise Server 3.0

Edit the mime.types file in the server's config directory. This will contains lines of the form: type=video/x-msvideo exts=avi These can also be of the form: type=video/x-msvideo exts=avi,vid,vvv when multiple file extensions map to the same MIME type. The server reads this file to associate the MIME type video/x-msvideo with files with the file extension avi. The Netscape help site is: This includes many articles on the Netscape server including a discussion of MIME types and the mime.types file. Return to Top

AVI and Java

Plans for Java include a collection of Java Media and Communications API's (Application Programmer's Interfaces). These include the Java Media Framework (JMF for short). The first part of JMF is the Java Media Player, an API for synchronization, control, processing and presentation of compressed streaming and stored timed media including video and audio. A public specification for the Java Media Player has been released. According to this the Java Media Players will be designed to support many media types including AVI. A beta release of the JMF software is scheduled for the second quarter of 1997 and may be happening as of 5/15/97 (some rumors at least although I have not seen the software). For further information on Java Media Framework, see: For further information on Java, see the Java site: Return to Top


The Virtual Reality Modeling Language (VRML, often pronounced 'vermal') is the file format standard for 3D multimedia and shared virtual worlds on the Internet. VRML supports a "node" known as a MovieTexture. This allows a video (or movie) to be mapped onto the surface of an object. A MovieTexture node is referenced by the texture field of an Appearance node. Each object has an Appearance node. The VRML MovieTexture node includes a url field. The url field, as the name suggests, is the URL (Uniform Resource Locator) of a video file to map onto the surface of the VRML object. The VRML 2.0 specification requires that this video file must be in either MPEG-1 Systems (audio and video) or MPEG-1 video only format. AVI is not directly supported. It is necessary to convert an AVI file to MPEG-1 format to use the AVI file with VRML. This is VRML 2.0 VRML 97 may be different. For further information on VRML, see the VRML Consortium Web Site. Return to Top

Configuring Netscape Navigator 3.01 to Display AVI Files

The following remarks apply to Netscape Navigator 3.01 for Windows 3.1, Windows 95, and Windows NT 4.0. Netscape Navigator displays .AVI files either through a helper application such as the Microsoft Media Player or a Netscape Plugin that supports AVI playback, such as the Netscape npavi16.dll and npavi32.dll plugins. A helper application is a separate application, executable, that is invoked by the Web browser. The helper application runs as a separate process with its own window or windows. The helper application is not tied to the Web page. A Netscape plugin is a dynamic link library that extends the capabilities of the Netscape Navigator. Typically the plugin will receive control over a region of the Web page displayed by the browser and display its output in that region. The output appears to be embedded in the Web page. To view and configure helper applications, select the General Preferences item from the Options menu of Netscape Navigator. Select the Helpers tab of the General Preferences. Helpers lists registered File types (MIME types), associated actions, and file extensions. Options | General Preferences | Helpers A File Type is a MIME type such as image/gif or video/avi. MIME stands for Multipurpose Internet Mail Extensions. MIME types are a mechanism to identify the data type of multimedia attachments to Internet e-mail messages. MIME types are also used by Web servers to identify to Web browsers the data type of multimedia files such as AVI files on Web sites. An action can be blank, Ask User, Browser, or a helper application such as Media Player (mplayer.exe). The blank action appears to be used in cases where a Plugin is installed and may be used for other cases as well. The Ask User action indicates to pop up a dialog asking the user what to do: save to disk, select an application, or cancel. Browser indicates that the File Type is supported by the browser. For example gif and jpeg decoding is built directly into Netscape Navigator. To view installed plugins, select About Plugins from the Help menu. This produces a listing of installed Plugins. The list has an entry for each currently installed Netscape Plugin. For example: NPAVI32 Dynamic Link Library MIME Type video/msvideo ... other information ... video/x-msvideo ... other information ... is the information presented for Netscape's npavi32.dll plugin in Netscape Navigator 3.0 on Windows NT 4.0 Server (Service Pack 2). Netscape Plugins are dynamic link libraries stored in a plugins directory. For example, \Program Files\Netscape\Navigator\Program\plugins\ Many Netscape plugins including the Netscape AVI plugins (npavi16.dll for 16 bit Windows and npavi32.dll for 32 bit Windows) can be dowloaded from the Netscape Web site. Return to Top

Netscape Navigator Plug-ins to Play AVI Files

Netscape LiveVideo

Netscape Navigator 3.0 includes LiveVideo which supports playback of AVI files on Windows 3.x, Windows 95, and Windows NT platforms. This is implemented through the dynamic link libraries npavi.dll, npavi16.dll, and npavi32.dll. You can download the latest Navigator 3.0 with LiveVideo from Netscape. Netscape also maintains pages with Netscape Plug-Ins, mostly from other companies. These include CineWeb by Digigami and MacZilla by Knowledge Engineering which provide AVI playback. To get to the Audio/Video Plug-Ins page (as of May 15, 1997), go to the Netscape Home Page. There is a graphical text "Get the latest Netscape Software". Underneath this text there is pulldown list of the many Netscape products. This initially reads "Pulldown to select products". Click on this to show the pulldown list (it is very long). Choose "Navigator Plug-Ins". Click on the Product Info icon under the pulldown list. This presents a page for Inline Plug-Ins. Select the Audio/Video option. This brings up a page of audio/video plugins that add support for various audio and video formats. CineWeb by Digigami and MacZilla by Knowledge Engineering are both in this list. These plug-ins are also available directly from their makers.

CineWeb by DigiGami

Digigami produces a Netscape Navigator Plug-in for Windows 95 and Windows NT called CineWeb that provides playback of AVI, QuickTime, and MPEG files.

MacZilla by Knowledge Engineering

MacZilla is a Netscape Plug-in for the Power Macintosh that adds AVI, QuickTime, and MPEG playback. Return to Top

Configuring Internet Explorer 3.0x to Display AVI Files

The following applies to Internet Explorer on Windows 95 and Windows NT 4.0. The information may also work for Windows 3.1 Select the Options item from the View menu of Internet Explorer. Select the Programs tab. Within the Programs sheet, click on the "File Types ..." button. View (menu) | Options (item in menu) | Programs (tab) | File Types ... (button) Internet Explorer 3.0x uses the Windows 95 System Registry or Windows NT System Registry to determine what to do with a file. This is the same mechanism that the Windows 95 or NT 4.0 Desktop uses to determine which application to use when a user double clicks on a file icon. This is achieved through a Content or MIME type "value" (name and data pair) in the registry. See the section on how AVI is handled in Windows 95 for more details. The "File Types ..." brings up a list of file types and associated actions. This can be used to edit and modify the actions. Return to Top

AVI and NetShow

NetShow is a relatively new product from Microsoft for distributing streaming video over the Internet. NetShow includes a NetShow server for Windows NT and NetShow players (both NT and Windows 95). NetShow uses the Active Streaming Format (ASF) for video streams over the Internet. ASF adds time stamps for synchronization, error correction codes, and other features that AVI lacks. The NetShow family of products includes utilities to convert AVI files to ASF files. Microsoft has licensed a number of low bitrate video technologies for NetShow including Vivo's H.263, Iterated Systems/Progressive Networks/RealNetworks RealVideo/ClearVideo fractal codec, and VDONet's VDOWave. Microsoft has purchased VxTreme, possibly the best wavelet based video codec. Microsoft has used their implementation of the uncompleted international standard MPEG-4 for NetShow. NetShow, including the server, is available at the Microsoft Web site. NetShow has a number of components: the NetShow Player, the NetShow Tools, and the NetShow Server. The NetShow Player is a simple client for audio and video playback over networks. The NetShow Tools are a collection of tools and software components for creation of content, especially the ASF files. The NetShow Server is a server that runs under Windows NT for broadcasting audio and video streams over networks. The NetShow 2.0 Player Installation and the NetShow 2.0 Tools Installation both install Video for Windows codecs, the NetShow codecs. Only the NetShow 2.0 Tools codecs appear to support encoding. You must install the NetShow Tools to create AVI or ASF files compressed with the new "low bitrate" NetShow codecs! The NetShow 2.0 Player (Client) Setup installs: Codec Name ( line in SYSTEM.INI ) (Video Codecs) Vivo H.263 decoder/keyed encoder ( ) VDONet VDOWave decoder ( vidc.vdom=vdowave.drv ) Microsoft MPEG-4 decoder ( vidc.mpg4=msscmc32.dll ) ClearVideo decoder ( vidc.ucod=clrviddd.dll ) Duck TrueMotion decoder/keyed encoder (vidc.tr20=tr2032.dll ) (Audio Codecs) Vivo G.723.1 / Siren decoder ( msacm.vivog723=vivog723.acm ) Frauenhofer MPEG Layer III Audio Codec ( msacm.l3acm = l3codeca.acm ) Lernout and Hauspie Audio Codecs ( msacm.lhacm = lhacm.acm ) Voxware MetaSound/MetaVoice decode/keyed encode (msacm.voxacm119=vdk32119.acm) The NetShow 2.0 Tools Setup also installs: (NetShow 2.0 Player Codecs with Encoder) Microsoft H.263 keyed encoder ( vidc.m263=msh263.drv ) The NetShow 2.0 Player Codecs appear to lack the functionality to compress video. While they can be invoked from within some video editing programs such as Asymetrix Digital Video Producer 4.0, they produce uncompressed AVI's. These AVI's list the four character codes for the NetShow codec (such as VDOM for VDOWave) in the AVI Header but not in the video stream header within the AVI file. The video stream header uses the value 0 for the video compression indicating no compression. The NetShow 2.0 Player Codecs are invisible from Microsoft VidEdit 1.1 (Video | Compression Options ... menu selection). I believe this is because VidEdit queries the codecs to determine if they support compression and only lists the codecs that can actually compress video. In contrast, some applications such as Asymetrix Digital Video Producer 4.0 will list all codecs, both those that can compress and those that only decompress. The NetShow 2.0 Tools Codecs can compress video. You can create compressed AVI files with the VDOWave and MPEG-4 codecs from NetShow 2.0 Tools. These are actually compressed and use the VDO four character code or MPEG-4 four character code both in the AVI header and in the video stream header. However, the so-called "keyed encoders" which are Microsoft H.263, Vivo H.263, and Duck TrueMotion, cannot create compressed AVI files if invoked from a Video for Windows video editing application such as Asymetrix Digital Video Producer. The "keyed encoders" appear to be used only for creating Microsoft ASF files compressed with Vivo H.263, Microsoft H.263, or Duck TrueMotion. Microsoft VidEdit 1.1 will list all NetShow 2.0 Tools Codecs under the Video | Compression Options ... menu selection if no AVI file is loaded. Once an AVI file is loaded, some of the NetShow 2.0 Tools Codecs disappear from the list. Other video editors such as Asymetrix Digital Video Producer list all NetShow 2.0 Tools Codecs at all times. NetShow tries to use a real-time Internet Protocol called MMS to transfer video over the Internet. If it cannot use MMS, it will use TCP (Transmission Control Protocol) or HTTP (HyperText Transport Protocol). MMS appears to be a Microsoft proprietary real time protocol and a competitor to RTP (Real Time Protocol) or RTCP (Real Time Control Protocol). The Microsoft NBC Business News channel distributes video over the Internet using these technologies. NetShow also claims to support multicast IP over Networks. I've not personally seen this work. The NetShow 2.0 server administrative user interfaces contain panels for configuring multicast channels. Return to Top

How to convert an AVI file to a Microsoft ASF File?

Microsoft has defined yet another audio/video/multimedia format to support streaming audio and video over the Internet. This is ASF (formerly Active Stream Format and now Advanced Streaming Format). ASF is used for streaming audio/video/multimedia and for stored files. These files have the extension .asf They are used as part of Microsoft's NetShow video server and client over the Internet. The NetShow authoring tools include a DOS command line utilitity: VidToAsf which converts AVI files to ASF files, preserving whatever compression was used. VidToAsf can also convert .mov (QuickTime) files to ASF files. Like AVI, ASF files support many audio and video compression schemes. The NetShow Tools include a Microsoft Windows graphical application called the ASF Real Time Encoder which can also convert AVI and WAV files to ASF files. The ASF Real Time Encoder is installed under Microsoft NetShow in the Start | Programs menu under Windows 95 and Windows NT 4.0 ASF Real Time Encoder For more information including software: Return to Top

Sources of AVI Video Clips on the Web

What good is all this technology without something to watch? Accordingly, some sites with AVI content. The Official Babylon 5 Web Site has a large number of AVI files from the popular science fiction television show. Paul Bauer's Multimedia City contains a large list of sites with video clips. Return to Top

Low Bit Rate AVI for the Web

A major limitation of video on the Web in general and AVI in particular is the limited bandwidth available. Currently most users with Plain Old Telephone Service (POTS) have 28.8 Kbits/second or 33.6 Kbits/second connections to their Internet Service Provider. The new generation of K56Flex and X2 modems from U.S. Robotics and Rockwell may eventually provide 50-60 Kbits/second over tradiational analog telephone lines. A Basic Rate Interface (BRI) ISDN connection provides 128 Kbits/second. Although very high speeds are possible within the LAN's and WAN's of major corporations and other well-endowed organizations, the so-called Intranet, the actual rates achieved over the world wide Internet are generally much less. Not necessarilly better than the rates for POTS or ISDN. For example, currently (7/20/97) a Web browser at NASA Ames Research Center in Mountain View, California can attach to my Web site at an Internet Service Provider in nearby San Jose at a sustained data transfer rate of 15 KBytes/second or 120 Kbits/second. NASA Ames is home to the Federal Internet Exchange (FIX), the government's main switching center for the Internet, for the West Coast of the United States. This is the heart of the Silicon Valley. This is probably much better performance than more outlying parts of the Internet. This gives a sense of the current limitations of the broader Internet. These Internet rates are very low bitrates for video. The prevailing block Discrete Cosine Transform (DCT) based video codecs such as MPEG-1, H.261, and H.263 perform acceptably at 384 Kbits/second but frequently exhibit unnatural artifacts at 128 Kbits/second for 30 frame per second 320x240 pixel video. These block DCT based codecs match or exceed the performance of Cinepak, the reigning king of AVI codecs. Ultimately, faster Internet connections and better codecs will combine to resolve this problem and allow convincing, realistic video over the Internet. In the meantime, Web authors planning to use video must provide highly compressed video at low bitrates. To do this, options are: - Use smaller frame sizes (e.g. 160x120 pixels) - Use lower frame rates (10 - 15 frames per second) - Push the standard codecs such as Cinepak as far as possbile. - Use one of the newer codecs such as: VDOWave Indeo 4.1 H.263 This overview contains a detailed section on the many codecs available for AVI files: Video for Windows Codec Section This overview also has a section on effective video for the Web. Note that there are practical limits on how low resolution, frame rates, and video quality can be pushed before the video becomes ineffective. Effective Video for the Web Return to Top

Limitations of AVI and Video for Windows over Networks

AVI and Video for Windows were developed for playback of audio and video from hard disks and CD-ROMs on personal computers. They are also adequate for downloading a video file from a remote site on the Internet for subsequent playback from the computer's hard drive. They are not well suited for real-time or streaming video playback over networks. This means videoconferencing or broadcast video over networks. The AVI file format lacks time stamps embedded in the audio and video streams. There is no mechanism to resynchronize the audio and video streams if data is lost. In a network, sometimes packets are lost in which case the audio and video playback will lose track of the time. With time stamps, the application can resynchronize the audio and video playback. Microsoft has a new generation of products in the form of the Active/Advanced Streaming Format (ASF), NetShow, NetMeeting (videoconferencing), and ActiveMovie (DirectShow) with improved support for video over networks. Microsoft provides utilities for converting AVI to the new ASF format. Return to Top

Microsoft's Changing Names

Microsoft has an annoying tendency to rename API's, software components, products, and perhaps even entire companies. One has to wonder if this is good marketing or a symptom of politics within the colossus. This has happened to a number of video and video related products, most notably ActiveMovie. List of Changed Names --------------------- Quartz ( original codename for ActiveMovie ) Active Movie 1.0 ( new video software to replace Video for Windows) Active Movie 2.0 ===> DirectShow 2.0 ( March, 1997 ) The change to DirectShow seems analagous to Ford renaming the Mustang the Putt-Putt Mobile in 1967. ASF (Active Streaming Format) (new video file format, to replace AVI?) ASF (Advanced Streaming Format) Active is dropped in Sept. 1997 Somebody doesn't like Active???? (Microsoft's Streaming Video Product) Microsoft NetShow ==> NetShow Services (late 1998?) ==> Windows Media Technologies (new Operating System to replace Windows 95) Memphis ==> Windows 97 ==> Windows 98 Progressive Networks, marketers of RealAudio audio compression for the Internet, was founded by Rob Glaser, a former top executive at Microsoft. In late 1997, Microsoft invested in Progressive Networks, reportedly acquiring an option to acquire 23% of the company. Progressive Networks renamed itself RealNetworks, possibly to improve the prospects of its Initial Public Offering (IPO). Progressive Networks (that was then) RealNetworks (this is now 12/20/97) RealNetworks has licensed and markets Iterated Systems fractal video codec under the name RealVideo. Iterated used to call their video codec ClearVideo. ClearVideo (that was then) RealVideo (this is now 12/20/97) Return to Top

Internet Video Standards and Pseudo-Standards

There are a number of Internet standards and proposed standards for sending video and multimedia over IP based networks. These are mostly described in Internet Engineering Task Force (IETF) Requests For Comments (RFC's). Programmers and others needing the details of the standards and proposed standards can find the RFC's at a variety of on-line RFC repositories such as the Information Sciences Institute: What should you look for? There are thousands of RFC's, most of which do not relate directly to video. Below are some families of protocols used with video and representative RFC's for these families. I have tried to include the most important RFC's. MIME (Multipurpose Internet Mail Extensions) MIME is a protocol for attaching multimedia data such as images, sound, and video to Internet mail. RFC 1521 MIME (Multipurpose Internet Mail Extensions) Part One: Mechanisms for Specifying and Describing the Format of Internet Message Bodies. RFC 1522 MIME (Multipurpose Internet Mail Extensions) Part Two: Message Header Extensions for Non-ASCII Text (why do it only once?) RFC 2045 MIME Part One RFC 2046 MIME Part Two RFC 2047 MIME Part Three RFC 2049 MIME Part Five RTP (Real Time Protocol) RTP is a protocol for insuring timely delivery of "real-time" data such as video. Video frames must be delivered in a timely manner in order to be displayed evenly and periodically. The TCP protocol does not provide this functionality. See the discussion of UDP (User Datagram Protocol) below for more on the limitations of TCP. RFC 1889 RTP: A Transport Protocol for Real-Time Applications RFC 1890 RTP: Profile for Audio and Video Converences with Minimal Control RFC 2029 RTP Payload Format of Sun's CellB Video Encoding RFC 2032 RTP Payload Format for H.261 Video Streams RFC 2035 RTP Payload Format for JPEG-Compressed Video RFC 2038 RTP Payload Format for MPEG1/MPEG2 Video RFC 2190 RTP Payload Format for H.263 Video Streams RFC 2198 RTP Payload for Redundant Audio Data RSVP (Resource Reservation Protocol) The Resource Reservation Protocol guarantees a certain bandwidth to a particular data stream. Video and other "real-time" data typically require a minimum bandwidth consistently for acceptable quality and performance. If the bandwidth is not available, the video skips frames or worse. The original TCP/IP Internet was designed primarily for non "real-time" data, often text such as e-mail messages. With e-mail, if a network becomes congested and it takes a long time to transmit a message, there is little problem. The user's e-mail arrives a little late. In many cases, the user never notices. Real-time video does not have this luxury. RSVP is one possible mechanism to add "Quality of Service" (QoS) to the Internet. RFC 2205 Resource ReSerVation Protocol (RSVP) - Version 1 Functional Spec RFC 2206 RSVP Management Information Base using SMIv2 RFC 2207 RSVP Extensions for IPSEC Data Flows RFC 2210 The Use of RSVP with IETF Integrated Services IETF is reportedly working on a standard for mapping RSVP to Asynchronous Transfer Mode (ATM) Quality of Service (QoS) A number of products supposedly support RSVP. RSVP is not widely used (Nov. 25, 1997) hence some caution is prudent with claims of RSVP support. Products Cisco's Internetwork Operating System (IOS) for Cisco Routers Ascend's GRF Routers Version 12.0 of Bay Networks BayRS Router Microsoft NetMeeting videoconferencing software Intel ProShare videoconferencing software First Beta Version of Microsoft's Windows NT 5.0 Operating System Internet Service Providers (ISP's) GTE Corporation's Internetworking Division (formerly BBN Corporation), a major Internet Service Provider, has a service trial of RSVP. (Nov. 25, 1997) MCI Telecommunications reportedly will enable RSVP on its very-high-bandwidth Backbone Network Service (vBNS) next year (1998). IP Multicast IP packets support so-called "multicast addresses". A multicast address is an an address that represents a group of machines. Machines may dynamically join and leave the multicast group. Multicasting allows simultaneous transmission of a packet to all machines in the group without duplication of the packet. For video data, this allows the equivalent of broadcast channels over a network. For example, a live speech could be sent to one multicast address while a different video program was sent to a different multicast address. A machine joins the appropriate multicast group to receive the "broadcast channel". In principle, multicasting reduces the load that video places on a network since only one packet is sent to multiple viewers. Without multicasting, a separate duplicated packet is sent to each viewer. Ethernet and some other network technologies support multicast in hardware. Ethernet "frames" have multicast Ethernet addresses. Implementing IP multicast on a single Ethernet, a single IP "subnet", is a straightforward mapping from the multicast IP addresses to the Ethernet multicast addresses. IP Multicast becomes quite complex when the machines in the multicast group are located on separate subnets and the IP multicast packets are routed by networks routers. The routers need to know whether a particular subnet contains machines belonging to a particular multicast group. Since machines join and leave the multicast groups over time, the routers must detect these changes to properly route multicast IP packets. Much of the difficulty in IP multicast involves development and implementation of routing protocols for multicast IP packets. Multicast has been implemented on the Internet throught the Multicast Backbone (MBONE) which uses the mrouted daemon to implement the Distance Vector Multicast Routing Protocol (DVMRP). Various video programs such as NASA Space Shuttle mission video, IETF meetings, and other technical conferences are frequently "multicast" over the MBONE. RFC 1112 Host extensions for IP multicasting RFC 1054 Host extensions for IP multicasting Note: RFC's 1112 and 1054 describe the Internet Group Management Protocol (IGMP) for management of multicast groups. RFC 1075 Distance Vector Multicast Routing Protocol RFC 1584 Multicast Extensions to OSPF RFC 2117 Protocol Independent Multicast-Sparse Mode (PIM-SM): Protocol Specification UDP (User Datagram Protocol) UDP is a very simple protocol layered on top of IP. An IP packet contains the IP addresses of the sending and receiving machines on the network. The IP packet has no mechanism to identify separate sending and receiving processes on the machines. UDP adds "ports" which effectively identify sending and receiving processes. An IP address can have many ports. The pair of sending and receiving ports is called a "connection" in the language of TCP/IP. Proprietary and experimental streaming video protocols are usually layered on top of the UDP protocol rather than the TCP (Transmission Control Protocol) protocol. Why UDP instead of TCP? While TCP guarantees delivery of a stream of data, something that IP alone does not, TCP does not guarantee timely delivery of the data. To insure delivery of data, TCP resends a packet if the TCP protocol software does not receive an acknowledgement from the receiver before the TCP retransmission timeout expires. TCP uses an "adaptive retransmission algorithm" that may choose a long timeout when the network is slow. As a result TCP may wait a long time before retransmitting the packet. With video, packets of video data must be delivered quickly to prevent an underflow in the buffer of the receiving video player resulting dropped frames. The video player runs out of video data to display. Video networking protocols implemented with UDP often add a fixed timeout to retransmit packets before the buffer of the receiving video process, the video player, underflows. Such a protocol may also adjust the buffer size to compensate for delays and congestion in the network. RFC 768 User Datagram Protocol Return to Top

© 2000 by John F. McGowan, Ph.D.