view DOCS/formats.html @ 9129:6ecc0b5c08cb

libgif/libungif based demuxer support for libmpdemux. patch by Joey Parrish <joey@nicewarrior.org>
author arpi
date Tue, 28 Jan 2003 00:12:23 +0000
parents e35d561f002e
children 6cec60a8f506
line wrap: on
line source

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML>

<HEAD>
  <TITLE>Formats - MPlayer - The Movie Player for Linux</TITLE>
  <LINK REL="stylesheet" TYPE="text/css" HREF="default.css">
  <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
</HEAD>

<BODY>


<H2><A NAME="formats">2.1 Supported formats</A></H2>

<P>It is important to clarify a common mistake. When people see a file with a
  <B>.AVI</B> extension, they immediately conclude that it is not an MPEG file. 
  That is not true. At least not entirely. Contrary to popular belief such a
  file <B>can</B> contain MPEG1 video.</P>

<P>You see, a <B>codec</B> is not the same as a <B>file format</B>.<BR>
  Examples of video <B>codecs</B> are: MPEG1, MPEG2, DivX, Indeo5, 3ivx.<BR>
  Examples of file <B>formats</B> are: MPG, AVI, ASF.</P>

<P>In theory, you can put an OpenDivX video and MP3 audio into an <B>MPG</B>
  format file. However, most players will not play it, since they expect MPEG1
  video and MP2 audio (unlike <B>AVI</B>, <B>MPG</B> does not have the
  necessary fields to describe its video and audio streams). Or you might put
  MPEG1 video into an AVI file.
  <A HREF="http://ffmpeg.sourceforge.net">FFmpeg</A> and
  <A HREF="encoding.html">MEncoder</A> can create these files.</P>



<H3><A NAME="video_formats">2.1.1 Video formats</A></H3>


<H4><A NAME="mpeg">2.1.1.1 MPEG files</A></H4>

<P>MPEG files come in different guises:</P>

<UL>
  <LI>MPG: This is the most <B>basic</B> form of the MPEG file formats. It
    contains MPEG1 video, and MP2 (MPEG-1 layer 2) or rarely MP1 audio.</LI>
  <LI>DAT: This is the very same format as MPG with a different extension. It
    is used on <B>Video CD</B>s. Due to the way VCDs are created and Linux is
    designed, DAT files cannot be played nor copied from VCDs as regular files.
    You have to use the <CODE>-vcd</CODE> option to play the Video CD.</LI>
  <LI>VOB: This is the MPEG file format on <B>DVD</B>s. It is the same as MPG,
    plus the capability to contain subtitles or non-MPEG (AC3) audio. It
    contains encoded MPEG2 video and usually AC3 audio, but DTS, MP2 and
    uncompressed LPCM are allowed, too.<BR> <B>Read the <A
    HREF="cd-dvd.html#dvd">DVD section</A>!</B></LI>
</UL>

<P>Series of frames form independent groups in MPEG files. This means that you
  can cut/join an MPEG file with standard file tools (like <CODE>dd</CODE>,
  <CODE>cut</CODE>), and it remains completely functional.</P>

<P>One important feature of MPGs is that they have a field to describe the
  aspect ratio of the video stream within. For example SVCDs have 480x480
  resolution video, and in the header that field is set to 4:3, so that it is
  played at 640x480. AVI files do not have this field, so they have to be
  rescaled during encoding or played with the <CODE>-aspect</CODE> option.</P>


<H4><A NAME="avi">2.1.1.2 AVI files</A></H4>

<P>Designed by Microsoft, <B>AVI (Audio Video Interleaved)</B> is a widespread
  multipurpose format currently used mostly for DivX and DivX4 video. It has
  many known drawbacks and shortcomings (for example in streaming). It
  supports one video stream and 0 to 99 audio streams. File size is limited to
  2GB, but there exists an extension allowing bigger files called
  <B>OpenDMS</B>. Microsoft currently strongly discourages its use and
  encourages ASF/WMV. Not that anybody cares.</P>

