Recent Changes - Search:

Recently Written


edit SideBar


For video players, see Mediaplayers .

For audio, see Audio .

For images, see GraphMediaTech .

For general info on data compression, see Compress .

1.  About

Video is a sort of special since uncompressed video files are rather rare (except some small animations, if this counts as video) because of the enormous size of them (depends of resolutions, 1 minute of movie can well fill 1 GiB !!!) . Video data is usually being compressed on-the-fly just after leaving the camera chip and decompressed just before pushing into the monitor. Therefore, there are few “standalone” video compressors or decompressors, only codecs, used by video apps for compression, conversion, and decompression, and, video editors as standalone apps. Also, video compression is the most “expensive” one (algorithm complexity, CPU and memory requirements).

2.  Codec vs Container

2.1  Packaging video data

Multimedia data, and especially video, are being packaged in 2 “stages”, one is the codec (responsible for making the data small), and a container , responsible for mixing streams (there can be many of them, multiple audio channels for multiple speakers or alternative languages for example), seeking, and storage of additional data (subtitle text, info/© text, …).

2.2  Containers


Container, having several subversions, designed and mostly used to store video using one of the MPEG video codecs (see below), and audio using MP2 or MP3 codec, later also AAC. There are no audio-only MPEG files, rather “raw” MP3 is used (see GraphMediaTech ). There is a MPGSPLIT utility (from 1993, closed source, DOS real mode), allowing to separate some old MPEG video files with sound into a MPEG video-only (MPEG-1 or MPEG-2 codec) file and a MP2 (!!!) or MP3 sound file.


Audio Video Interleave, developed by Micro$oft in 1992, very popular and “universal” , this however can be a big disadvantage: there are several 100 codecs that can be “hidden” inside, including WMV (see below), and additional “new” ones are still being “invented” (mostly for no or very little reason), a “complete” “AVI-player” would have to support all of them. Thus there is no “this one can play AVI” - a player can support the AVI container, plus a subset of existing codecs, for example MPLAYER supports almost all, QV some (MPEG4:YES WMV:NO), and the “toy AVI player” written in QuackBASIC only a few most trivial uncompressed and RLE “codecs” - it won’t play any serious movie. There is no “AVI codec”. More info:… .


Xiph’s container, specified by RFC 3533 from 2003-May, originally designed to store audio data compressed with Vorbis codec, later “added” support for Theora and Dirac video codecs, and FLAC and OPUS audio codecs. There is no “OGG codec”, but “OGG codecs” is occasionally used to say “Xiph’s audio and video codecs”.


Also can be considered as container. … DRM …

Flash / FLV

Designed and used (exclusively ?) for online video services, so-called “embedded” online videos (like “Youtube” or “GoogleVideo”), can be inside SWF (see below) elements. Proprietary, played by proprietary Adobe (was Macromedia in the past) Flash player when viewed online. It can be also isolated and downloaded, and played or processed like other videos using MPLAYER, VLC or FFMPEG2THEORA. See also:… .

Matroska and WebM

Matroska is a reportedly “very well designed” universal container, so competing primarily against AVI. Full-featured players (VLC, MPLAYER) do support it, but despite having been around for years, it has not become very popular. In 2010 the WebM standard was defined, it is actually a “simplified Matroska”, having just one allowed video codec - VP8 and one allowed audio codec - Vorbis, in 2013 it got enhanced allowing also VP9 video and OPUS audio codec.

2.3  Codecs summary

There is a huge number of codecs existing (cca 20 popular and cca 200 total ??). There are of course not that many different video compression algorithms around - various codecs are internally very similar to each other, mostly just hacked H.26xx MPEG :-D - well, the reason for creation of them was most likely to boast with other people’s work, and make them more proprietary. Many do have a “semi-legal” open source implementation in the FFMPEG library, project page: . In fact this library is THE source of codecs for open source, but also some closed source (possible license issues) video software. By now the library decompression support is almost complete, meaning that it supports almost all codecs around, and a videoplayer including the complete library (like MPLAYER or VLC) can play almost every movie, and besides this, there are also compression routines for some popular codecs (free and proprietary) in the library. The problem of video is that most of the codecs and algorithms are covered by patents. This issue has not yet been finally clarified, so far the usage of such patented technology has been just silently tolerated in free and open source software. Usage of some ready-for-use patent-free codec Theora or VP8 (see below) is preferable for new movies. Another catch of video files is that the file extension reports very little or exactly nothing about codecs used, almost any codecs can be hidden behind almost any extension, so for example if a player can play one AVI file it definitely does NOT mean that other AVI files will play as well. There are also some misnamed movies around, for example file extension is WMV but content is in fact MOV - this does not affect usability of the file as long as the used player supports both and is “smart enough” to detect the file format by content.

2.4  List of codecs


Not really a codec. Just “raw” uncompressed video data in “YUV” format (1+1/2 or 2 or 3 bytes per pixel), plus a minimal header. Against its name, it is technically not really related to MPEG - Theora decoders do output it as well. MPLAYER accepts it as source (can play it, or decompose into PNG frames, but possible bug with some dimensions), and supports it as output format (“driver”) as well - can convert almost anything into it.

