MPlayer - Linux下的电影播放器

© 2000-2003 Arpad Gereoffy (A'rpi/ESP-team)
http://www.mplayerhq.hu

[汉语] [英语] [匈牙利语] [德语] [法语] [波兰语] [意大利语]


目录



0. 如何阅读本文档

如果你是首次安装:请一定要阅读从这里到安装部分结束的所有内容,并且追踪你所遇到的链接。 如果你有任何其它问题,返回到目录并搜索主题,读取FAQ,或者尝试用grep搜索整个文件。

这个文件的主要原则:如果一个功能没有被编入文档,那么它不存在。如果我没有说你能 用电视选台器音频编码,你就不能。不过健康程度的综合能力还是受欢迎的。祝你好运。你将需要它的:), 让我引用mplayer-users邮件列表中 Chris Phillips的话作为另一个好的建议:

“我以前说过新手和白痴之间的区别在于:无论,你实际上对一个系统(Linux,汽车,女孩:D) 了解多少,你应该总能够退一步想想并且保持客观,否则,恕我直言你是公认的白痴。跟我住在一起的女孩认定吸 尘器坏了因为它不吸进东西,而从不想更换袋子,因为她以前从来没有做过...那就是愚蠢,而不仅仅是不 知道做什么...仅仅因为不是那么熟悉你的环境不是你的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文件。 你还能观看VideoCDSVCDDVD3ivxRealMedia,和DivX格式 的电影(你根本不需要avifile库)。mplayer的另一个大的特色是广泛的输出设备支持。它可以在X11,Xv,DGA, OpenGL,SVGAlib,fbdev,AAlib,DirectFB下工作,而且你也能使用GGI和SDL(由此可以使用他们支持的各种驱动模式) 和一些低级的硬件相关的驱动模式(比如Matrox,3Dfx和Radeon,Mach64,Permedia3)!他们大多数支持软件或者硬件缩放, 因此你能在全屏下观赏电影。MPlayer还支持通过硬件MPEG解码卡显示,诸如DVBDXR3与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和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)文件。 许多播放器也有图象质量或者速度的问题。因此,我已决定自己写/修改一个...

1.2 安装

在这章中我将试图指引你通过编译和配置MPlayer的过程,它不大容易的,不过也见得一定很难的。 如果你遇到不同于我所解释的现象,请的通过搜索这篇文件来查找你的回答。如果你遇到链接,请跟踪他们并且细心读取他们包含的内容。 它将花费一些时间,但是它确实是值得的。

你需要一个相当新的系统。在Linux上,推荐2.4.x的内核。

软件要求:

编解码器:

显卡

一般地显卡可分为两种。一种(较新的显卡)支持硬件缩放和YUV加速,另一种卡没有。

YUV显卡

他们能在他们显存可以的范围中用任何分辨率显示和缩放(zoom)图像,只占用很少的CPU(即使在放大的时候),所以你能得到清晰而且飞快的全屏播放。

非YUV卡片

可以通过使用软件缩放(使用-zoom或者-vf scale参数,但是我先警告你: 这会比较慢),或者通过切换成较小的的分辨率来实现全屏播放,例如352x288。如果你没有YUV加速,我们推荐使用后一种方法。视频模式切换通过-vm选项打开,它能用于下列驱动:

某些显卡:

声卡

特性

接着编译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.hconfig.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方式

目前由于技术原因,目前你不能在命令行下使用-gui选项。

因为MPlayer不自带skin,所以如果你想要使用GUI,你必须自己下载它们。参见下载页。 他们应该被解压到系统通用的目录($PREFIX/share/mplayer/Skin),或者解压到$HOME/.mplayer/Skin。 MPlayer在默认情况下会在这些的目录里寻找一个叫default的目录, 但是你能使用-skin newskin选项或在config文件中添加skin=newskin来强制使用*/Skin/newskin目录下的skin。

1.4 字幕和OSD

MPlayer能在播放电影的同时显示字幕。目前支持下列格式:

MPlaye可以把上面列出的字幕格式(除了前三个)转换成下列的格式,使用下列选项:

使用不同格式的命令行选项稍有不同:

VobSub字幕

VobSub字幕包括一个大的(几兆).sub文件,和可选的.idx和/或者.ifo文件。
用法: 如果你有类似sample.subsample.ifosample.idx之类的文件 -- 你必需使用-vobsub sample -vobsubid <id>的参数(当然必要时加上路径)。 -vobsubid 选择类似于播放DVD时的-sid,用它你可以选择不同的字幕轨道(语言)。当省略-vobsubid选项时, MPlayer将尝试使用-slang中指定的语言,如果没有找到将使用.idx文件中的langidx项指定的语言,如果这些尝试都失败了, 那就将没有字幕显示。

