mirror of https://github.com/mpv-player/mpv
425 lines
17 KiB
HTML
425 lines
17 KiB
HTML
<HTML>
|
|
|
|
<HEAD>
|
|
<STYLE>
|
|
.text
|
|
{font-family : Verdana, Arial, Helvetica, sans-serif;
|
|
font-size : 14px;}
|
|
</STYLE>
|
|
</HEAD>
|
|
|
|
<BODY BGCOLOR=WHITE>
|
|
|
|
<FONT CLASS="text">
|
|
|
|
<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:<BR>
|
|
<UL>
|
|
<LI>MPEG1 (VCD) and MPEG2 (DVD) video</LI>
|
|
<LI>DivX ;-), OpenDivX (DivX4), 3ivx and other MPEG4 variants</LI>
|
|
<LI>Windows Media Video 7 (WMV1) and 8 (WMV2) used in .wmv files</LI>
|
|
<LI>Intel Indeo codecs (3.1,3.2,4.1,5.0)</LI>
|
|
<LI>MJPEG, ASV2 and other hardware formats</LI>
|
|
<LI>XAnim codecs</LI>
|
|
<LI>VIVO</LI>
|
|
<LI>FLI</LI>
|
|
<LI>RealVideo 1.0</LI>
|
|
</UL></P>
|
|
|
|
<P>If you have a Win32 codec not listed here, and not supported yet, just read the <A
|
|
HREF="#2.2.3">codec importing</A> to get info about how to help us adding 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">ProjectMayo</A>. Their first available alpha version was the OpenDivX 4.0
|
|
alpha 47 and 48. Support for this was/is included in <B>MPlayer</B>, and built by
|
|
default. We used to use its postprocessing code to optionally enhance visual
|
|
quality of MPEG1/2 movies. Now we use our own.</P>
|
|
|
|
<P>The new generation of this codec can even decode movies made with the
|
|
infamous DivX codec! And it's not everything, it's MUCH faster than the
|
|
traditional Win32 DivX DLL's (note that libavcodec's decoder is EVEN FASTER,
|
|
so the usage of this codec is <B>DISCOURAGED</B> - you need it only for
|
|
encoding). See below for configuration. The only disadvantage of this codec is
|
|
that it's currently closed-source. :(</P>
|
|
|
|
<P>The codec can be downloaded from the following URL:</P>
|
|
|
|
<P> <A HREF="http://avifile.sourceforge.net">http://avifile.sourceforge.net</A></P>
|
|
|
|
<P>If it doesn't work, try :</P>
|
|
|
|
<P> <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 to add <CODE>/usr/local/lib</CODE> to your
|
|
<CODE>/etc/ld.so.conf</CODE> and running <CODE>ldconfig</CODE> !</P>
|
|
|
|
<P><B>MPlayer</B> autodetects if DivX4/DivX5 is (properly) installed, just
|
|
compile as usual. If it doesn't detect it, you didn't install it exactly as
|
|
above, and/or has messed up config (see last question of 5.1 section).</P>
|
|
|
|
<P>Using it is a bit tricky. As it conflicts with the old OpenDivX (its API is
|
|
very similar to OpenDivX's), OpenDivX code is disabled, and the OpenDivX
|
|
driver calls this library too.</P>
|
|
|
|
<P>Generally we can pinpoint this issue to that you have two options to use
|
|
this codec:</P>
|
|
|
|
<P><TABLE BORDER=0>
|
|
<TD> </TD><TD VALIGN=top><FONT CLASS="text">-vc odivx</TD><TD> </TD>
|
|
<TD><FONT CLASS="text">using the codec as a new version of OpenDivX.
|
|
in this case it produces YV12 image in its own buffer,
|
|
and <B>MPlayer</B> (libvo) does colorspace conversion. (<B>RECOMMENDED!</B>)</TD><TR>
|
|
<TD></TD><TD VALIGN=top><FONT CLASS="text">-vc divx4</TD><TD></TD>
|
|
<TD><FONT CLASS="text">using the codec's colorspace conversion.
|
|
in this mode, you can use YUY2/UYVY too.</TD></TR>
|
|
</TABLE></P>
|
|
|
|
<P>The 'odivx' 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 'divx4'
|
|
method. For RGB modes you can choose freely, their speed is same, maybe
|
|
differ according to the current bpp.</P>
|
|
|
|
<P>Note: it supports postprocessing too (use option <CODE>-oldpp</CODE> to
|
|
enable using it), but range of values is strange: </P>
|
|
|
|
<P><TABLE BORDER=0>
|
|
<TD> </TD><TD><FONT CLASS="text">0</TD><TD> </TD>
|
|
<TD><FONT CLASS="text">no postproc</TD><TR>
|
|
<TD></TD><TD><FONT CLASS="text">10 .. 20</TD>
|
|
<TD></TD><TD><FONT CLASS="text">postprocessing, normal (like level 2 with divxds)</TD><TR>
|
|
<TD></TD><TD><FONT CLASS="text">30 .. 60</TD>
|
|
<TD></TD><TD><FONT CLASS="text">hard prostprocessing, eats many CPU (like level 4 with divxds</TD><TR>
|
|
</TABLE></P>
|
|
|
|
<P><B><A NAME=2.2.1.2>2.2.1.2. ffmpeg's DivX/libavcodec</A></B></P>
|
|
|
|
<P>Beginning with version 0.4.2 ,
|
|
<A HREF="http://ffmpeg.sourceforge.net">ffmpeg</A> contains an
|
|
<B>opensource</B> DivX codec, which is compatible with the traditional DivX.
|
|
<B>MPlayer</B> supports this codec, and this makes it possible to <B>watch
|
|
DivX/DivX4/DivX5 movies on non-x86 platforms</B>, and gain much faster
|
|
<B>DivX/DivX4/DivX5</B> decoding speed than the Win32 codecs and the original
|
|
DivX4 library has!</P>
|
|
|
|
<P>It also contains lots of nice codecs, such as RealVideo 1.0, MJPEG, h263,
|
|
h263+, etc.</P>
|
|
|
|
<P>If you use MPlayer
|
|
|
|
<UL>
|
|
<LI>from release : then you have libavcodec right in the package, just
|
|
build <B>MPlayer</B> as usual.</LI>
|
|
<LI>from CVS : you have to download it manually directly from <B>FFmpeg</B>'s
|
|
tree:
|
|
|
|
<P><CODE>
|
|
cvs -d:pserver:anonymous@cvs.ffmpeg.sourceforge.net:/cvsroot/ffmpeg login<BR>
|
|
cvs -d:pserver:anonymous@cvs.ffmpeg.sourceforge.net:/cvsroot/ffmpeg co ffmpeg
|
|
</CODE></P>
|
|
|
|
<P>Note: <I>if you copy with CVS subdirs, next time it's enough to do
|
|
'cvs update'.</I></P>
|
|
<P>Now, move the newly downloaded ffmpeg source's <B>libavcodec</B> directory,
|
|
(with all it's subdirectories) to <B>MPlayer</B>'s tree, so it will look
|
|
like this:</P>
|
|
|
|
<P> <CODE>main/libavcodec</CODE></P>
|
|
|
|
<P>Symlinking is NOT enough, you have to copy/move it!!!</P>
|
|
|
|
</LI>
|
|
</UL>
|
|
</P>
|
|
|
|
<P>Then compile. configure detects if it's alright, and can be compiled. The
|
|
codec also <B>supports postprocessing!</B></P>
|
|
|
|
<P>In order to use it, update your codecs.conf file, and do as the manpage,
|
|
or the example.conf says (the -vfm option).</P>
|
|
|
|
<P>To achieve the <B>greatest speed</B> on my K6, I remove the
|
|
<CODE>ffmpeg12</CODE> section from codecs.conf (this codec isn't optimized, and
|
|
libmpeg2 is twice as fast), and place <CODE>vfm=5</CODE> in my config file.
|
|
Then <B>MPlayer</B> always uses <B>ffdivx/ffodivx</B> to decode
|
|
<B>DivX</B> files, and libmpeg2 for MPEG1/2 . With this and my
|
|
Matrox G400, I can view even the highest resolution DivX movies on my
|
|
K6/2 500, without framedrop.</P>
|
|
|
|
|
|
<P><B><A NAME=2.2.1.3>2.2.1.3. XAnim codecs</A></B></P>
|
|
|
|
<P>Foreword: using (some) XAnim codecs with other program than XAnim, is
|
|
<B><I>ILLEGAL</I></B>. It is <B>YOUR</B> responsibility to read its license,
|
|
and do accordingly. The authors of <B>MPlayer</B> can't be held responsible for
|
|
any unlawful act of the user.</P>
|
|
|
|
<P>So yes, <B>MPlayer</B> can use XAnim's codecs for decoding. It's very
|
|
easy to enable them:</P>
|
|
|
|
<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
|
|
isn't there, so download it from the <A HREF="http://www.3ivx.com">3ivx site</A>.</LI>
|
|
|
|
<LI>use the <CODE>--with-xanimlibdir</CODE> option to tell configure where
|
|
it can find the xanim codecs. By default, it checks them at <CODE>/</CODE> (...) .
|
|
Alternatively you can set the environment variable <I>XANIM_MOD_DIR</I> to
|
|
the dir of the XAnim codecs.</LI>
|
|
|
|
<LI>rename the filenames by 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>
|
|
|
|
<P>They are video codec family number 10, so you may want to use <CODE>-vfm 10</CODE>
|
|
option to tell <B>MPlayer</B> to use them if possible.</P>
|
|
|
|
<P>Tested codecs are: <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) (you'll need the newest 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 doesn't support YV12 nor YUY2 only BGR modes,
|
|
thus usable only with 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 with the native library <B>libmpeg2</B>.
|
|
Its source code is included in <B>MPlayer</B>, and of course is multiplatform.
|
|
We handle buggy MPEG1/2 video files by checking for what signature does
|
|
libmpeg2 return, and when it gives sig11 (segmentation fault), we quickly
|
|
reinitialize the codec, and continue exactly from where the failure did occur.
|
|
No speed decrease is measurable.</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 of 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> now has its own opensource, multiplatform Cinepak decoder.
|
|
Supports YUV outputs, thus hardware scaling if video output driver allows.
|
|
Used by default.</P>
|
|
|
|
|
|
<P><B><A NAME=2.2.1.8>2.2.1.8. RealVideo</A></B></P>
|
|
|
|
<P>Currently ONLY the RealVideo 1.0 (fourcc RV10) codec is supported, through
|
|
ffmpeg. Sadly, no new RealMedia files come with this one, only with the newer
|
|
RV20 and RV30 codecs which are closed-source. Their future support is
|
|
unlikely :(</P>
|
|
|
|
|
|
<P><B><A NAME=2.2.1.9>2.2.1.9. XViD</A></B></P>
|
|
|
|
<P><B>XViD</B> is another development from good old OpenDivX (first
|
|
development was DivX4).</P>
|
|
|
|
<P><B>Advantages</B> :
|
|
<UL>
|
|
<LI>opensource</LI>
|
|
<LI>its API is compatible with DivX4 so it's easy to add support for
|
|
it</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>
|
|
|
|
<P><B>Disadvantages</B> :
|
|
<UL>
|
|
<LI>currently it doesn't properly decode all DivX/DivX4 files</LI>
|
|
<LI>you have to choose between DivX4 <B>OR</B> XViD support at
|
|
compiletime</LI>
|
|
<LI>under development</LI>
|
|
</UL>
|
|
</P>
|
|
|
|
<P><B>Installation</B> : it's currently available only in CVS. Here are the
|
|
downloading and installation instructions :<BR>
|
|
<CODE>cvs -z3 -d:pserver:anonymous@cvs.xvid.org:/xvid
|
|
login</CODE><BR>
|
|
<CODE>cvs -z3 -d:pserver:anonymous@cvs.xvid.org:/xvid co
|
|
xvidcore</CODE><BR>
|
|
<CODE>cd xvidcore/build/generic</CODE><BR>
|
|
<CODE>Edit Makefile.linux to fit your needs</CODE><BR>
|
|
<CODE>make -f Makefile.linux</CODE><BR>
|
|
<CODE>recompile <B>MPlayer</B> with
|
|
--with-xvidcore=/path/to/libcore.a</CODE><BR>
|
|
</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>
|
|
<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 SSE/3DNow! optimization)</LI>
|
|
<LI>Ogg Vorbis audio codec (<B>native</B> lib)</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)</LI>
|
|
</UL></P>
|
|
|
|
|
|
<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 output audio mixes for 2, 4, or 6
|
|
speakers. When configured for 6 speakers, this decoder provides
|
|
separate output of all the AC3 channels to the soundcard driver,
|
|
allowing the 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 Centre channel will be mixed
|
|
equally to the front channels. Lastly, "-channels 6" will output all the AC3
|
|
channels as they are encoded - in the order Left, Right, Left Surround, Right
|
|
Surround, Centre and LFE.</P>
|
|
|
|
<P>The default number of output channels is 2.</P>
|
|
|
|
<P>To use more than 2 output channels, you'll need to be using OSS,
|
|
and to have a soundcard driver that supports the appropriate number of
|
|
output channels via the SNDCTL_DSP_CHANNELS ioctl. For example, a
|
|
version of the emu10k1 driver (used with the SB Live cards) newer than
|
|
August 2001 should be suitable (I heard newest ALSA CVS supports this too).</P>
|
|
|
|
|
|
<P><B><A NAME=2.2.2.2>2.2.2.2. Hardware AC3 decoding</A></B></P>
|
|
|
|
<P>You'll need an AC3 capable soundcard, with digital out (SP/DIF). The
|
|
card's driver must support the AFMT_AC3 format (like SB Live! or C-Media does).
|
|
Connect your AC3 decoder to the SP/DIF output, and use the '-ac hwac3'
|
|
option. It may or may not work (experimental). It will work with C-Media
|
|
cards, and with SB Live! + ALSA driver. It won't work with Live!'s OSS
|
|
driver.</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. If you don't know why is it good, you probably don't need it.</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's 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>. Both is <U>supported</U>. 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, or respectively.</P>
|
|
|
|
|
|
<P><B><A NAME=2.2.2.5>2.2.2.5. RealAudio</A></B></P>
|
|
|
|
<P>Currently the only supported one is the DNET codec. Actually it's a
|
|
low-bitrate version of the well-known AC3 codec. It can be found either in
|
|
old and new RealMedia movies.</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 with your AVI:</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 we know this, we'll
|
|
have to find out which DLL Windows loads in order to play this file. In our
|
|
case, the system.ini contains this (with many others):</P>
|
|
|
|
<P> <CODE>VIDC.HFYU=huffyuv.dll</CODE></P>
|
|
|
|
<P>So we'll need the huffyuv.dll file. Note that the audio codecs are specified
|
|
with the MSACM prefix:</P>
|
|
|
|
<P> <CODE>msacm.l3acm=L3codeca.acm</CODE></P>
|
|
|
|
|
|
<P>This is the MP3 codec.
|
|
So, now we have all the info needed (fourcc, codec file, sample AVI), submit
|
|
your codec support request in mail, and upload these files to the FTP:</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
|
|
<UL>
|
|
<LI>system.ini doesn't contain the needed information, instead it's stored in
|
|
the registry :(
|
|
<LI>we'll need the GUID of the codec.
|
|
</UL></P>
|
|
|
|
<P>So let's search that goddamn registry..
|
|
<UL>
|
|
<LI>Start 'regedit'
|
|
<LI>press ctrl-f, disable the first two checkbox, and enable the third. Type
|
|
the fourcc of the codec. (for ex.: TM20)
|
|
<LI>you should see a field which contains the path and filename
|
|
(for ex. : C:\WINDOWS\SYSTEM\TM20DEC.AX)
|
|
<LI>now that we have the file, we'll need the GUID. Try searching again, but
|
|
now we'll search for the codec's name, not the fourcc. Its name can be acquired
|
|
when Media Player is playing that file, by checking File/Properties/Advanced.
|
|
If not, bad luck ;) Try guessing.
|
|
(for ex. search for : TrueMotion)
|
|
<LI>if found (in registry), there should be a FriendlyName field, and a CLSID
|
|
field. Write down that 16 byte of CLSID, this is the GUID required by us.
|
|
</UL></P>
|
|
|
|
<P>NOTE: if searching fails, try to enable all the checkboxes.. you may have
|
|
false hits, but maybe you'll have the right, too...</P>
|
|
<P>NOTE: dump that M$ shit.</P>
|
|
|
|
|
|
<P>So, now we have all the info needed (fourcc, GUID, codec file, sample AVI),
|
|
submit your codec support request in mail, and upload these files to the FTP:<BR>
|
|
ftp://ftp.mplayerhq.hu/MPlayer/incoming/[codecname]/</P>
|
|
|
|
</BODY>
|
|
</HTML>
|