mirror of https://github.com/mpv-player/mpv
422 lines
18 KiB
HTML
422 lines
18 KiB
HTML
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
|
<HTML>
|
|
|
|
<HEAD>
|
|
<LINK REL="stylesheet" TYPE="text/css" HREF="default.css">
|
|
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
|
|
</HEAD>
|
|
|
|
<BODY>
|
|
|
|
|
|
<P><B><A NAME=2.2>2.2. Supported codecs</A></B></P>
|
|
|
|
|
|
<P><B><A NAME=2.2.1>2.2.1. Video codecs</A></B></P>
|
|
|
|
<P>See <A HREF="http://www.mplayerhq.hu/DOCS/codecs-status.html">http://www.mplayerhq.hu/DOCS/codecs-status.html</A> for the complete,
|
|
daily generated list!!!</P>
|
|
|
|
<P>The most important ones above all:</P>
|
|
<UL>
|
|
<LI>MPEG1 (VCD) and MPEG2 (DVD) video</LI>
|
|
<LI>native decoders for DivX ;-), OpenDivX (DivX4), DivX 5.01, 3ivX, M$ MPEG4 v1, v2 and other MPEG4 variants</LI>
|
|
<LI>native decoder for Windows Media Video 7 (WMV1), and Win32 DLL decoder for
|
|
Windows Media Video 8 (WMV2), both used in .wmv files</LI>
|
|
<LI><B>native Sorenson (SVQ1) decoder</B></LI>
|
|
<LI>Cinepak and Intel Indeo codecs (3.1,3.2,4.1,5.0)</LI>
|
|
<LI>MJPEG, AVID, VCR2, ASV2 and other hardware formats</LI>
|
|
<LI>VIVO 1.0, 2.0, I263 and other h263(+) variants</LI>
|
|
<LI>FLI/FLC</LI>
|
|
<LI>RealVideo 1.0 from ffmpeg, and RealVideo 2.0, 3.0 using RealPlayer
|
|
libraries</LI>
|
|
<LI>native decoder for HuffYUV</LI>
|
|
<LI>Various old simple RLE-like formats</LI>
|
|
</UL>
|
|
|
|
<P>If you have a Win32 codec not listed here which is not supported yet, please read the
|
|
<A HREF="#2.2.3">codec importing HOWTO</A> and help us add support
|
|
for it!</P>
|
|
|
|
<P><B><A NAME=2.2.1.1>2.2.1.1. DivX4/DivX5</A></B></P>
|
|
|
|
<P>This section contains information about the DivX4 codec of
|
|
<A HREF="http://www.projectmayo.com">Project Mayo</A>. Their first available alpha version was OpenDivX 4.0
|
|
alpha 47 and 48. Support for this was included in <B>MPlayer</B> in the past,
|
|
and built by default. We also used its postprocessing code to optionally
|
|
enhance visual quality of MPEG1/2 movies. Now we use our own, for all file
|
|
types.</P>
|
|
|
|
<P>The new generation of this codec is called DivX4Linux and can even decode
|
|
movies made with the infamous DivX codec! In addition it is much faster than the
|
|
native Win32 DivX DLLs but slower than libavcodec.
|
|
Hence its usage as a decoder is <B>DISCOURAGED</B>. However, it is useful for
|
|
encoding. One disadvantage of this codec is that it is currently closed source.</P>
|
|
|
|
<P>The codec can be downloaded from one of the following URLs:</P>
|
|
|
|
<P> <A HREF="http://avifile.sourceforge.net">http://avifile.sourceforge.net</A><BR>
|
|
<A HREF="http://divx.com">http://divx.com</A></P>
|
|
|
|
<P>Unpack it, and run <CODE>./install.sh</CODE> as root.</P>
|
|
|
|
<P>Note: Do NOT forget adding <CODE>/usr/local/lib</CODE> to your
|
|
<CODE>/etc/ld.so.conf</CODE> and running <CODE>ldconfig</CODE>!</P>
|
|
|
|
<P><B>MPlayer</B> autodetects DivX4/DivX5 if it is properly installed, just
|
|
compile as usual. If it does not detect it, you did not install or configure
|
|
it correctly.</P>
|
|
|
|
<P>DivX4Linux works in two modes:</P>
|
|
|
|
<TABLE BORDER=0>
|
|
<TR><TD> </TD><TD VALIGN=top><CODE>-vc odivx</CODE></TD><TD> </TD>
|
|
<TD>Uses the codec in OpenDivX fashion. In this case it
|
|
produces YV12 images in its own buffer, and <B>MPlayer</B> does colorspace
|
|
conversion via libvo. (<B>FAST, RECOMMENDED!</B>)</TD></TR>
|
|
<TR><TD></TD><TD VALIGN=top><CODE>-vc divx4</CODE></TD><TD></TD>
|
|
<TD>Uses the colorspace conversion of the codec.
|
|
In this mode you can use YUY2/UYVY, too. (<B>SLOW</B>)</TD></TR>
|
|
</TABLE>
|
|
|
|
<P>The <CODE>-vc odivx</CODE> method is usually faster, due to the fact that it transfers
|
|
image data in YV12 (planar YUV 4:2:0) format, thus requiring much less
|
|
bandwidth on the bus. For packed YUV modes (YUY2, UYVY) use the <CODE>-vc divx4</CODE>
|
|
method. For RGB modes the speed is the same, differing at best
|
|
according to your current color depth.</P>
|
|
|
|
<P>NOTE: If your -vo driver supports direct rendering, then <CODE>-vc divx4</CODE> may be
|
|
faster, or even the fastest solution.</P>
|
|
|
|
|
|
<P><B><A NAME=2.2.1.2>2.2.1.2. FFmpeg DivX/libavcodec</A></B></P>
|
|
|
|
<P>Beginning with version 0.4.2,
|
|
<A HREF="http://ffmpeg.sourceforge.net">FFmpeg</A> contains an
|
|
<B>open source</B> DivX codec, which is compatible with the traditional DivX.
|
|
<B>MPlayer</B> supports this codec, making it possible to <B>watch
|
|
DivX/DivX4/DivX5/MP41/MP42 movies on non-x86 platforms</B>. Furthermore it offers higher
|
|
decoding speed than the Win32 codecs or the original
|
|
DivX4 library!</P>
|
|
|
|
<P>It also contains a lot of nice codecs, such as RealVideo 1.0, WMV7,
|
|
MJPEG, h263, h263+, etc.</P>
|
|
|
|
<P>If you use an <B>MPlayer</B> release you have libavcodec right in the package,
|
|
just build as usual. If you use <B>MPlayer</B> from CVS you have to extract
|
|
libavcodec from the FFmpeg CVS tree as FFmpeg 0.4.5 does <B>not</B> work with
|
|
<B>MPlayer</B>. In order to achieve this do:</P>
|
|
|
|
<OL>
|
|
<LI><CODE>cvs -d:pserver:anonymous@cvs.ffmpeg.sourceforge.net:/cvsroot/ffmpeg login</CODE></LI>
|
|
<LI><CODE>cvs -d:pserver:anonymous@cvs.ffmpeg.sourceforge.net:/cvsroot/ffmpeg co ffmpeg</CODE></LI>
|
|
<LI>Move the <CODE>libavcodec</CODE> directory from the FFmpeg sources to the
|
|
root of the <B>MPlayer</B> CVS tree. It should look like this:
|
|
<P> <CODE>main/libavcodec</CODE></P>
|
|
Symlinking is <B>not</B> enough, you have to copy/move it!!!</LI>
|
|
<LI>Compile. Configure should detect problems before compilation.</LI>
|
|
</OL>
|
|
|
|
<P><B>NOTE:</B> MPlayer from CVS does contain a libavcodec
|
|
subdirectory, but it does NOT contain the source for libavcodec!
|
|
You must follow the steps above to obtain the source for this library.</P>
|
|
|
|
<P>With FFmpeg and my Matrox G400, I can view even the highest resolution DivX
|
|
movies without dropped frames on my K6/2 500.</P>
|
|
|
|
|
|
<P><B><A NAME=2.2.1.3>2.2.1.3. XAnim codecs</A></B></P>
|
|
|
|
<P>Foreword:<BR>
|
|
Be advised that the XAnim binary codecs are packaged with a piece of text
|
|
claiming to be a legally binding software license which, besides other
|
|
restrictions, forbids the user to use the codecs in conjunction with any
|
|
program other than XAnim. However, the XAnim author has yet to bring legal
|
|
action against anyone for codec-related issues.
|
|
</P>
|
|
|
|
<P><B>MPlayer</B> is capable of employing the XAnim codecs for decoding. Follow
|
|
the instructions to enable them:</P>
|
|
|
|
<UL>
|
|
<LI>Download the codecs you wish to use from the
|
|
<A HREF="http://xanim.va.pubnix.com">XAnim site</A>. The <B>3ivx</B> codec
|
|
is not there, but at the <A HREF="http://www.3ivx.com">3ivx site</A>.</LI>
|
|
|
|
<LI>Use the <CODE>--with-xanimlibdir</CODE> option to tell configure where
|
|
to find the XAnim codecs. By default, it looks for them at
|
|
<CODE>/usr/local/lib/xanim/mods, /usr/lib/xanim/mods and /usr/lib/xanim</CODE>.
|
|
Alternatively you can set the environment variable <I>XANIM_MOD_DIR</I> to
|
|
the directory of the XAnim codecs.</LI>
|
|
|
|
<LI>Rename/symlink the files, cutting out the architecture stuff, so they will
|
|
have filenames like these: <CODE>vid_cvid.xa, vid_h263.xa, vid_iv50.xa</CODE>
|
|
|
|
</UL>
|
|
|
|
<P>XAnim is video codec family number 10, so you may want to use the <CODE>-vfm 10</CODE>
|
|
option to tell <B>MPlayer</B> to use them if possible.</P>
|
|
|
|
<P>Tested codecs include: <B>Indeo 3.2</B>, <B>4.1</B>, <B>5.0</B>, <B>CVID</B>, <B>3ivX</B>, <B>h263</B>.</P>
|
|
|
|
|
|
<P><B><A NAME=2.2.1.4>2.2.1.4. VIVO video</A></B></P>
|
|
|
|
<P><B>MPlayer</B> can play Vivo (1.0 and 2.0) videos. The most suitable codec
|
|
for 1.0 files is FFmpeg's H263 decoder, you can use it with the <CODE>-vc
|
|
ffh263</CODE> option (default) (requires up-to-date libavcodec). For 2.0 files, use
|
|
the <CODE>ivvideo.dll</CODE> Win32 DLL file (from <A
|
|
HREF="http://www.mplayerhq.hu/MPlayer/samples/drivers32/ivvideo.dll">here</A>),
|
|
and install it under <CODE>/usr/lib/win32</CODE> or wherever you store the
|
|
Win32 codecs. This latter codec does not support YV12 nor YUY2 only BGR modes,
|
|
restricting it to the X11 and OpenGL outputs. Hopefully ffh263 will support
|
|
VIVO 2.0 files in the future.</P>
|
|
|
|
|
|
<P><B><A NAME=2.2.1.5>2.2.1.5. MPEG 1/2 video</A></B></P>
|
|
|
|
<P>MPEG1 and MPEG2 are decoded by the multiplatform native <B>libmpeg2</B> library,
|
|
whose source code is included in <B>MPlayer</B>.
|
|
We handle buggy MPEG 1/2 video files by catching sig11 (segmentation fault),
|
|
and quickly reinitializing the codec, continuing exactly from where the failure
|
|
occurred.
|
|
This recovery technique has no measurable speed penalty.</P>
|
|
|
|
|
|
<P><B><A NAME=2.2.1.6>2.2.1.6. MS Video1</A></B></P>
|
|
|
|
<P>This is a very old and very bad codec from Microsoft. In the past it was
|
|
decoded with the <CODE>msvidc32.dll</CODE> Win32 codec, now we have our own
|
|
open source implementation (by <A HREF="mailto:melanson@pcisys.net">Mike
|
|
Melanson</A>).</P>
|
|
|
|
|
|
<P><B><A NAME=2.2.1.7>2.2.1.7. Cinepak CVID</A></B></P>
|
|
|
|
<P><B>MPlayer</B> uses its own open source, multiplatform Cinepak decoder by
|
|
default. It supports YUV outputs, so that hardware scaling is possible if the
|
|
video output driver permits it.</P>
|
|
|
|
|
|
<P><B><A NAME=2.2.1.8>2.2.1.8. RealVideo</A></B></P>
|
|
|
|
<B>MPlayer</B> supports decoding all versions of RealVideo:
|
|
<UL>
|
|
<LI>RealVideo 1.0 (fourcc RV10) - en/decoding supported by <B>libavcodec</B></LI>
|
|
<LI>RealVideo 2.0 (fourcc RV20) - decoding supported by <B>RealPlayer libraries</B></LI>
|
|
<LI>RealVideo 3.0 (fourcc RV30) - decoding supported by <B>RealPlayer libraries</B></LI>
|
|
</UL>
|
|
|
|
<P>On how to install RealPlayer libraries, see the
|
|
<A HREF="formats.html#2.1.1.7">RealMedia file format</A> section.</P>
|
|
|
|
|
|
<P><B><A NAME=2.2.1.9>2.2.1.9. XViD</A></B></P>
|
|
|
|
<P><B>XViD</B> is a forked development of the OpenDivX codec. It happened when
|
|
ProjectMayo changed OpenDivX to closed-source DivX4, and the non-ProjectMayo
|
|
people working on OpenDivX got angry, then started XViD. So both projects
|
|
have the same origin.</P>
|
|
|
|
<P><B>Advantages:</B></P>
|
|
<UL>
|
|
<LI>open source</LI>
|
|
<LI>its API is compatible with DivX4 so adding support for
|
|
it is easy</LI>
|
|
<LI>2-pass encoding support</LI>
|
|
<LI>nice encoding quality, higher speed than DivX4 (you can optimize it for
|
|
your box while compiling)</LI>
|
|
</UL>
|
|
|
|
<P><B>Disadvantages:</B></P>
|
|
<UL>
|
|
<LI>currently it does not properly <B>decode</B> all DivX/DivX4 files (no problem as libavcodec can play them)</LI>
|
|
<LI>you have to choose between DivX4 <B>OR</B> XViD support at
|
|
compiletime</LI>
|
|
<LI>under development</LI>
|
|
</UL>
|
|
|
|
<P><B>Installation:</B> It is currently available only from CVS. Here are the
|
|
download and installation instructions:</P>
|
|
<OL>
|
|
<LI><CODE>cvs -z3 -d:pserver:anonymous@cvs.xvid.org:/xvid login</CODE></LI>
|
|
<LI><CODE>cvs -z3 -d:pserver:anonymous@cvs.xvid.org:/xvid co xvidcore</CODE></LI>
|
|
<LI><CODE>cd xvidcore/build/generic</CODE></LI>
|
|
<LI>Edit <CODE>Makefile.linux</CODE> to fit your needs.</LI>
|
|
<LI><CODE>make -f Makefile.linux</CODE></LI>
|
|
<LI>Get <CODE>encore2.h</CODE> and <CODE>decore.h</CODE> from the DivX4Linux
|
|
package, and copy them to <CODE>/usr/local/include/</CODE>.</LI>
|
|
<LI>Recompile <B>MPlayer</B> with <CODE>--with-xvidcore=/path/to/libcore.a</CODE>.</LI>
|
|
</OL>
|
|
|
|
|
|
<P><B><A NAME=2.2.1.10>2.2.1.10. Sorenson</A></B></P>
|
|
|
|
<P><B>Sorenson</B> is a video codec developed by Apple. We are currently
|
|
able to decode the first version of it (SVQ1), with a native decoder.</P>
|
|
|
|
<P><B>Advantages:</B></P>
|
|
<UL>
|
|
<LI>old, slow Macintosh machines were able to decode it</LI>
|
|
</UL>
|
|
|
|
<P><B>Disadvantages:</B></P>
|
|
<UL>
|
|
<LI>SVQ3 is still not reverse-engineered</LI>
|
|
</UL>
|
|
|
|
<P><B>Installation:</B> it's compiled and usable per default.</P>
|
|
|
|
|
|
<P><B><A NAME=2.2.2>2.2.2. Audio codecs</A></B></P>
|
|
|
|
<P>The most important audio codecs above all:<BR></P>
|
|
<UL>
|
|
<LI>MPEG layer 2, and layer 3 (MP3) audio (<B>native</B> code, with MMX/SSE/3DNow! optimization)</LI>
|
|
<LI>MPEG layer 1 audio (<B>native</B> code, with libavcodec)</LI>
|
|
<LI>AC3 Dolby audio (<B>native</B> code, with MMX/SSE/3DNow! optimization)</LI>
|
|
<LI>Ogg Vorbis audio codec (<B>native</B> library)</LI>
|
|
<LI>Voxware audio (using DirectShow DLL)</LI>
|
|
<LI>alaw, msgsm, pcm and other simple old audio formats</LI>
|
|
<LI>VIVO audio (g723, Vivo Siren)</LI>
|
|
<LI>RealAudio: DNET (low bitrate AC3), Cook, Sipro</LI>
|
|
</UL>
|
|
|
|
|
|
<P><B><A NAME=2.2.2.1>2.2.2.1. Software AC3 decoding</A></B></P>
|
|
|
|
<P>This is the default decoder used for files with AC3 audio.</P>
|
|
|
|
<P>The AC3 decoder can create audio output mixes for 2, 4, or 6
|
|
speakers. When configured for 6 speakers, this decoder provides
|
|
separate output of all the AC3 channels to the sound driver,
|
|
allowing for full "surround sound" experience without the external AC3
|
|
decoder required to use the hwac3 codec.</P>
|
|
|
|
<P>Use the <CODE>-channels</CODE> option to select the number of output channels.
|
|
Use <CODE>-channels 2</CODE> for a stereo downmix. For a 4 channel downmix (Left
|
|
Front, Right Front, Left Surround and Right Surround outputs), use
|
|
<CODE>-channels 4</CODE>. In this case, any center channel will be mixed
|
|
equally to the front channels. <CODE>-channels 6</CODE> will output all the AC3
|
|
channels as they are encoded - in the order Left, Right, Left Surround, Right
|
|
Surround, Center and LFE.</P>
|
|
|
|
<P>The default number of output channels is 2.</P>
|
|
|
|
<P>To use more than 2 output channels, you will need to use OSS, and have a sound
|
|
card that supports the appropriate number of output channels via the
|
|
SNDCTL_DSP_CHANNELS ioctl. An example of a suitable driver is emu10k1 (used by
|
|
Soundblaster Live! cards) from August 2001 or newer (ALSA CVS is also supposed to
|
|
work).</P>
|
|
|
|
|
|
<P><B><A NAME=2.2.2.2>2.2.2.2. Hardware AC3 decoding</A></B></P>
|
|
|
|
<P>You need an AC3 capable sound card, with digital out (SP/DIF). The
|
|
card's driver must properly support the AFMT_AC3 format (C-Media does).
|
|
Connect your AC3 decoder to the SP/DIF output, and use the <CODE>-ac hwac3</CODE>
|
|
option. It is experimental but known to work with C-Media cards and Soundblaster
|
|
Live! + ALSA (but not OSS) drivers.</P>
|
|
|
|
|
|
<P><B><A NAME=2.2.2.3>2.2.2.3. libmad support</A></B></P>
|
|
|
|
<P><A HREF="http://mad.sourceforge.net">libmad</A> is a multiplatform MPEG audio
|
|
decoding library. It does not handle broken files well, and it sometimes has
|
|
problems with seeking.</P>
|
|
|
|
<P>To enable support, compile with the <CODE>--enable-mad</CODE> configure
|
|
option.</P>
|
|
|
|
|
|
<P><B><A NAME=2.2.2.4>2.2.2.4. VIVO audio</A></B></P>
|
|
|
|
<P>The audio codec used in VIVO files depends on whether it is a VIVO/1.0 or
|
|
VIVO/2.0 file. VIVO/1.0 files have <B>g.723</B> audio, and VIVO/2.0 files
|
|
have <B>Vivo Siren</B> audio. Both are supported. You can grab the g.723/Siren
|
|
Win32 DLL from
|
|
<A HREF="http://www.mplayerhq.hu/MPlayer/samples/drivers32/vivog723.acm">here</A>,
|
|
then copy it into the <CODE>/usr/lib/win32</CODE> directory.</P>
|
|
|
|
|
|
<P><B><A NAME=2.2.2.5>2.2.2.5. RealAudio</A></B></P>
|
|
|
|
<B>MPlayer</B> supports decoding all versions of RealAudio:
|
|
<UL>
|
|
<LI>RealAudio DNET - decoding supported by <B>liba52</B></LI>
|
|
<LI>RealAudio Cook - decoding supported by <B>RealPlayer libraries</B></LI>
|
|
<LI>RealAudio Sipro - decoding supported by <B>RealPlayer libraries</B></LI>
|
|
</UL>
|
|
|
|
|
|
<P>On how to install RealPlayer libraries, see the
|
|
<A HREF="formats.html#2.1.1.7">RealMedia file format</A> section.</P>
|
|
|
|
|
|
<P><B><A NAME=2.2.3>2.2.3. Win32 codec importing HOWTO</A></B></P>
|
|
|
|
<P><B><A NAME=2.2.3.1>2.2.3.1. VFW codecs</A></B></P>
|
|
|
|
<P>VFW (Video for Windows) is the old Video API for Windows. Its codecs have
|
|
the .DLL or (rarely) .DRV extension.
|
|
If <B>MPlayer</B> fails at playing your AVI with this kind of message:</P>
|
|
|
|
<P> <CODE>UNKNOWN video codec: HFYU (0x55594648)</CODE></P>
|
|
|
|
<P>It means your AVI is encoded with a codec which has the HFYU fourcc (HFYU =
|
|
HuffYUV codec, DIV3 = DivX Low Motion, etc...). Now that you know this, you
|
|
have to find out which DLL Windows loads in order to play this file. In our
|
|
case, the <CODE>system.ini</CODE> contains this information in a line that reads:</P>
|
|
|
|
<P> <CODE>VIDC.HFYU=huffyuv.dll</CODE></P>
|
|
|
|
<P>So you need the <CODE>huffyuv.dll</CODE> file. Note that the audio codecs are
|
|
specified by the MSACM prefix:</P>
|
|
|
|
<P> <CODE>msacm.l3acm=L3codeca.acm</CODE></P>
|
|
|
|
|
|
<P>This is the MP3 codec.
|
|
Now that you have all the necessary information (fourcc, codec file, sample AVI),
|
|
submit your codec support request by mail, and upload these files to the FTP site:</P>
|
|
|
|
<P> <CODE>ftp://ftp.mplayerhq.hu/MPlayer/incoming/[codecname]/</CODE></P>
|
|
|
|
|
|
<P><B><A NAME=2.2.3.2>2.2.3.2. DirectShow codecs</A></B></P>
|
|
|
|
<P>DirectShow is the newer Video API, which is even worse than its predecessor.
|
|
Things are harder with DirectShow, since</P>
|
|
<UL>
|
|
<LI><CODE>system.ini</CODE> does not contain the needed information, instead it
|
|
is stored in the registry and
|
|
<LI>we need the GUID of the codec.
|
|
</UL>
|
|
|
|
<P>Take a deep breath and start searching the registry...</P>
|
|
<UL>
|
|
<LI>Start <CODE>regedit</CODE>.
|
|
<LI>Press <CODE>Ctrl-f</CODE>, disable the first two checkboxes, and enable the
|
|
third. Type in the fourcc of the codec (e.g. TM20).
|
|
<LI>You should see a field which contains the path and the filename
|
|
(e.g. <CODE>C:\WINDOWS\SYSTEM\TM20DEC.AX</CODE>).
|
|
<LI>Now that you have the file, we need the GUID. Try searching again, but
|
|
now search for the codec's name, not the fourcc. Its name can be acquired
|
|
when Media Player is playing the file, by checking File->Properties->Advanced.
|
|
If not, you are out of luck. Try guessing (e.g. search for TrueMotion).
|
|
<LI>If the GUID is found you should see a FriendlyName and a CLSID
|
|
field. Write down the 16 byte CLSID, this is the GUID we need.
|
|
</UL>
|
|
|
|
<P>NOTE: If searching fails, try enabling all the checkboxes. You may have
|
|
false hits, but you may get lucky...</P>
|
|
|
|
<P>Now that you have all the necessary information (fourcc, GUID, codec file,
|
|
sample AVI), submit your codec support request by mail, and upload these files
|
|
to the FTP site:</P>
|
|
|
|
<P> <CODE>ftp://ftp.mplayerhq.hu/MPlayer/incoming/[codecname]/</CODE></P>
|
|
|
|
</BODY>
|
|
</HTML>
|