<P>There is a hack that allows AVI files to contain an Ogg Vorbis audio
  stream, but makes them incompatible with standard AVI. MPlayer
  supports playing these files. Seeking is also implemented but severely
  hampered by badly encoded files with confusing headers. Unfortunately the
  only encoder currently capable of creating these files, NanDub, has this
  problem.</P>

<P><B>Note:</B> DV cameras create raw DV streams that DV grabbing utilities
  convert to two different types of AVI files. The AVI will then contain either
  separate audio and video streams that MPlayer can play or the raw DV
  stream for which support is under development.</P>

<P>There are two kinds of AVI files:</P>
<UL>
  <LI><B>Interleaved:</B> Audio and video content is interleaved. This is the
    standard usage. Recommended and mostly used. Some tools create 
    interleaved AVIs with bad sync. MPlayer detects these as
    interleaved, and this climaxes in loss of A/V sync, probably at seeking.
    These files should be played as non-interleaved (with the <CODE>-ni</CODE>
    option).</LI>
  <LI><B>Non-interleaved:</B> First comes the whole video stream, then the whole
    audio stream. It thus needs a lot of seeking, making playing from network or
    CD-Rom difficult.</LI>
</UL>

<P>MPlayer supports two kinds of timings for AVI files:</P>
<UL>
  <LI><B>bps-based</B>: It is based on the bitrate/samplerate of the video/audio stream. This
    method is used by most players, including <A HREF="http://avifile.sourceforge.net">avifile</A>
    and Windows Media Player.
    Files with broken headers, and files created with VBR audio but not with a
    VBR-compliant encoder will result in A/V desync with this method (mostly at
    seeking).</LI>
  <LI><B>interleaving-based</B>: It does not use the bitrate value of the header, instead
    it uses the relative position of interleaved audio and video chunks, making
    badly encoded files with VBR audio playable.</LI>
</UL>

<P>Any audio and video codec is allowed, but note that VBR audio is not well
  supported by most players. The file format makes it possible to use VBR
  audio, but most players expect CBR audio, thus they fail with VBR. VBR is
  uncommon and the Microsoft AVI specs only describe CBR audio. Most AVI
  encoders/multiplexers create bad files when using VBR audio. There are only 
  two known exceptions: NanDub and <A HREF="encoding.html">MEncoder</A>.</P>


<H4><A NAME="asf">2.1.1.3 ASF/WMV files</A></H4>

<P>ASF (active streaming format) comes from Microsoft. They developed two
  variants of ASF, v1.0 and v2.0. v1.0 is used by their media tools (Windows
  Media Player and Windows Media Encoder) and is very secret. v2.0 is published
  and patented :). Of course they differ, there is no compatibility at all (it
  is just another legal game). MPlayer supports only v1.0, as nobody has
  ever seen v2.0 files :). Note that ASF files nowadays come with the extension
  .WMA or .WMV.</P>


<H4><A NAME="mov">2.1.1.4 QuickTime/MOV files</A></H4>

<P>These formats were designed by Apple and can contain any codec, CBR or VBR. 
  They usually have a .QT or .MOV extension. Ever since the MPEG4 group chose
  QuickTime as the recommended file format for MPEG4, their MOV files come with
  an
  .MPG or .MP4 extension (Interestingly the video and audio streams in these
  files are real MPG and AAC files. You can even extract them with the
  <CODE>-dumpvideo</CODE> and <CODE>-dumpaudio</CODE> options.).</P>

<P><B>Note:</B> Most new QuickTime files use <B>Sorenson</B> video and QDesign
  Music audio. See our <A HREF="codecs.html#sorenson">Sorenson</A> codec
  section.</P>


<H4><A NAME="vivo">2.1.1.5 VIVO files</A></H4>

<P>MPlayer happily demuxes VIVO file formats. The biggest disadvantage
  of the format is that it has no index block, nor a fixed packet size or sync
  bytes and most files lack even keyframes, so forget seeking!</P>

