Movie formats remain one of the remaining areas of information technology where incompatibilities abound, both between different platforms and between applications on the same platform. One problem is the preference certain vendors have for promoting closed formats that only their products can play.
Another relates to the fact that there is often confusion between the distinct concepts of containers and codecs. A container is a specification for the structure of a movie file - for instance, should the audio data follow the video data, or be interleaved with it? Whereas a codec is a specification for how the video or audio data are encoded and/or compressed. Some types of container support many different codecs, while others support only one — and often this 'support' is a policy decision rather than a technological limitation (for instance, with the Linux mencoder program, one can create movies with just about any combination of container and codec; but many of these will refuse to play on Windows and/or Mac OS).
The following sections review the containers and codecs used on mad star for encoding movies. Much of the information is taken from Wikipedia, and links to the appropriate pages are included.
AVI was developed by Microsoft (the acronym stands for Audio Video Interleave), and supports a wide variety of codecs. It is often paired with the DivX codec (see below), although one sometimes comes across older — and more obscure — codecs. A peculiarity of AVI is the embedding of a four-character code (known as a 'fourcc') that identifies the video codec used; in specific cases a given codec can be associated with multiple, equivalent fourcc codes (e.g., DIVX and XVID). An application will sometimes refuse to play an AVI file with a known codec, because the fourcc code is not recognized
MOV was developed by Apple, as the container for their Quicktime media platform. It was subsequently adopted as the container for the MPEG-4 standard, so nowadays it's pretty cross-platform.
MPEG-4 Part 2
MPEG-4 Part 2 is one of the codecs in the MPEG-4 standard. For a movie to call itself an 'MPEG-4' movie, this codec (or H.264, below) should technically be twinned with an MOV/MPEG-4 container. However, a while back some enterprising individuals hacked one of Microsoft's MPEG-4 Part 2 codecs so that it could instead be used inside an AVI container. This established the extremely popular DivX format, which has continued to evolve over subsequent years, and now exists in a proprietary version and an open-source fork known as XviD. I used to favor these formats because of their cross-platform support; however, they suffer from a number of ideosyncracies (especially in regards to PowerPoint support), and so I've switched over to the MPEG-4 Part 2 codec that comes as a standard part of the open-source FFmpeg project. When embedded in AVI containers, this particular codec has the fourcc FMP4.
H.264 / MPEG-4 Part 10
H.264 is a codec designed for very high compression, and was adopted as Part 10 of the MPEG-4 standard.When twinned with the MOV/MPEG-4 container, the resulting movie files are (with a few minor technical differences) what Apple terms 'Quicktime 7'.
This codec relies on run-length encoding to compress video data. It is quite old, and doesn't achieve particularly good compression; however, it does have the advantage that it is supported by just about all platforms.
Often, getting a movie created on one computer to play on another can be quite a headache. The following tips may be of some use in this respect.
- AVI/Microsoft RLE movies should play out of the box.
- AVI/DivX and AVI/XviD movies require installation of one or the other of the codecs. These can be freely downloaded from www.divx.com (DivX — proprietary) and www.xvidmovies.com (XviD — open-source). There rarely a good reason to use the closed-source DivX codec, especially since it inserts a watermark-like logo at the bottom-right of movies. Embedding in PowerPoint works, but with one ideosyncracy: for some strange reason Powerpoint will refuse to embed such a movie if its filename has an .avi extension. For the embedding to work, the file extension must be .mpg.
- AVI/FMP4 and MPEG-4 movies require installation of ffdshow, which is based on the FFmpeg project. Embedding in PowerPoint works without problems.
Mac OS X
- AVI/DivX and AVI/XviD movies require installation of the XviD codec. This can be freely downloaded from www.xvidmovies.com. Embedding in PowerPoint works, but with the opposite ideosyncracy to the Windows case: an AVI/DivX or AVI/XviD movie that has a .mpg extension will cause the Quicktime player to enter a long (possibly limitless loop). However, the movie will play fine if it has an .avi extension.
- AVI/FMP4 movies require installation of Perian, which is based on the FFmpeg project. I haven't tried Perian myself, and therefore can't comment on embedding in PowerPoint.
- MPEG-4 movies will play using Quicktime, which comes as standard in Mac OS X; but an upgrade to version 7.0 or later may be required to play movies using the H.264 codec.
- Just about any combination of containers and codecs will play using mplayer. However, some compilation options might need enabling to support certain codecs (for instance, H.264).