其它字幕

其它格式由一个单一的包含时间,位置和正文信息的文本文件组成。
用法: 如果你有类似sample.txt之类的文件,你必须使用-sub sample.txt (可以加上完整路径)。

调整字幕的时间和位置

-subdelay<sec>
延迟字幕< sec >秒。可以是负数。
-subfps<rate>
规定字幕文件按每秒多少帧速度显示(浮点数)
-subpos<0-100>
规定字幕显示的位置。

如果你使用MicroDVD字幕文件时遇到电影和字幕之间的延迟不断增加的问题,很有可能你的电影文件和字幕文件的帧速度不同。
请注意,MicroDVD字幕格式用绝对帧数来计时,因此-subfps选项不能用于这种格式。因为MPlayer没法猜测 字幕文件的帧速度,你必须手工修改它。在MPlayer的FTP站点的contrib目录中有一个小的perl脚本可以替你做这种转化。

当你播放一个电影时MPlayer将尝试猜测你想要使用的字幕文件,在大多数情况下,字幕文件和电影文件在同一个目录下,并且有相同的名字, 你不需要设置有关字幕的选项,只要正常播放电影就可以了,MPlayer会自动播放字幕。

关于DVD字幕,请看DVD一节。

1.4.1 MPlayer自己的字幕格式(MPsub)

MPlayer引入一种称为MPsub的新的字幕格式。它由Gabucino设计。基本上,其主要的特性是基于动态时间 (虽然它有基于帧的模式)。例如(引自DOCS/tech/mpsub.sub):

# first number : wait this much after previous subtitle disappeared
# second number : display the current subtitle for this many seconds

15 3
A long long, time ago...

0 3
in a galaxy far away...

0 3
Naboo was under an attack.

因此如你所见,主要的目标是使字幕的编辑/计时/合并/分割变得容易。同时,如果你 -- 比方说 -- 有一个SSA字幕但是它 与你的电影却有严重的时间/延迟问题,你只要简单运行mplayer dummy.avi -sub source.ssa -dumpmpsub。 在当前目录中将生成一个dump.mpsub文件,它包含源字幕的正文,但是使用MPsub格式。 然后,你就能字幕中自由地添加或减去任意秒。

字幕的显示使用一种称为'OSD', On Screen Display的技术。OSD被用来显示当前的时间,音量条,进度条等等。

1.4.2 安装OSD和字幕

你需要一个MPlayer字体包来使用OSD和字幕功能。有许多方法获得它:

如果你使用非TTF字体,把你下载的文件UNZIP到~/.mplayer或者$PREFIX/share/mplayer。 然后将其中之一改名或者符合链接为font(例如:ln -s ~/.mplayer/arial-24 ~/.mplayer/font)。 你现在应该在电影的左上角看见一个计时器(用"o"键可以关上它)。

OSD有4种状态:(用'o'键切换)

你能通过在config文件中设置osdlevel=变量,或者用命令行选项-osdlevel来改变默认行为。

1.4.3 OSD菜单

MPlayer有一个完全用户自定义的OSD菜单接口。

注意:Preferences菜单目前不能使用!

安装

  1. 编译MPlayer时在./configure时加上--enable-menu参数
  2. 确保你安装了OSD字体
  3. etc/menu.conf复制到你的.mplayer目录
  4. etc/input.conf复制到你的.mplayer目录,或者系统通用的MPlayer配置目录(默认为:/usr/local/etc/mplayer)
  5. 检查并编辑input.conf来启用菜单控制键(在那里有描述).
  6. 像下面的例子这样启动MPlayer:
    $ mplayer -menu file.avi
  7. 按你所定义的菜单键

1.5 RTC

在MPlayer中有三种计时方法。 注意:永远不要将setuid root的MPlayer安装在多用户系统上!这显然会让任何人得到root权限。

2. 特性

2.1 支持格式

2.2 支持的编解码器

2.3 视频 & 音频输出模式

2.4 电视输入

这段将要如何能够使用V4L兼容的电视选台器观看与截取。电视相关的选项和键盘控制的描述请看man page。

2.4.1 编译

  1. 首先,你必须重新编译。./configure将自动检测v4l的内核头文件和/dev/video* 输入的存在。如果他们存在,电视支持将被编译(检查./configure的输出)。
  2. 确保你的选台器能被别的Linux中的电视软件使用,例如xawtv。