<P>The video codec of VIVO/1.0 files is standard <B>h.263</B>. The video codec
  of VIVO/2.0 files is a modified, nonstandard <B>h.263v2</B>. The audio is the
  same, it may be <B>g.723</B> (standard), or <B>Vivo Siren</B>.</P>

<P>See the <A HREF="codecs.html#vivo_video">VIVO video codec</A> and
  <A HREF="codecs.html#vivo_audio">VIVO audio codec</A> sections for installation
  instructions.</P>


<H4><A NAME="fli">2.1.1.6 FLI files</A></H4>

<P><B>FLI</B> is a very old file format used by Autodesk Animator, but it is a
  common file format for short animations on the net. MPlayer demuxes
  and decodes FLI movies and is even able to seek within them (useful when
  looping with the <CODE>-loop</CODE> option). FLI files do not have keyframes,
  so the picture will be messy for a short time after seeking.</P>


<H4><A NAME="real">2.1.1.7 RealMedia (RM) files</A></H4>

<P>Yes, MPlayer can read (demux) RealMedia (.rm) files. Seeking works,
  but you have to explicitly specify the <CODE>-forceidx</CODE> option
  (the format supports keyframes). Here are the lists of the supported
  <A HREF="codecs.html#realvideo">RealVideo</A>
  and <A HREF="codecs.html#realaudio">RealAudio</A> codecs.</P>


<H4><A NAME="nuppelvideo">2.1.1.8 NuppelVideo files</A></H4>

<P><A HREF="http://mars.tuwien.ac.at/~roman/nuppelvideo">NuppelVideo</A>
  is a TV grabber tool (AFAIK:). MPlayer can read its .NUV files (only
  NuppelVideo 5.0). Those files can contain uncompressed YV12, YV12+RTJpeg
  compressed, YV12 RTJpeg+lzo compressed, and YV12+lzo compressed frames.
  MPlayer decodes them all (and also <B>encodes</B> them with
  MEncoder to DivX/etc!). Seeking works.</P>


<H4><A NAME="yuv4mpeg">2.1.1.9 yuv4mpeg files</A></H4>

<P><A HREF="http://mjpeg.sourceforge.net">yuv4mpeg / yuv4mpeg2</A> is a file
  format used by the <A HREF="http://mjpeg.sf.net">mjpegtools programs</A>. 
  You can grab, produce, filter or encode video in this format using these
  tools.  The file format is really a sequence of uncompressed YUV 4:2:0
  images.</P>


<H4><A NAME="film">2.1.1.10 FILM files</A></H4>

<P>This format is used on old Sega Saturn CD-Rom games.</P>


<H4><A NAME="roq">2.1.1.11 RoQ files</A></H4>

<P>RoQ files are multimedia files used in some ID games such as Quake III and
  Return to Castle Wolfenstein.</P>


<H4><A NAME="ogg">2.1.1.12 OGG/OGM files</A></H4>

<P>This is a new file format from <A HREF="http://www.xiph.org">Xiphophorus</A>.
  It can contain any video or audio codec, CBR or VBR. You will need to
  have <CODE>libogg</CODE> and <CODE>libvorbis</CODE> installed
  before compiling MPlayer to be able to play it.</P>


<H4><A NAME="sdp">2.1.1.13 SDP files</A></H4>

<P><A HREF="ftp://ftp.rfc-editor.org/in-notes/rfc2327.txt">SDP</A>
  is an IETF standard format for describing video and/or audio RTP streams.
  (The "<A HREF="http://www.live.com/mplayer/">LIVE.COM Streaming Media</A>"
  libraries are required.)</P>


<H4><A NAME="pva">2.1.1.14 PVA files</A></H4>

<P>PVA is an MPEG-like format used by DVB TV boards' software (e.g.: MultiDec,
  WinTV) under Windows.</P>

<P>The PVA specifications can be downloaded from the following address:
  <A HREF="http://www.technotrend.de/download/av_format_v1.pdf">http://www.technotrend.de/download/av_format_v1.pdf</A></P>