MPEG / H264 / H265


The first successful and very popular digital video standard ( MPEG = Moving Picture Experts Group ) . Started in 1988, MPEG-1 was finished in 1993, MPEG-2 in 1995, and MPEG-4 started in 1998, but continues evolving and being enhanced, and brings actually a series of codecs, beginning with DivX (now obsolete), the H264 AKA AVC is the latest and most popular now (started 1998, approved 2003-Mar, see H.264/MPEG-4_AVC), the next one is H265 AKA HEVC (started 2004, approved 2013-Jan, see High_Efficiency_Video_Coding). Later codecs compress better (H265 boasts with doubling the compression at same quality compared to H264), but are more complex and need more CPU performance. There is no MPEG-3. Also many of other codecs are more or less based on MPEG. MPEG defines both the container (see above, the “outer” file structure and appropriate extension, MPG or MPEG for this one) and the compression algorithms (includes MP3 audio algorithm, also used separately, see Audio .


There exist open source implementations of decoders and encoders of all MPEG codecs. What should be noted however, since MPEG is the “industry standard”, such code has a high commercial value and therefore it (encoders but also decoders) is frequently very deliberately licensed under the GPL, rather than LGPL or BSD license, excluding its usage in non-GPL projects. Even the latest H265 already had an experimental open source implementation at the time of approval in 2013-Jan.


Nowadays all MPEG files (also H264) can be played in DOS using MPLAYER, additionally DUGL PLAYER (old and 0.50) supports MPEG-1 and MPEG-2, APEG player MPEG-1, Quickview player MPEG-1 and MPEG-4 Divx, and even MPEG-4 H264 (since version 2.60), and DISPLAY old MPEG-1 files.

Legal stuff and patents

The big problem of MPEG are patents: it was designed as a proprietary technology and is covered by many 100′s of patents. Using in open source projects has been sort of tolerated so far (exported responsibility to deal with / pay to the user - but who does actually care :-D ), but the issue is still unresolved. The “MPEG LA” is the “evil” organization not doing any technical work, just managing the patents and prosecuting violators.


This one ( WMV = Windows Media Video ) is recently (since cca 2004) one of the most popular codecs. It is sort of based on MPEG, and uses the WMA codec (also used separately, see above) for audio. WMV unsurprisingly is a highly proprietary closed file format and codec of Micro$oft, supporting (optionally) DRMDigital Restrictions Management ) and is used in the “free” Windows Media Encoder and Windows Movie Maker (Faker :-D), preinstalled on almost every newer PC. WMV codec is used in WMV files, but can also be “hidden” behind other file extension, especially ASF or AVI. There are versions 1, 2 and 3 around and as of end 2006, all of them got “cracked” and are supported (excl. DRM) by FFMPEG library and MPLAYER and VLC players. This actually should not mean that WMV is fine by now: history does not end here and WMV4 will probably come soon and the frustration with closed codecs will continue (or maybe not, Windows 7 “adopted” H264 AKA AVC) - so WMV still should be avoided whenever possible. MPLAYER can play WMV by now (almost) in DOS also. Besides of this, WMV files can be decomposed info frames using MPLAYER, MPXPLAY can “extract” the sound from a WMV file and play it, and WMV can be converted into OGG Theora (with Vorbis sound) using FFMPEG2THEORA.