2.4.2 使用技巧

可用选项的完整列表在manual page中。这里只是一些使用技巧:

2.4.3 示例

伪输出,到AAlib:)
    mplayer -tv on:driver=dummy:width=640:height=480 -vo aa

从标准的V4L输入
    mplayer -tv on:driver=v4l:width=640:height=480:outfmt=i420 -vc rawi420 -vo xv

一个更复杂的例子。它使用MEncoder截取完整的PAL图像,切掉边缘的空白,输出非交错图像使用线性混合算法。音频使用LAME编解码器按固定比特率 64kbps压缩。这个设置适合用来截取电影。
    mencoder -tv on:driver=v4l:width=768:height=576 \
    -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=900 \
    -oac mp3lame -lameopts cbr:br=64 \
    -vf crop=720:544:24:16,pp=lb -o output.avi


这个加上了重新缩放图像到384x288并把视频用高质量模式压缩到350kbps的比特率。vqmax选项放宽量化器从而允许视频压缩器在牺牲质量的前提下达到 如此低的比特率。这可以用来截取长的电视连续剧,在那种用途下视频质量并不非常重要。
    mencoder -tv on:driver=v4l:width=768:height=576 \
    -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=350:vhq:vqmax=31:keyint=300 \
    -oac mp3lame -lameopts cbr:br=48 \
    -vf crop=720:540:24:18,pp=tn/lb,scale=384:288 -sws 1 -o output.avi

也可以在-tv选项中设置一个较小的分辨率而忽略软件缩放选项但是上面的方法使用最大的可用信息而且对噪音更有抵抗力。bt8x8芯片 由于硬件的限制只能在水平方向上作点平均。

2.5 编辑决定列表(EDL)

编辑决定列表(EDL)系统允许你在播放的时候自动在视频的一部分跳过或者静音,基于一个电影相关的EDL配置文件。

这对那些想用"家庭友好"模式观赏电影的人有用。你可以根据你个人的设定从一部电影里切掉任何暴力,亵渎,Jar-Jar Binks ..的内容。 除了这之外,它还有别的用途,比如自动跳过你正在观看的视频文件中的广告。

EDL文件的格式相当简陋。当EDL达到一定的成熟度的时候,可能会使用一个基于XML的文件格式(保持对原来的EDL格式的向下兼容)。

在目前的EDL实现中最大的EDL输入限制为1000。如果你碰巧需要更多,修改edl.h文件中的#define MAX_EDL_ENTRIES

2.5.1 使用EDL文件

在你运行MPlayer的时候加上-edl <filename>参数,filename是你希望应用在视频上的EDL文件的文件名。

2.5.2 制作EDL文件

目前EDL文件的格式为:

[begin second] [end second] [action]

seconds是浮点数而action可以是0代表跳过或者1代表静音。例如:

5.3   7.1    0
15    16.7   1
420   422    0

这将跳过视频的5.3秒到7.1秒的部分,然后在15秒时静音,在16.7秒处取消静音跳过视频的从420秒到422秒的部分。这些动作将在播放计时器达到 文件中指定的时间时被执行。

要创建一个用来工作的EDL文件,使用-edlout <filename>选项,在播放过程中,当你想标记将前两秒跳过时,按i。 一个相应的输入将写入文件。你可以回头调整生成的EDL文件。

3. 用法

3.1 命令行

MPlayer使用一个复杂playtree格式。它包括写在最前面作为全局设置的选项(例如mplayer -vfm 5),和写在文件名之后, 仅仅作用于给定的文件名或者URL或者随便什么的选项(例如mplayer -vfm 5 movie1.avi movie2.avi -vfm 4)。
你能使用{和}给文件名与URL分组。它对-loop选项很有用:mplayer { 1.avi -loop 2 2.avi } -loop 3命令将按以下顺序播放文件: 1 1 2 1 1 2 1 1 2

  单一文件  mplayer [options] [path/]filename
多个文件mplayer [default options] [path/]filename1 [options for filename1] filename2 [options for filename2] ...
VCDmplayer [options] vcd://trackno [-cdrom-device /dev/cdrom]
DVDmplayer [options] dvd://titleno [-dvd-device /dev/dvd]
WWWmplayer [options] http://site.com/file.asf(也可以使用playlist)
RTSPmplayer [options] rtsp://server.example.com/streamName

