|
0. 如何阅读本文档
如果你是首次安装:请一定要阅读从这里到安装部分结束的所有内容,并且追踪你所遇到的链接。如果你有任何其它问题,返回到目录并搜索主题,读取FAQ,或者尝试用grep搜索整个文件。
这个文件的主要原则:如果一个功能没有被编入文档,那么它不存在。如果我没有说你能用电视选台器音频编码,你就不能。不过健康程度的综合能力还是受欢迎的。祝你好运。你将需要它的,让我引用mplayer-users邮件列表中 Chris Phillips的话作为另一个好的建议:
“我以前说过新手和白痴之间的区别在于:无论,你实际上对一个系统(Linux,汽车,女孩) 了解多少,你应该总能够退一步想想并且保持客观,否则,恕我直言你是公认的白痴。跟我住在一起的女孩认定吸尘器坏了因为它不吸进东西,而从不想更换袋子,因为她以前从来没有做过...那就是愚蠢,而不仅仅是不知道做什么...仅仅因为不是那么熟悉你的环境不是你的a)懒惰和b)忽视的借口。如此多人们似乎看到“error” 就停止...只有极少数真正读取了冒号另一边的东西”。
1. 介绍
MPlayer是Linux 上的电影播放器(也能跑在许多其它Unices上,甚至非x86CPU上,参见移植部分)。它能使用众多的本地的,XAnim,RealPlayer,和Win32 DLL编解码器,播放大多数MPEG,VOB,AVI,OGG,VIVO,ASF/WMV,QT/MOV,FLI,RM,NuppelVideo,yuv4mpeg,FILM,RoQ文件。你还能观看VideoCD,SVCD,DVD,3ivx,RealMedia,和DivX格式的电影(你根本不需要avifile库)。mplayer的另一个大的特色是广泛的输出设备支持。它可以在X11,Xv,DGA, OpenGL,SVGAlib,fbdev,AAlib,DirectFB下工作,而且你也能使用GGI和SDL(由此可以使用他们支持的各种驱动模式) 和一些低级的硬件相关的驱动模式(比如Matrox,3Dfx和Radeon,Mach64,Permedia3)!他们大多数支持软件或者硬件缩放,因此你能在全屏下观赏电影。MPlayer还支持通过硬件MPEG解码卡显示,诸如DVB 和DXR3与Hollywood+。可以使用European/ISO 8859-1,2(匈牙利语,英语,捷克语等等),西里尔语,韩语的字体的清晰放大并且反锯齿的字幕(支持10种格式),和on screen display(OSD)你又觉得如何?
这个播放器能够稳如泰山的播放被破坏的MPEG文件(对一些VCD有用),而它能播放著名的windows media player 都打不开的的坏的AVI文件。甚至,没有索引部分的AVI文件可播放,你能暂时由重建他们的索引-idx选择,或者用MEncoder永久重建,使你能够在影片中搜索!如你所见,稳定和质量是最重要的事情,而且他的速度是也惊人的。
MEncoder(MPlayer's Movie Encoder)是一个简单的电影编码器,设计用来把MPlayer可以播放的电影 (AVI/ASF/OGG/DVD/VCD/VOB/MPG/MOV/VIV/FLI/RM/NUV/NET/PVA)编码成别的MPlayer可以播放的格式(具体列表见下面)。它可以使用各种编解码器进行编码,例如 DivX4(1或2 passes),libavcodec, PCM/MP3/VBR MP3音频。同时也有强大的插件系统用于控制视频。
MEncoder的特性
从MPlayer支持的广泛的文件格式和解码器的输入进行编码
编码到ffmpeg的libavcodec的所有编解码器
从V4L兼容的电视选台器输入编码
编码/多路传输成具有适当索引的交错的AVI文件
从外部音频流创建文件
1, 2或3 pass编码
VBR的MP3音频 - 重要提示: VBR MP3音频不总是能被Windows的播放器正常的播放!
PCM音频
流复制
输入的自动A/V同步(基于PTS,使用-mc 0选项来禁用)
使用-ofps选项进行FPS修正(当把29.97fps的VOB编码成24fps的AVI的时候有用)
使用我们强大的插件系统(crop, expand, flip, postprocess, rotate, scale, rgb/yuv conversion)
可以把DVD/VOB字幕和文本字幕编码到输出文件中
可以把DVD字幕提取为Vobsub格式
计划中的特性
更加广泛的编/解码格式/编解码器 (用DivX4/Indeo5/VIVO流创建VOB文件
MPlayer和MEncoder按照GNU General Public License Version 2发布。
1.1 历史
这一年以前开始的... 我(A'rpi)已尝试Linux下的许多播放器(mtv,xmps,dvdview,livid/oms,videolan,xine,xanim,avifile,xmmp),但是他们全都有一些问题。多半与特殊的文件或音频与视频的同步有关。他们中大多数不能同时播放MPEG1,MPEG2和AVI(DivX)文件。许多播放器也有图象质量或者速度的问题。因此,我已决定自己写/修改一个...
mpg12play v0.1-v0.3:2000年9月22-25日 第一次尝试,总共只用了半小时来hack!到版本0.3我都使用www.heroinewarrior.com的libmpeg3,但是它有图象质量和速度的问题。
mpg12play v0.5-v0.87:2000年9月28日-10月20日 用Dirk Farin的DVDview替换了原来的Mpeg codec,它是一个很不错的东东,但是它很慢并且使用写成C++(我讨厌C++!!!)
mpg12play v0.9-v0.95pre5:2000年10月21日-11月2日 Mpeg codec改用Aaron Holtzman与的Michel Lespinasse的libmpeg2(mpeg2dec)。它十分出色,优化过的十分快速的C代码和完美的图象质量以及100%的MPEG标准的一致性。
MPlayer v0.01: 2000年11月11日 第一个MPlayer。
MPlayer v0.3-v0.9:2000年11月18日-12月4日 它包含两个程序: mpg12play v0.95pre6和我的新的简单的基于avifile的Win32 DLL Loader的AVI播放器'avip'。
MPlayer v0.10:2001年1月1日 MPEG和AVI播放器做成了一个二进制文件!
MPlayer v0.11pre系列: 一些新的开发者加入了,从0.11开始mplayer项目成为一个team-work!增加了.ASF文件支持,和OpenDivX(见www.projectmayo.com)编/解码支持。
MPlayer v0.17a“IdegCounter”2001年4月27日 在艰苦发展了4个月的0.11pre之后的正式版本!试试看,然后等着被震撼!成千上万的新的特性添加...当然同时旧的代码也被改进,移去了一些bug。
MPlayer 0.18“BugCounter”2001年7月9日 0.17发布2个月后的新的正式版。完全的ASF支持,更多字幕格式,引入libao(类似于libvo但是针对音频),比以往任何时候更加稳定,如此等等。这肯定是个必需品!
MPlayer 0.50“Faszom(C)ounter”2001年10月8日 Hmm。又一次新版本。众多新的特性,Beta版的GUI,bug修正,新的vo和ao驱动模式,许多系统的移植,包括opensource DivX codecs和更多得多的改进。尝试一下!
MPlayer 0.60“RTFMCounter”2002年1月3日 支持MOV/VIVO/RM/FLI/NUV文件格式,本地的CRAM,Cinepak,ADPCM 编解码器,支持XAnim的二进制的编解码器;DVD字幕支持,首此发布MEncoder,电视截取,缓存,liba52,无数的修正。
MPlayer 0.90pre10 "The BirthdayCounter" 2002年11月11日 尽管这不是一个正式发行版,但我决定提到它因为它诞生在MPlayer v0.01发布的两年之后。生日快乐,MPlayer!
MPlayer 0.90rc1 "The CodecCounter" Dec 7, 2002 同样不是一个正式发行版,但在添加了Sorenson 3(QuickTime)和Windows Media 9的支持之后, MPlayer成为世界上第一个支持所有已知视频格式的电影播放器!
MPlayer 0.90“?”日期未知
1.2 安装
在这章中我将试图指引你通过编译和配置MPlayer的过程,它不大容易的,不过也见得一定很难的。如果你遇到不同于我所解释的现象,请的通过搜索这篇文件来查找你的回答。如果你遇到链接,请跟踪他们并且细心读取他们包含的内容。它将花费一些时间,但是它确实是值得的。
你需要一个相当新的系统。在Linux上,推荐2.4.x的内核。
软件要求:
binutils -- 建议版本2.11.x。这个程序负责生成MMX/3DNow!/etc指令,因此十分重要。
gcc -- 建议版本是:2.95.3(或者2.95.4)和3.2+。永远不要使用2.96或者3.0.x!他们产生错误的MPlayer的代码。如果你决定更换2.96的gcc,那么不要只是因为新而决定采用3.0.x!3.0.x的早期版本甚至比2.96更buggy。因此不如降级到2.95.x(也把libstdc++降级,其它程序可能需要它)或者根本不升/降级(但这种情况下请对运行时的问题作好准备)。如果你一定要使用3.x.x请使用最新的版本,早先的发行版本有各种各样的错误,确信你使用的至少是3.1,它通过测试且工作正常。关于gcc 2.96的bug(仍然没有修正,他们在MPlayer中被绕过!)的详细信息能在这里和FAQ中找到。
XFree86 -- 建议总使用最新版本(4.2.1)。正常来说,每个人会这样做,因为XFree86从4.0.2开始,它包含了用来使其能够在它支持的卡片上使用硬件YUV加速(快速的图象显示)的XVideo扩展(在某些地方被称作Xv)。
确保也安装了开发包,否则它将不工作。
对于一些视频卡你不需要XFree86。参见下面的列表。
make -- 建议总使用最新版本(至少3.79.x)。这通常不太重要。
SDL -- 它不是必须的,但是在某些情况下(损坏的音频,在xv驱动模式下奇怪地延迟的显卡)能帮助。总使用最新(1.2.x或以上)的。
libjpeg -- 可选的JPEG解码器,用于-mf参数和一些QT MOV文件。如果你计划做jpeg文件的工作那么MPlayer和MEncoder都需要它。
libpng -- 推荐也是默认的( M)PNG译码器。GUI需要它。对MPlayer和MEncoder也有用。
lame -- 推荐,MEncoder需要用它把音频做MP3编码,建议总使用最新版本(3.90或以上)。
libogg -- 可选,用于播放OGG文件格式。
libvorbis -- 可选,用于播放OGG Vorbis音频。
LIVE.COM Streaming Media -- 可选,用于播放RTSP/RTP流。
directfb -- 可选,从http://www.directfb.org获得
cdparanoia -- 可选,用于CDDA支持
libfreetype -- 可选,用于TTF字体支持。至少需要2.0.9以上版本。
libxmms -- 可选, 用于XMMS输入插件的支持。要求至少1.2.7以上版本。
编解码器:
libavcodec:这个编解码器包可以在多重平台上对H263/MJPEG/RV10/DivX3/DivX4/DivX5/MP41/MP42/WMV1编码格式的视频流和 WMA(Windows Media Audio)v1/v2的音频流进行解码,它同时也是已知完成这些任务最快的解码器。详细情况请看libavcodec部分。特性:
在非x86机器上的对上述的各种编码格式解码。
以上述大多数编码格式编码。
这是可用的最快的DivX/3/4/5和其它MPEG4类型的解码器,高度推荐。
Win32编解码器:如果你计划在x86构架的机器上使用MPlayer,你将有可能需要他们。在开始MPlayer的编译之前从我们的编解码器页下载Win32编解码器并安装到/usr/lib/codecs,否则将不会编译Win32支持代码!
注意: avifile项目有类似的codecs包,但是它不同于我们的,如此如果你想使用所有支持的编解码器,安装我们的包(别担心, avifile使用它不会有任何问题).特性:
如果你想要播放或者编码例如以各种各样的硬件压缩器记录的电影,像选台器卡,数码相机(例如:DV,ATI VCR,MJPEG),你将需要它。如果你想要播放WMV8,WMV9/WMA9格式的电影那就需要它。播放老的以MP41或者MP42视频的ASF(尽管这些文件的音频常常是VoxWare -- 它是通过Win32编解码器解码的),或者WMV7是不需要它的。
QuickTime编解码器:在x86平台上这些编解码器可以用来解码Sorenson v1/v3, RPZA, 和其他QuickTime视频,和QDesign音频流。 安装方法可以在Sorenson视频编解码器部分找到。
DivX4与DivX5:关于这编码格式的信息可从DivX4与DivX5节得到。如果你不想用它来编码,你有可能不会想要这个解码器,因为libavcodec(见上面)比它快得多。
特性:
用MEncoder进行1 pass或2 pass编码。
播放老的DivX3格式的电影比Win32 DLL快得多但是比libavcodec慢!
它封闭源码的,而且仅仅有一个x86平台的版本。
XviD:开源的Divx4Linux的编码替代品
特色:
用MEncoder进行1 pass或2 pass编码。
这是开源的,所以是多平台的。
它的编码速度比divx4快2倍 -- 在几乎相同的质量的情况下
XAnim codecs对解码3ivx和Indeo 3/4/5格式,和一些旧的格式的电影效果是最好(全屏幕,硬件YUV缩放)。同时,他们是多平台的,因此这是在非x86平台上播放Indeo的唯一的方法(当然,除了直接使用XAnim之外 。但是例如Cinepak电影MPlayer自己的Cinepak解码器播放才有最好的效果!
对于Ogg Vorbis音频解码你需要正确地安装libvorbis。如果可能的话尽量使用deb/rpm包装,或者用源代码编译(这是Vorbis CVS的每天最新的tarball)。
MPlayer能使用RealPlayer 8或RealONE的库来播放包括RealVideo 2.0 - 4.0格式的视频和Sipro/Cook格式的音频的文件。安装方法以及关于它的更多信息参见RealMedia文件格式部分!
显卡
一般地显卡可分为两种。一种(较新的显卡)支持硬件缩放和YUV加速,另一种卡没有。
YUV显卡
他们能在他们显存可以的范围中用任何分辨率显示和缩放(zoom)图像,只占用很少的CPU(即使在放大的时候),所以你能得到清晰而且飞快的全屏播放。
Matrox G200与G400与G450与G550显卡:虽然提供了一个Vidix驱动,但还是推荐使用旧的mga_vid内核模块,因为它工作起来好得多。关于其安装和使用参见mga-vid部分。在编译MPlayer之前进行这些步骤这一点很重要,否则不会编译mga_vid的支持代码。同时也请查看Matrox的电视输出部分。 如果你是非Linux用户,你的唯一的选择是VIDIX驱动:请看VIDIX部分!
3Dfx Voodoo3与Banshee显卡:请参见tdfxfb部分以了解如何获得大幅的速度提升。在编译MPlayer之前进行这些步骤这一点很重要,否则不会编译3Dfx的支持代码。也请参考3dfx电视输出部分。如果你使用X,至少使用4.2.0版本,因为4.1.0和更早发行版本的3dfx的Xv驱动是坏的!
ATI显卡:下列的显卡提供了Vidix驱动:Radeon,Rage128, Mach64(Rage XL/Mobility,Xpert9 。也请参考电视输出文档中的ATI电视输出部分,看看Linux与MPlayer是否支持你的显卡的电视输出。
S3显卡:Savage和Virge/DX芯片有硬件加速功能。尽可能使用最新的XFree86版本,老的的驱动很buggy。 Savage的芯片的YV12显示有问题,具体细节请看S3 Xv部分。更老的,Trio显卡没有,或只有很慢的硬件加速功能。
nVidia显卡:可能是也可能不是视频播放的好的选择。如果你没有一个GeForce2(或更新的)显卡,你不太可能在运行中不遇到bugs。 XFree86中内建的nVidia驱动不支持所有nVidia显卡(GeForce2以下)的硬件YUV加速。你必须从nVidia.com下载nVidia的封闭源码的驱动。细节参见nVidia Xv驱动部分。同时也查看nVidia电视输出部分如果你希望使用一个电视。
3DLabs GLINT R3和Permedia3:提供VIDIX驱动(pm3-vid)。细节参见VIDIX部分。
其它卡片:不是上述的任何一个?
试试XFree86的驱动(和你的显卡)是否支持硬件加速。细节参见Xv部分。
如果不是,那么你的操作系统不支持你显卡的视频特性。
如果它在Windows下能够使用硬件缩放,那并不不意味着在Linux或者其它OS下做同样的事情,它依赖于驱动!大多数制造厂不做Linux驱动也不公布芯片标准。所以,使用他们的显卡你很不走运。看‘非YUV显卡’:
非YUV卡片
可以通过使用软件缩放(使用-zoom或者-vf scale参数,但是我先警告你:这会比较慢),或者通过切换成较小的的分辨率来实现全屏播放,例如352x288。如果你没有YUV加速,我们推荐使用后一种方法。视频模式切换通过-vm选项打开,它能用于下列驱动:
使用XFree86:细节参见X11驱动和DGA驱动部分。推荐使用DGA!也可以尝试通过SDL使用DGA,有时这种办法更好。
不使用XFree86:按下列顺序尝试驱动模式:vesa,fbdev, svgalib,aalib。
某些显卡:
Cirrus Logic显卡:
GD 7548: 板载显卡并用Compaq Armada 41xx系列的笔记本测试。
XFree86 3:能使用8/16bpp模式。然而,这个驱动在800x600@16bpp下狂慢而且buggy推荐: 640x480@16bpp
XFree86 4: 如果不仅用加速Xserver会在启动后不久失去响应,但这样之后就比XFree86 3慢了。没有XVideo
FBdev: 这个显卡只兼容VBE 1.2,所以VESA帧缓冲用不了,当尝试用UniVBE来绕过时, 帧缓冲显示的全是碎片根本用不了。
VESA: 这个显卡只兼容VBE 1.2,所以VESA输出用不了。无法通过使用UniVBE解决
SVGAlib: 检测成更老的Cirrus芯片. 用-bpp 8可以使用但很慢
声卡
Soundblaster Live!:通过这种声卡你能使用4或者6(5.1)声道AC3解码而不只是2声道。请看软件AC3解码一节。对于硬件AC3输出你必须使用ALSA 0.9的oss仿真!
C-Media的SP/DIF输出:这些声卡可以使用硬件AC3输出,参见硬件AC3解码一节。
其它声卡的特性MPlayer是不支持的。 强烈建议阅读声卡部分!
特性
考虑一下你是否需要GUI。如果需要,在进行编译之前,请看GUI部分。
如果你想要安装MEncoder(我们的强大的全功能编码器),请看MEncoder部分。
如果你有一张V4L兼容的电视选台器的卡,并且希望用MPlayer观看/截取并且录制电影,请看电视输入一节。
有一个精致的OSD菜单可供使用。查看OSD菜单部分。
接着编译MPlayer:
./configure
make
make install
到此为止,MPlayer就可以使用了。$PREFIX/share/mplayer目录下包含了codecs.conf文件,程序通过它来了解所有的编解码器和他们的能兼容的格式。该文件应该与主程序一起更新!
检查在你的home目录(~/.mplayer/codecs.conf)中是否有旧的MPlayer版本留下的codecs.conf,如果有就删掉它!
Debian的用户能自己制作.deb安装包,这十分简单。直接在MPlayer的根目录下执行fakeroot debian/rules binary。详尽的步骤请看Debian安装包的制作。
./configure的输出请务必一定阅读,还有configure.log文件,其中的信息会告诉你将什么将被编译,什么将不编译。你也可能需要查看config.h和config.mak文件。
如果你已经安装一些库文件,却没有被./configure发现,那么检查你是否也安装了正确的头文件(通常在-dev包中)以及他们的版本符合要求。 configure.log通常会告诉你缺什么。
尽管并非必需,你确实应该安装字体以使用OSD和字幕功能。推荐的方法是安装一个TTF字体文件并让MPlayer使用它。阅读字幕和OSD一节来了解其细节。
1.3 GUI有吗?
GUI需要GTK 1.2.x(它不是GTK的,但是面板是的)。skin被保存为PNG格式,因此你需要安装gtk,libpng(和他们的devel包,一般是gtk-dev和libpng-dev)。你必须在运行./configure时使用--enable-gui来编译它的代码。然后,你可以用下列方法之一打开GUI方式
在你的config文件中添加gui=yes
ln -s $PREFIX/bin/mplayer $PREFIX/bin/gmplayer,然后运行gmplayer。
目前由于技术原因,目前你不能在命令行下使用-gui选项。
因为MPlayer不自带skin,所以如果你想要使用GUI,你必须自己下载它们。参见下载页。他们应该被解压到系统通用的目录($PREFIX/share/mplayer/Skin),或者解压到$HOME/.mplayer/Skin。 MPlayer在默认情况下会在这些的目录里寻找一个叫default的目录,但是你能使用-skin newskin选项或在config文件中添加skin=newskin来强制使用*/Skin/newskin目录下的skin。 |
|