On the other side, there is the Theora lossy video codec, free, open source and unpatented, project page: . Its popularity is unfortunately still somewhat low, and the only organization visibly preferring it is Wikipedia (see The definitely preferred choice for playing Theora files in DOS in the DUGL player , while the “most classical” DOS player QuickView unfortunately doesn’t support it at all. Also MPLAYER supports it, but old versions are inferior (see below), and APEG player (somewhat outdated) too. In 2008 November, the long awaited version 1.0 of the codec was released. Theora uses “classic” technology (DCT, no wavelet), like all currently popular competitors still do. Its compressing efficiency was slightly worse than some very best proprietary codecs around provide, this “flaw” got “fixed” soon after 1.0 in Theora 1.1 version without breaking compatibility with compliant 1.0 and even pre-1.0 decoders. Regrettably this doesn’t apply to MPLAYER - it’s Theora decoder + OGG parser have been inferior for years, it used to accept “well” the output of old encoders, but was not compliant to the specification from 2004, and got problems with 1.1 encoders, but this has been fixed in 2010–04.

HuffYUV & Lagarith

2 lossless codecs. HuffYUV is older and no longer under development, Lagarith newer, supposed to compress better, slower and “optimized” for 64-bit and multi-CPU systems. Both are GPL’ed and written in C++ using some MMX ASM. Both were originally designed for the messy “Direct Show” / “Windows codec pool” (providing .DLL + .INF ), but the HuffYUV source “leaked” into FFMPEG and became useful on other platforms this way.

Dirac and Snow

2 experimental free and opensource “next generation” wavelet based lossy (Dirac also lossless) codecs, promising better compression at cost of CPU requirements. Not yet ready for use.

VP8 and VP9

… by “On2″ … acquired by Google … released into open source under a BSD license, there should be no patents … compression at least as good as Theora or H264, still fairly fast … specified by RFC6386 “VP8 Data Format and Decoding Guide” from 2011-Nov, see In 2013 VP9 got released, it’s supposed to “beat” the H265 codec. Both VP8 and VP9 intended to be used for WebM (see above).

(VP9 support is now in RayeR ’s DGJPP port of FFMPEG but broken (?) … testers welcome)

Flash / SWF

Media format originally developed by “FutureWave” company in 1995 (??), in 1996 they got “eaten” by “Macromedia”, format becoming very popular after 2000, in 2005 “Macromedia” was eaten by Adobe … so Adobe is the owner by now. This one is NOT really a codec. It can also “look” like a movie, but its origin is mostly artificial (comes from animation software, not from a camera), and provides interactivity and scripting. Movies coming from a camera can also be “included” using the FLV format, see above. SWF is not well supported by any “ordinary” video software, only by Flash decompilers (all proprietary), Macromedia / Adobe Flash Player , and (in development, GPL’ed) players Gnash and SWFdec . MPLAYER can to some degree parse the “outer” structure of some SWF files and play some sound or embedded “genuine” video, it however can’t process the animation, frequently it will whine much when playing SWF. The SWF file format used to be open long ago, then Macromedia decided to “hide” it (was “available” only against an agreement not to use it to develop a player … :-D ), but on 2008-May-01, Adobe reopened (!!) it, however Gnash developers were not very happy about this: “not good enough, we don’t need it anyway” .

3.  Programs


See Mplayer .


Can encode several (MPEG 1/2/4) proprietary codecs (actually had started with them), HuffYUV, Dirac (theoretically ? not yet enabled ? soon ?) and Snow (for years, but still experimental, produces warns about this fact), but not Theora (!!), see also Mplayer . A commandline utility, the usage is regrettably a bit a pain. There are Win32 binaries compiled by Sherpya (also from 2010) usable with HX-DOS (at least 2.16) and DGJPP binaries compiled by Mik (from 2008, regrettably not updated anymore) available.

3.3  APEG

Allegro addon Library + “example” encoder + player , see DevelLibs , Mediaplayers and GallMediaPlyrs . The existing DOS binary regrettably uses obsolete and buggy LibTheora 1.0b2 .


The library can be compiled into a commandline video conversion utility, allows to decode almost any video and encode into many free and proprietary formats. According the the docs, the conversion is being done “as losslessly as possible” - a stream can be just copied into the output container rather than re-encoded. Also Theora output is supported, but doesn’t always work - bug is well known but doesn’t have high priority, better use FFMPEG2THEORA. Includes “FFPLAY”, a minimal video player. There are Win32 binaries compiled by Sherpya (well … from 2010) usable with HX-DOS (at least 2.16), DGJPP binaries compiled by Mik (latest is SVN-r16517 from 2009–01–10, regrettably not updated anymore), DGJPP binaries compiled by RayeR from 2012 to 2014 and Win32 binaries by Zeranoe available.

Version history (see also…Changelog):

  • 2000 - development started
  • … much development, no releases
  • 2009-Mar-10 - version 0.5 - “exceptionally made a release”
  • 2010-Jun-15 - version 0.6
  • 2011-Jun-24 - version 0.8
  • 2011-Dec-11 - version 0.9
  • 2012-Jan-27 - version 0.10 - heh, no 1.0 after 0.9
  • 2012-May-25 - version 0.11
  • 2012-Sep-28 - version 1.0 - wow!
  • 2013-Jan-07 - version 1.1 “Fire Flower” - added OPUS (using external lib) and TAK decoder
  • 2013-Mar-15 - version 1.2 “Magic”
  • 2013-Jul-10 - version 2.0 “Nameless” (added WebP decoding)
  • 2013-Oct-28 - version 2.1 “Fourier” (added OPUS+VP9 in Matroska decoding)
  • 2014-Mar-24 - version 2.2 “Muybridge”
  • 2014-Jun-23 - version 2.2.4
  • 2016-Feb-15 - version 3.0 “Einstein”

3.5  FFMPEG2THEORA - latest is 0.29, not yet including FFMPEG 1.0, from 0.30 only “nightly”

Author provides Win32 binaries, usable with HX-DOS (at least 2.16). Usage is easy, feeding in just the input file name is sufficient, but there are various tuning options available.


Fork of FFMPEG2THEORA, supports both Theora and Dirac video codec as output, versions 0.1 from 2009-Feb and 0.2 from 2011-Apr-24 (based on FFMPEG2THEORA 0.27), works, but no DOS player available to check the result.


editing frames

3.8  MediaInfo

run with HX 2.17 … very good :-)

4.  Online video services (YouTube & Co)

very popular, but …

5.  See also

Edit - History - Print - Recent Changes - Search
Page last modified on August 14, 2016, at 10:06 AM