最新版本的MPlayer也可以象Xine一样接受URL风格的VCD和DVD轨道: mplayer dvd://1或者mplayer vcd://1

  mplayer -vo x11 /mnt/Films/Contact/contact2.mpg
  mplayer vcd://2
  mplayer -afm 3 /mnt/DVDtrailers/alien4.vob
  mplayer dvd://1 -dvd-device /dev/hdc
  mplayer -abs 65536 -delay -0.4 -nobps ~/movies/test.avi

3.2 控制

MPlayer有一个完全可配置的,命令驱动的控制层使你可以键盘,鼠标,游戏杆或遥控器(使用LIRC)控制MPlayer。完整的键盘控制列表参见man page。

3.2.1 控制键的配置方法

MPlayer允许你使用一个简单的config文件把任何键或按钮绑定为任何一个MPlayer控制命令。 句法是键名后加命令。缺省config文件是$HOME/.mplayer/input.conf但是-input conf 选项可以重新指定(相对路径是相对于$HOME/.mplayer的)。

例子:

##
## MPlayer input control file
##

RIGHT seek +10
LEFT seek -10
- audio_delay 0.100
+ audio_delay -0.100
q quit
> pt_step 1
< pt_step -1
ENTER pt_step 1 1

3.2.2.1 键名

运行mplayer -input keylist你将得到一个完整的列表

键盘:

鼠标(只在X下支持):

游戏杆(编译时必须打开对游戏杆的支持)

3.2.2.2 控制命令

通过运行"mplayer -input cmdlist"你可以得到一个完整的已知命令的列表

3.2.3 用LIRC控制

Linux红外遥控 -- 使用一个容易制作的home-brewn红外线接收器,(几乎)任意一个的遥控器然后就可以用它来控制你的Linux box了! 更多内容见www.lirc.org

如果你已安装了lirc-package,configure将自动检测到它。如果一切顺利,MPlayer在启动时将显示 "Setting up lirc support..."之类的信息。如果发生错误它将会显示。如果它不显示关于LIRC的任何信息则对LIRC的支持没有编译。就是这样:-)

MPlayer的程序名是 -- 嗯,让我想想看 -- 'mplayer'。你能使用任何mplayer命令甚至传递超过一种命令只要用\n分开他们。 不要忘记当有意义的时候(搜索,音量等等),在.lircrc中开启repeat标记。这是我的.lircrc的摘录:

begin
     button = VOLUME_PLUS
     prog = mplayer
     config = volume 1
     repeat = 1
end

begin
    button = VOLUME_MINUS
    prog = mplayer
    config = volume -1
    repeat = 1
end

begin
    button = CD_PLAY
    prog = mplayer
    config = pause
end

begin
    button = CD_STOP
    prog = mplayer
    config = seek 0 1\npause
end

如果你不喜欢lirc-config文件的标准位置(~/.lircrc)使用-lircconf <filename>选项指定别的文件。

3.2.4 Slave方式

Slave方式把允许你为MPlayer建立简单的frontend。当它开启(用-slave选项)时MPlayer 将从stdin读取用new line(\n)分开的命令。

3.3 网络或管道的流媒体

MPlayer支持通过HTTP, MMS或者RTSP/RTP协议播放网络上的文件。

只要直接把URL地址加到命令行中就可以进行播放。MPlayer也支持http_proxy环境变量, 并且在可能的情况下使用代理。也可以强行指定使用代理:

mplayer http_proxy://proxy.micorsops.com:3128/http://micorsops.com:80/stream.asf

MPlayer能从stdin(不称为管道)输入。例如这样能从FTP上播放:

  wget ftp://micorsops.com/something.avi -O - | mplayer -

注意:当使用网络播放功能时推荐打开cache功能:

  wget ftp://micorsops.com/something.avi -O - | mplayer -cache 8192 -

4. FAQ部分

5. CD与DVD部分

6. 移植

6.1 Linux

主要的开发平台是x86上的Linux,尽管MPlayer可以移植到很多别的Linux上。MPlayer的二进制包在很多地方可以获得。但是我们不对任何 一个负责,有问题去找这些包的制作者,别找我们。

6.1.1 Debian安装包的制作

为了制作Debian安装包,在MPlayer的代码的目录下面运行下列命令:

    fakeroot debian/rules binary

成为root后你可以像正常情况下一样安装.deb包:

    dpkg -i ../mplayer_0.90-1_i386.deb as root.

Christian Marillat一直在制作非官方的Debian MPlayer, MEncoder和字体的安装包,你可以从他的主页(apt-get)获得。

6.1.2 RPM安装包的制作