<H4><A NAME="gif">2.1.1.15 GIF files</A></H4>

<P>The <B>GIF</B> format is a common format for web graphics.  There are two
  versions of the GIF spec, GIF87a and GIF89a.  The main difference is that
  GIF89a allows for animation.  MPlayer supports both formats through use
  of libungif or another libgif-compatible library.  Non-animated GIFs will
  be displayed as single frame videos.  (Use the <CODE>-loop</CODE> and
  <CODE>-fixed-vo</CODE> options to display these longer.)</P>

<P>MPlayer currently does not support seeking in GIF files.  GIF files do
  not necessarily have a fixed frame size, nor a fixed framerate.  Rather,
  each frame is of independant size and is supposed to be positioned in a
  certain place on a field of fixed-size.  The framerate is controlled by
  an optional block before each frame that specifies a next frame's delay
  in centiseconds.</P>

<P>Standard GIF files contain 24-bit RGB frames with at most an 8-bit
  indexed pallete.  These frames are usually LZW-compressed, although
  some GIF encoders produce uncompressed frames to avoid patent issues
  with LZW compression.</P>
  
<P>Though many common Linux distributions come with libungif, you can
  download a copy from the following address:
  <A HREF="http://prtr-13.ucsc.edu/~badger/software/libungif/index.shtml">http://prtr-13.ucsc.edu/~badger/software/libungif/index.shtml</A></P>

<P>The GIF specification can be downloaded from the following address:
  <A HREF="http://www.w3.org/Graphics/GIF/spec-gif89a.txt">http://www.w3.org/Graphics/GIF/spec-gif89a.txt</A></P>

<H3><A NAME="audio_formats">2.1.2 Audio formats</A></H3>

<P>MPlayer is a <B>Movie</B> and not a <B>Media</B> player, although
  it can play some audio file formats (they are listed in the sections below).
  This is not a recommended usage of MPlayer, you better use
  <A HREF="http://www.xmms.org">xmms</A>.</P>


<H4><A NAME="mp3">2.1.2.1 MP3 files</A></H4>

<P>You may have problems playing certain MP3 files that MPlayer will
  misdetect as MPEGs and play incorrectly or not at all. This cannot be fixed
  without dropping support for certain broken MPEG files and thus will remain
  like this for the foreseeable future. The <CODE>-demuxer</CODE> flag
  described in the man page may help you in these cases.</P>


<H4><A NAME="wav">2.1.2.2 WAV files</A></H4>


<H4><A NAME="ogg_vorbis">2.1.2.3 OGG/OGM files (Vorbis)</A></H4>

<P>Requires properly installed <CODE>libogg</CODE> and
  <CODE>libvorbis</CODE>.</P>


<H4><A NAME="wma">2.1.2.4 WMA/ASF files</A></H4>


<H4><A NAME="mp4">2.1.2.5 MP4 files</A></H4>


<H4><A NAME="cdda">2.1.2.6 CD audio</A></H4>

<P>MPlayer can use <B>cdparanoia</B> (lib) to play CDDA (Audio CD).
  The scope of this section does not contain enumerating cdparanoia's
  features.</P>

<P>See the man page's <CODE>-cdda</CODE> option which can be used to
  pass options to cdparanoia.</P>


<H4><A NAME="xmms">2.1.2.7 XMMS</A></H4>

<P>MPlayer can use XMMS input plugins to play many file formats. There are
  plugins for SNES game tunes, SID tunes (from Commodore 64), many Amiga
  formats, .xm, .it, VQF, musepack, Bonk, shorten and many others. You can find
  them at the
  <A HREF="http://www.xmms.org/plugins_input.html">XMMS input plugin page</A>.</P>

<P>For this feature you need to have XMMS and compile MPlayer with
  <CODE>./configure --enable-xmms</CODE>. If that does not work, you might need
  to set the XMMS plugin and library path explicitly by way of the
  <CODE>--with-xmmsplugindir</CODE> and <CODE>--withxmmslibdir</CODE>
  switches.</P>
  
</BODY>
</HTML>