查阅编解码器状态表来了解完整的,每日更新的列表。
所有之中最重要的:
如果你有一个Win32解码器没有列出来而且目前没有被支持,请读取解码器导入HOWTO并且帮助我们添加对它的支持。
这部分包含关于Mayo工程的DivX4和DivX5编解码器的信息,他们的第一个可用的alpha版本是 OpenDivX 4.0 alpha 47和48。 对它们的支持以前包括在MPlayer中,并且是默认编译的。 我们也使用其后处理代码来有选择地提高MPEG1/2电影的视觉质量。 现在我们使用我们自己的,对于所有文件类型。
这个解码器的新一代产品称为DivX4,它甚至能解码以声名狼籍的DivX编解码器制作的电影! 此外,它比本地的Win32 DivX DLL快得多比但是比libavcodec慢。 因此,不鼓励把它当解码器用。 然而,它对编码有用。 这个编解码器的缺点之一是它目前不开放源代码。
DivX4Linux有两种工作方式:
-vc odivx
-vc divx4
-vc odivx
方式通常更快,因为它以YV12(planar YUV 4:2:0)格式传输图象数据,这样占用少的多的总线带宽。对于packed YUV方式
(YUY2,UYVY)使用-vc divx4
方式。对于RGB模式两者速度是相同的,差别最多是你当前的色彩深度。
注意:如果你的-vo
驱动支持直接渲染,那么-vc divx4
可以是很快甚至最快的解决方案。
这个编解码器可以在avifile下载,解压之后,以root权限运行./install.sh
,
另外别忘了把/usr/local/lib
添加到你的/etc/ld.so.conf
中然后运行ldconfig
。
想得到核心库的CVS版本可以这样做:
cvs -d:pserver:anonymous@cvs.projectmayo.com:/cvsroot login
cvs -d:pserver:anonymous@cvs.projectmayo.com:/cvsroot co divxcore
cd divxcore/decore/build/linux make cp libdivxdecore.so /usr/local/lib ln -s /usr/local/lib/libdivxdecore.so /usr/local/lib/libdivxdecore.so.0 cp ../../src/decore.h /usr/local/include
cd ../../../encore/build mkdir linux cd linux cp path/Makefile . make cp libdivxencore.so /usr/local/lib ln -s /usr/local/lib/libdivxdecore.so /usr/local/lib/libdivxdecore.so.0 cp ../../src/encore.h /usr/local/include
如果正常安装了DivX4/DivX5,MPlayer会自动检测到它,只要正常编译就可以。如果没有检测到,你肯定没有正确安装或者配置它。
FFmpeg包括一组开放源码的解码器包,能够以兼容方式解码以 H263/MJPEG/RV10/DivX3/DivX4/DivX5/MP41/MP42/WMV1编码格式编码的视频流。它不仅能对其中一些进行编码, 同时提供比Win32解码器或DivX.com的DivX4/5库更高的速度!
它包含很多不错的解码器,尤其重要的是MPEG4的几个变种:DivX 3,DivX 4,DivX 5,Windows Media Video 7(WMV1)。另外一个有趣的东西是WMA解码器。
如果你使用MPlayer发行版,在你的源码包里就有libavcodec,正常编译即可。如果你使用CVS的MPlayer 那么你必须从FFmpeg的CVS树中提取libavcodec因为FFmpeg 0.4.5不能用于MPlayer。你应该这样来完成:
cvs -d:pserver:anonymous@cvs.ffmpeg.sourceforge.net:/cvsroot/ffmpeg login
cvs -d:pserver:anonymous@cvs.ffmpeg.sourceforge.net:/cvsroot/ffmpeg co ffmpeg
libavcodec
目录从FFmpeg的源代码里移到MPlayer的CVS树的根目录下。看起来应该象这样:
main/libavcodec
注意:CVS的MPlayer确实有libavcodec子目录,但是它确实没有包含libavcodec的源代码!你必须按照上述的步骤来得到这个库的源代码。
用FFmpeg和我的Matrox G400,我甚至能在我的K6/2 500上无掉帧的观看最高分辨率的DivX电影。
前言:
XAnim的二进制的解码器包里面有一份关于合法捆绑软件许可的声明,除其它限制之外,禁止用户用除XAnim外的任何程序使用其解码器。然而,
XAnim的作者到目前为止没有就解码器有关的问题对着任何人采取法律行动。
MPlayer可以使用XAnim的解码器解码。按照下列指令来开启它:
--with-xanimlibdir
选项来告诉configure在何处可以找到XAnim的解码器。缺省的话,它在
/usr/local/lib/xanim/mods, /usr/lib/xanim/mods and /usr/lib/xanim
里寻找。或者你可以把XANIM_MOD_DIR环境变量
设置为XAnim解码器所在的目录。vid_cvid.xa, vid_h263.xa, vid_iv50.xa
。XAnim的视频解码器族号码是10,因此你可以使用-vfm 10
选项让MPlayer尽可能的使用他们。
测试过的解码器包括:Indeo 3.2,4.1,5.0,CVID,3ivX,h263。
MPlayer能播放Vivo(1.0和2.0)视频。对于1.0的文件最适合的解码器是FFmpeg的H263解码器,你可以用-vc ffh263
选项
(默认的)来使用它。对于2.0个文件,使用ivvideo.dll这个Win32 DLL文件,将它安装在/usr/lib/win32
或者你放Win32解码器的那个什么地方。
MPEG1和MPEG2用本地的多平台的libmpeg2库解码,其源代码被包括在MPlayer中。对于buggy的MPEG 1/2视频文件我们通过截获sig11 (segmentation fault),然后迅速再次初始化解码器,从失败的地方继续的方法来处理。这种恢复技术会带来无法估量的速度损失。
这是微软的又老又差的编码格式。过去它用msvidc32.dll
的Win32解码器解码,现在我们有我们自己的开放源码的实现(由Mike Melanson提供)。
MPlayer默认将使用自己的开源的,多平台的Cinepak解码器。它支持YUV输出,所以只要硬件驱动允许它将使用硬件缩放。
推荐下载并安装RealPlayer8或者RealONE,因为MPlayer能使用他们的库来解码RealVideo 2.0或者RealVideo 3.0的视频文件。
MPlayer的配置脚本应该会在一个完全安装的RealPlayer的标准位置找到它的库。如果它没找到,用--with-reallibdir
选项告诉configure到哪里去找。
注意:RealPlayer库目前只能用于x86平台上的Linux,FreeBSD,NetBSD和Cygwin。
XViDOpenDivX编解码器的开发分支。故事发生在Mayo工程把OpenDivX变成封闭源码的DivX4的时候,那些从事于OpenDivX的非Mayo工程 的人们感到愤怒,于是开始了XViD。所以两个项目有相同的起源。
XViD目前只能从CVS中得到。这是下载和安装的指令:
cvs -z3 -d:pserver:anonymous@cvs.xvid.org:/xvid login
cvs -z3 -d:pserver:anonymous@cvs.xvid.org:/xvid co xvidcore
cd xvidcore/build/generic
Makefile.linux
。make -f Makefile.linux
encore2.h
和decore.h
,把它们复制到/usr/local/include/
。--with-xvidcore=/path/to/libcore.a
选项重新编译MPlayer。Sorenson是Sorenson Media开发的一个视频编解码器族,授权给苹果公司在它们的QuickTime播放器中使用。 我们目前可以使用下列解码器解码所有的Sorenson视频文件:
-vc svq1
和-vc ffsvq1
选项调用它们中的任意一个。有些文件可能只能在其中一个上工作,而另一个就行,所以
两个解码器都试试。注意:目前只支持32位的Intel平台。
$ ./configure --enable-qtx-codecs
/usr/lib/win32
)所有音频编码中最重要的是:
这是含有AC3音频的文件的默认解码器。
AC3解码器能为了2,4或者6个扬声器创建音频混合输出。当配置为6个扬声器时,这个解码器向声卡驱动提供所有AC3通道的单独的输出, 允许彻底的“环绕音效”感受而不需要使用需要hwac3解码器的外部AC3解码器。
使用-channels
选项可以选择输出的通道数。使用-channels 2
获得立体声的降混频。
对于4通道的降混频(左前,右前,左环绕和右环绕),使用-channels 4
。在这种情况下,中心通道的任何输出将与前通道均匀混合。
-channels 6
将按照编码时的形式输出所有AC3通道-- 依次为左,右,左环绕,右环绕,中间和低频效果。
默认的输出通道数是2。
为使用超过2个通道的输出,你需要使用OSS,和一块能通过SNDCTL_DSP_CHANNELS ioctl支持适当输出通道数的声卡。合适的驱动的一个例子是 2001年8月的或者更新的emu10k1(用于Soundblaster Live!卡)(ALSA的CVS应该也能工作)。
你需要一个AC3兼容声卡,加上数字输出(SP/DIF)。声卡的驱动必须正确地支持AFMT_AC3格式(C-Media就支持)。把你的AC3解码器连接到SP/DIF输出,
然后使用-ac hwac3
选项。这还在试验阶段但已经知道能用于C-Media声卡,使用ALSA驱动(但不能是OSS)的Soundblaster Live!
还有DXR3/Hollywood+ MPEG译码卡。
libmad是多平台的MPEG音频解码库。它不能很好的处理损坏的文件,而且有时候搜索也有问题。
为了支持它,加上--enable-mad
配置选项编译。
VIVO文件的使用的音频编码取决于它是VIVO/1.0还是VIVO/2.0。VIVO/1.0文件使用g.723音频,而VIVO/2.0文件使用Vivo Siren音频。
他们两个都支持。你能从MPlayer站点下载g.723/Siren的Win32 DLL,
然后把它复制到/usr/lib/win32
目录下。
至于如何安装RealPlayer库,参见RealMedia文件格式部分。
QDesign音频流(fourcc: QDMC, QDM2)出现在MOV/QT文件中。两个版本的编码格式都可以用QuickTime的库解码。 安装步骤参见Sorenson视频编解码器部分。
Qualcomm音频流(fourcc: Qclp)出现在MOV/QT文件中。它可以用QuickTime库解码。 安装步骤参见Sorenson视频编解码器部分。
VFW(Video for Windows)是Windows的老的视频API。它的解码器以.DLL或者(很少的).DRV为扩展名。 如果MPlayer无法播放你的AVI并显示这种信息:
UNKNOWN video codec: HFYU (0x55594648)
它意味着你的AVI在编码时使用了HFYU fourcc(HFYU = HuffYUV codec,DIV3 = DivX Low Motion,等等...)
的编码格式。现在你知道了,你必须查明Windows为了播放这个文件装载了哪一个DLL。在我们的情况下,
system.ini
在这样的一行上包含这个信息:
VIDC.HFYU=huffyuv.dll
因此,你需要huffyuv.dll
文件。注意,音频解码器通过MSACM前缀指定:
msacm.l3acm=L3codeca.acm
这是MP3编码格式。现在你有了所有必要的信息(fourcc,解码器文件,AVI样本),把你的解码器支持要求通过邮件提交, 并把相关文件上载到我们的FTP站点:
ftp://ftp.mplayerhq.hu/MPlayer/incoming/[codecname]/
DirectShow是较新的视频API,比它的前辈更恶劣。对于DirectShow事情变的困难了,
system.ini
不再包含需要的信息,它们被储存在注册表里,此外。新方法:使用微软的GraphEdit(快速)
graphedit.exe
。DirectShow Filters
项目。DisplayName
一项中看反斜杠后面花括号里面的文字并把它记下来(小短横分隔开的五块,就是GUID)。Filename
项里指定的文件。注意:如果没有Filename
项而DisplayName
中包含类似device:dmo
的东西,
那么这是一个DMO-Codec,MPlayer目前不支持
老方法:做个深呼吸然后开始搜索注册表...
regedit
。Ctrl-f
,禁用头两个复选框,填写解码器的fourcc(例如TM20)。C:\WINDOWS\SYSTEM\TM20DEC.AX
)。注意:如果搜索失败,试试选上所有的复选框。你可能找到错误的内容,不过说不定你会走运...
现在你有所有必要的信息(fourcc,GUID,解码器文件,AVI样本),把你的解码器支持要求通过邮件提交,并把相关文件上载到我们的FTP站点
ftp://ftp.mplayerhq.hu/MPlayer/incoming/[codecname]/