Dominik Mierzejewski制作并维护MPlayer的官方的Red Hat RPM安装包。他制作了播放器,GUI,字体,skin和一些驱动还有编解码器的安装包。所有这些都可以从他的主页获得。

Mandrake的安装包可以在P.L.F获得,SuSE在他们的发行版中包括了 一个有缺陷的MPlayer版本。如果你想获得全部的功能,你必须从源代码编译。

6.1.3 ARM

MPlayer可以工作在使用ARM CPU的PDAs例如Sharp Zaurus, Compaq Ipaq上。最简单的获得MPlayer的方法从Openzaurus的安装包服务器下载。如果你像自己编译它,你应该查看OpenZaurus发行版的buildroot下的mplayer 目录和libavcodec。 那里总有最新的用来编译一个代libavcodec的CVS的MPlayer的Makfile和补丁。
如果你需要一个GUI前端,你可以使用xmms-embedded。

6.2 *BSD

MPlayer可以运行在FreeBSD, OpenBSD, NetBSD, BSD/OS和Darwin上。有ports/pkgsrc/fink等版本的MPlayer可供使用,比直接使用我们的 源代码要容易。

编译MPlayer你需要GNU make(gmake - 本地的BSD的make不能正常工作)和一个比较新的binutils。

如果MPlayer报告找不到/dev/cdrom或者/dev/dvd,创建一个适当的符号链接:
ln -s /dev/(your_cdrom_device) /dev/cdrom.

要在MPlayer中使用Win32 DLLs你需要使用"option USER_LDT"重新编译内核(除非你用的是FreeBSD -CURRENT,其中这一项是默认的)。

6.2.1 FreeBSD

如果你的CPU有SSE,使用"options CPU_ENABLE_SSE"选项重新编译内核来使用它(需要FreeBSD-STABLE,或者使用内核补丁)。

6.2.2 OpenBSD

因为gas的版本不同(relocation vs mmx)的限制,你需要分两步编译: 首先确保non-native的汇编程序当前在PATH中并运行gmake -k, 然后在确保使用native版本情况下运行gmake

6.3 Solaris

MPlayer在Solaris 2.6或者更新的系统上应该能够正常运行。

UltraSPARC上,MPlayer利用他们的VIS扩展(相当于MMX)的优势,目前只应用于libmpeg2libvo以及libavcodec ,但mp3lib没有。你能在400MHz CPU上观看VOB文件。你需要安装mLib

为编译它你需要GNU make(gmake,/opt/sfw/gmake),native的Solaris make不能正常工作。你用Solaris的make代替GNU make时的典型的错误信息为:

   % /usr/ccs/bin/make
   make: Fatal error in reader: Makefile, line 25: Unexpected end of line seen

在Solaris SPARC上,你需要GNU C/C++编译器;GNU C/C++编译器是否设置使用GNU汇编程序没有什么关系。

在Solaris x86上,你需要GNU汇编程序和GNU C/C++编译器,设置使用GNU的汇编程序!在x86平台上的mplayer代码大量使用MMX,SSE和3DNOW! 指令集,使用Sun的汇编程序/usr/ccs/bin/as不能编译通过。

configure脚本将试图查找你的"gcc"命令使用的汇编程序(如果自动检测失败,使用"--as=/wherever/you/have/installed/gnu-as" 选项告诉configure脚本你的系统中GNU的"as"在哪里)。

在Solaris x86系统上使用没有GNU汇编程序的GCC时configure的出错信息为:

   % configure
   ...
   Checking assembler (/usr/ccs/bin/as) ... , failed
   Please upgrade(downgrade) binutils to 2.10.1...

(解决方法:安装并且使用配置了"--with-as=gas"的gcc)

当不使用GNU as的GNU C编译程序时的典型出错信息是:

   % gmake
   ...
   gcc -c -Iloader -Ilibvo -O4 -march=i686 -mcpu=i686 -pipe -ffast-math
	-fomit-frame-pointer  -I/usr/local/include   -o mplayer.o mplayer.c
   Assembler: mplayer.c
   "(stdin)", line 3567 : Illegal mnemonic
   "(stdin)", line 3567 : Syntax error
   ... more "Illegal mnemonic" and "Syntax error" errors ...

因为Solaris8 x86的两个bug,不能可靠地播放容量>4GB的DVD:

在使用UltraSPARC CPU的Solaris上,对有些耗时的操作使用CPU的VIS指令能获得额外的速度提升。 在MPlayer中通过Sun的mediaLib中的函数使用VIS加速功能。

mediaLib的VIS加速功能用于mpeg2视频解码和视频输出驱动的颜色转换。

6.4 Silicon Graphics / IRIX

你可以安装GNU的install程序,并且(如果你没有把它放在你的系统路径中)指定它的位置:

  ./configure --install-path=PATH

或者你可以使用默认的IRIX 6.5提供的install,那你就必须手动修改Makefile文件,把下面两行:

  $(INSTALL) -c -m 644 DOCS/mplayer.1 $(MANDIR)/man1/mplayer.1

  $(INSTALL) -c -m 644 etc/codecs.conf $(CONFDIR)/codecs.conf

改成:

  $(INSTALL) -m 644 mplayer.1 $(MANDIR)/man1/

  $(INSTALL) -m 644 codecs.conf $(CONFDIR)/

然后运行(在MPlayer的源代码目录中):

  cp DOCS/mplayer.1 . ; cp etc/codecs.conf .

然后继续编译和安装。

6.5 QNX

能工作。你需要下载SDL for QNX并安装它。然后使用-vo sdl:photon-ao sdl:nto 选项运行MPlayer,速度应该很快。

-vo x11输出将比Linux更加缓慢,因为QNX只有一个十分缓慢的的X仿真。使用SDL。

6.6 Cygwin

Cygwin的移植仍然很不成熟。目前还不支持Win32 DLLs和OpenGL。SDL据说会扭曲声音和图像或者在某些系统上导致崩溃。补丁总是欢迎的。最好的效果是使用本地的DirectX视频输出驱动(-vo directx) 和本地的Windows waveout音频驱动(-ao win32)。你应该查阅mplayer-cygwin邮件列表来获得帮助和最新信息。

你必须到MPlayer的目录下,拷贝或者symlinketc/cygwin-inttypes.h/usr/include/inttypes.h来使MPlayer顺利编译。

为了获得本地的DirectX视频,下载DirectX 7头文件,把它们解压到/usr/include/ 或者/usr/local/include/下然后重新编译。如果图像发生扭曲,用-vo directx:noaccel 把硬件加速关掉试试。

让SDL在Cygwin下工作的方法和文件可以在libsdl的站点找到。

你可以通过播放Windows显示的VCD上的.DAT或者.MPG文件来播放VCD,这样使他工作(改成你 的CD-ROM驱动器的盘符):

mplayer d:/mpegav/avseq01.dat

mplayer /cygdrive/d/MPEG2/AVSEQ01.MPG

DVD同样可以,用下面的命令DVD设备设置成你的CD-ROM驱动器:

mplayer dvd://<title> -dvd-device '\\.\d:'

QuickTime DLL据说也能工作。用--enable-qtx-codecs编译并把编解码器放到默认的Windows DLL位 置,C:\WINNT\system32或者C:\Windows\system取决于你的Windows的版本。

7. 用MEncoder编码

附录A -- 邮件列表

MPlayer有一些公开的邮件列表。除非特别说明否则这些列表的语言是英语。请不要用别的语言或者HTML邮件格式发送 消息!一条消息的大小限制是80k。如果你有更大的东西把它放在可以下载的地方。点击链接就可以订阅。在邮件列表上使用与 与usenet上相同的书写和引用规则。请遵守他们,它使阅读你的邮件的人的生活轻松的多。如果你不知道请阅读编辑消息HOWTO或者(如果你很着急)引用HOWTO

注意:http://www.mplayerhq.hu/cgi-bin/htsearch有可供检索的邮件列表文档。

附录B -- 如何报告bug

附录C -- 已知Bugs

特殊的系统或CPU相关的bug或问题:

各种各样A-V同步和其它音频问题:

一般的音频延迟或者急跳声音(对所有或者大部分文件存在): 特定的某一个或一些文件的音频延迟/不同步: 完全没有声音: 完全没有图画(全灰/全绿窗口):

视频输出问题:

首先注意: -fs -vm和-zoom选项只是推荐,(目前)不是所有驱动器都支持。因此,如果它不起作用那不是bug。 只有少数驱动支持缩放,对x11或dga不要指望这个。

OSD与字幕闪烁:
-- x11驱动器: 抱歉,它现在不能被修正
-- xv驱动器: 使用-double选项

使用mga_vid时的绿色图象(-vo mga/-vo xmga):
-- mga-vid没有正确检测你的显卡的显存大小,使用mga_ram_size选项重新载入

附录D -- MPlayer skin的格式

附录E -- 开发者的眼泪

附录F -- 如何发送补丁