Mercurial > mplayer.hg
changeset 7597:363959276ef2
by cvs hephooey@fastmail.fm
author | jaf |
---|---|
date | Sat, 05 Oct 2002 10:19:07 +0000 |
parents | cfc440385109 |
children | 48f8c731efb5 |
files | DOCS/Chinese/bugreports.html DOCS/Chinese/cd-dvd.html DOCS/Chinese/codecs.html DOCS/Chinese/default.css DOCS/Chinese/documentation.html DOCS/Chinese/encoding.html DOCS/Chinese/faq.html DOCS/Chinese/formats.html DOCS/Chinese/skin.html DOCS/Chinese/sound.html DOCS/Chinese/users_against_developers.html DOCS/Chinese/video.html |
diffstat | 12 files changed, 5270 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/DOCS/Chinese/bugreports.html Sat Oct 05 10:19:07 2002 +0000 @@ -0,0 +1,220 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<HTML> + +<HEAD> + <TITLE>bug报告 -- MPlayer -- Linux的电影播放器</TITLE> + <LINK REL="stylesheet" TYPE="text/css" HREF="default.css"> + <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=gb_2312-80"> +</HEAD> + +<BODY> + + +<H1><A NAME="B">附录B -- 如何报告bug</A></H1> + +<P>好的bug报告对任何软件项目的发展都是十分有价值的贡献。但是就象写好的软件一样,好的问题报告也需要一些工作。请明白大多数开发者忙的要死并且会收到 +多的变态的电子邮件。所以尽管你的反馈对改进<B>MPlayer</B>至关重要而且非常值得赞赏,希望你理解你必须提供我们需要的<B>所有</B>信息并且严格遵循这个 +文件中的指导进行。</P> + + +<H2>如何修正bug</H2> + +<P>如果你觉得你有足够的技巧欢迎你尝试自己修正bug。或者也许你已经这么干了?请阅读<A HREF="tech/patches.txt">这个简短的文件</A>了解怎样让你的代码 +包括到<B>MPlayer</B>的代码中。如果你有问题可以从加入<A HREF="http://mplayerhq.hu/mailman/listinfo/mplayer-dev-eng">mplayer-dev-eng</A> +邮件列表的人那里获得帮助。</P> + + +<H2>如何报告bug</H2> + +<P>首先,请先尝试<B>MPlayer</B>最新的CVS版本,因为你的bug在那里可能已经被修正了。发展过程进展的相当快,官方发行版的大部分问题在几天甚至几小时之内 +就被报告了,因此请<B>仅仅使用CVS</B>来报告bug。CVS指令能在<A HREF="http://www.mplayerhq.hu/homepage/dload.html">这个页面</A>的底部或者 +README中找到。如果这样做没有改进那么请查阅<A HREF="documentation.html#known_bugs">已知的bug列表</A>和文件的其他部分。如果你的问题我们没有提到或者 +按照我们提供的步骤没有解决,那么请报告bug。</P> + +<P>请不要私下向单独的开发者报告bug。这是一项社区工作所以可能有若干人都对它感兴趣。有时其它用户已经遇到过你的麻烦并且知道如何绕过这个问题 +即使它是<B>MPlayer</B>代码中的bug。</P> + +<P>请尽可能详细的描述你的问题。做一些小的侦探工作来确定问题发生的情况的范围。这个bug只在一定的情况中出现吗?或是具体针对特定文件或者文件类型吗? +它是针对于唯一的编码格式还是独立于编码格式的?你能用所有的输出驱动重现它吗?你提供的信息越多我们的修复你的问题的机会就越大。别忘了也要包括下面所要求的 +有价值的信息,否则我们将无法正确分析你的问题。</P> + +<P>有篇文采飞扬的关于如何在公共论坛上提问的极好的指导是Eric S. Raymond写的<A HREF="http://www.tuxedo.org/~esr/faqs/smart-questions.html"> +How To Ask Questions The Smart Way</A>。你照着那些指示做是没问题的。但是请明白我们大家都在我们的自由时间自愿地回复邮件列表。我们十分忙碌并且 +不能保证你的问题一定能得到解决甚至得到回复。</P> + + +<H3>向哪里报告错误?</H3> + +<P>订阅mplayer-users邮件列表:<BR> + <A HREF="http://mplayerhq.hu/mailman/listinfo/mplayer-users">http://mplayerhq.hu/mailman/listinfo/mplayer-users</A><BR> + 同时,把你的bug发送到:<BR> + <A HREF="mailto:mplayer-users@mplayerhq.hu">mplayer-users@mplayerhq.hu</A></P> + +<P>这个列表使用的语言是<B>英语</B>。请遵循标准的<A HREF="http://www.ietf.org/rfc/rfc1855.txt">Netiquette标准</A>并且<B>不要发送HTML邮件</B> +到任何我们的邮件列表。你将被忽略或者封掉。如果你不知道什么是HTML邮件,以及它为什么邪恶,阅读这个<A HREF="http://expita.com/nomime.html">不错的文件</A>。 +它解释了所有细节和关掉HTML的指令。也请注意到我们不会个别地CC(抄送)给人因此最好通过订阅来保证你会收到答案。</P> + + +<H3>报告什么?</H3> + +<H4>系统信息:</H4> + +<UL> + <LI>你的Linux发行版或者操作系统,比如:。 + <UL> + <LI>Red Hat7.1</LI> + <LI>Slackware 7.0 + devel packs from 7.1 ...</LI> + </UL> + </LI> + <LI>内核版本:<BR> + <CODE>uname -a</CODE></LI> + <LI>libc版本:<BR> + <CODE>ls -l /lib/libc[.-]*</CODE></LI> + <LI>X版本:<BR> + <CODE>X -version</CODE></LI> + <LI>gcc和ld版本:<BR> + <CODE>gcc -v<BR> + ld -v </CODE></LI> + <LI>binutils版本:<BR> + <CODE>as --version</CODE></LI> + <LI>如果你有全屏模式方面的问题: + <UL> + <LI>窗口管理器类型和版本</LI> + </UL> + </LI> + <LI>如果是buggy的GUI: + <UL> + <LI>GTK版本</LI> + <LI>GLIB版本</LI> + <LI>libpng版本</LI> + <LI>bug发生时GUI的状态</LI> + </UL> + </LI> +</UL> + + +<H4>硬件 & 驱动:</H4> + +<UL> + <LI>CPU信息(仅用于Linux):<BR> + <CODE>cat /proc/cpuinfo</CODE></LI> + <LI>显卡制造厂和型号,例如:。 + <UL> + <LI>ASUS V3800U chip: nVidia TNT2 Ultra pro 32MB SDRAM</LI> + <LI>Matrox G400 DH 32MB SGRAM</LI> + </UL> + </LI> + <LI>显卡驱动类型 & 版本,e.g:。 + <UL> + <LI>X built-in driver</LI> + <LI>nVidia 0.9.623</LI> + <LI>Utah-GLX CVS 2001-02-17</LI> + <LI>DRI from X 4.0.3</LI> + </UL> + </LI> + <LI>声卡类型 & 驱动,例如:。 + <UL> + <LI>Creative SBLive! Gold with OSS driver from oss.creative.com</LI> + <LI>Creative SB16 with kernel OSS drivers</LI> + <LI>GUS PnP with ALSA OSS emulation</LI> + </UL> + </LI> + <LI>如果不放心的话对linux系统再附上<CODE>lspci -vv</CODE>的输出。</LI> +</UL> + + +<H4>对于编译问题/错误</H4> + +请包括这些文件: + +<UL> + <LI>configure.log</LI> + <LI>config.h</LI> + <LI>config.mak</LI> + <LI>libvo/config.mak</LI> +</UL> + + +<H4>对于回放问题</H4> + +<P>请包括<B>MPlayer</B>的冗长水平为1的输出,但是记住当你把它粘贴到你的邮件中时<B>不要删减输出内容</B>。开发者们需要所有的信息来正确的分析问题。 +你可以像这样把输出导入到一个文件中:</P> + +<P><CODE> mplayer -v [options] [filename] &> mplayer.log</CODE></P> + +<P>如果你的问题是具体对于一个或更多的文件的,那么请上传捣乱的文件:</P> + +<P> <A HREF="ftp://mplayerhq.hu/MPlayer/incoming/">ftp://mplayerhq.hu/MPlayer/incoming/</A></P> + +<P>再上传一个小的同样文件名的文本文件加上.txt的扩展名。在其中描述对于这个特别的文件你遇到的问题加上你的电子邮件地址还有<B>MPlayer</B>冗长水平为1的输出。 +通常文件的前1-5MB足以重现问题,但为了以防万一我们要求你运行:</P> + +<P><CODE> dd if=yourfile of=smallfile bs=1024k count=5</CODE></P> + +<P>它将截取<STRONG>'your-file'</STRONG>的头5兆并把他们写到<STRONG>'small-file'</STRONG>里。然后,测试一下这个小文件,如果bug仍然存在那么你的样本 +对我们来说是足够了。请<STRONG>永远不要</STRONG>通过邮件的发送这样文件!把它上传,然后只发送FTP-server上的文件的路径与文件名。如果文件在网上可以获得, +那么发送<STRONG>准确的</STRONG>URL就足够了。</P> + + +<H4>对于崩溃</H4> + +<P>如果你的崩溃有一个core dump那么继续阅读下一段,否则跳过它。</P> + + +<H4>如何从一个core dump中提取出有意义的信息</H4> + +<P>请建立下面的命令文件:</P> + +<P><CODE>disass $eip-32 $eip+32<BR> + printf "eax=%08lX\n",$eax<BR> + printf "ebx=%08lX\n",$ebx<BR> + printf "ecx=%08lX\n",$ecx<BR> + printf "edx=%08lX\n",$edx<BR> + printf "esp=%08lX\n",$esp<BR> + printf "ebp=%08lX\n",$ebp<BR> + printf "edi=%08lX\n",$edi<BR> + printf "esi=%08lX\n",$esi</CODE></P> + +<P>然后直接在你的命令行下执行下列命令:</P> + +<P> <CODE>gdb mplayer --core=core -batch --command=command_file > mplayer.bug</CODE></P> + + +<H4>如何保存一个可再现的崩溃的信息</H4> + +开启调试代码重新编译<B>MPlayer</B>: + +<P><CODE> ./configure --enable-debug=3<BR> + make</CODE></P> + +然后用gdb运行<B>MPlayer</B>: + +<P><CODE> gdb mplayer</CODE></P> + +现在你在gdb内。输入: + +<P><CODE> run -v [options-to-mplayer] filename</code></P> + +然后再现你的崩溃。一旦你成功了,gdb将回到命令行,你需要输入 + +<P><CODE> bt<BR> + disass $eip-32 $eip+32</CODE></P> + +然后把完整的输出发给我们。 + + +<H3>一般的注意事项</H3> + +<P>如果有什么东西特别大(比如log)最好把它压缩(最好是gzip或者bzip)之后上载到FTP server上并且在你的bug报告中只要包含路径和文件名。</P> + + +<H2>我知道我在干什么...</H2> + +<P>如果你按照上述步骤建立了一个正确的bug报告而且你充满信心它是<B>MPlayer</B>中的bug,而不是因为编译错误或者文件损坏的问题,你已经阅读了文档并且 +找不到解决方案,此外你的声卡驱动正常,那么你可能想要订阅mplayer-advusers列表并把你的bug报告发到那里以便得到更快更好的答案。<BR><BR> + 请听从我们的劝告,如果你在那里问新手级的问题或者问用户手册中已经回答过的问题,你将被忽略或者被骂而不会得到答案。<BR> + 因此,不要骂我们并且仅仅当你确实知道你在干什么并且觉得你已经是高级<B>MPlayer</B>用户或者是开发者再订阅 -advusers。如果你符合这些标准找出如何 +订阅应该不难...</P> + +</BODY> +</HTML>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/DOCS/Chinese/cd-dvd.html Sat Oct 05 10:19:07 2002 +0000 @@ -0,0 +1,82 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<HTML> + +<HEAD> + <TITLE>CD,DVD,VCD -- MPlayer -- Linux的电影播放器</TITLE> + <LINK REL="stylesheet" TYPE="text/css" HREF="default.css"> + <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=gb_2312-80"> +</HEAD> + +<BODY> + + +<H2><A NAME="drives">4.1 CD与DVD光驱</A></H2> + +<P>Linux文件摘录:</P> + +<P>现代的CD-ROM光驱能达到十分高的头速度,还有一些CD-ROM光驱能运行在被正常情况低的速度上。你考虑改变CD-ROM光驱的速度可能有若干原因:</P> + +<UL> + <LI>在告诉情况下发生读取错误,尤其对于压制不好的CD-ROM。降低速度能防止这种情况下的数据丢失。</LI> + <LI>很多CD-ROM光驱的声音吵的讨厌,低的速度可以降低噪音。</LI> +</UL> + +<P>你能使用hdparm或一个叫setcd的程序来降低光驱的速度。它是这样工作的:</P> + +<P> <CODE>hdparm -E [speed] [cdrom device]</CODE></P> + +<P> <CODE>setcd -x [speed] [cdrom device]</CODE></P> + +<P>你也可以试试</P> + +<P> <CODE>echo current_speed:4 > /proc/ide/[cdrom device]/settings</CODE></P> + +<P>但这样你需要root权限。下面这个命令也有用处:</P> + +<P> <CODE>echo file_readahead:2000000 > /proc/ide/[cdrom device]/settings</CODE></P> + +<P>这把文件预读取设置为2MB,对于刮伤的CD-ROM有好处。推荐你同时也用hdparm调整你的CD-ROM光驱:</P> + +<P> <CODE>hdparm -d1 -a8 -u1 (cdrom device)</CODE></P> + +<P>这开启DMA存取,预读取,和IRQ unmasking(细节解释请阅读hdparm的man page)。</P> + +<P>为了优化你的CD-ROM请参考"<CODE>/proc/ide/[cdrom device]/settings</CODE>"。</P> + + +<H2><A NAME="dvd">4.2 DVD回放</A></H2> + +<P><B>MPlayer</B>使用<CODE>libdvdread</CODE>和<CODE>libdvdcss</CODE>进行DVD解密和回放。这两个库包含在<B>MPlayer</B>源码树的<CODE>libmpdvdkit/</CODE> +子目录中,你不需要单独安装他们。我们选择这种解决方案是因为我们必须修正一个libdvdread的bug,并且给libdvdcss添加一个<B>cracked CSS keys caching support</B>的补丁。 +这带来极大的速度提升,因为不用在每次播放之前都破解密钥。破解的密钥储存在<CODE>~/.mplayer/DVDKeys</CODE>目录里面。</P> + +<P><B>MPlayer</B>也能使用系统的<CODE>libdvdread</CODE>和<CODE>libdvdcss</CODE>库,但这种解决方法<B>不</B>被推荐,因为它会导致bug,库的不兼容,并且降低速度。</P> + +<P>使用<CODE>dvdnav</CODE>DVD导航的支持正在开发,但目前还没有完成。</P> + +<H4>旧式DVD支持 -- 可选</H4> + +<P>如果你想从硬盘上播放编码的VOB是有用。为此要编译并安装<B>libcss</B>0.0.1(不要更新的)(如果<B>MPlayer</B>检测不到它,使用<CODE>-csslib /path/to/libcss.so</CODE>选项)。</P> + +<P>可用选项的完全列表,请阅读man page。</P> + + +<H2><A NAME="vcd">4.3 VCD回放</A></H2> + +<P>播放标准的Video CDs:</P> + +<P><CODE>mplayer -vcd <track> [-cdrom-device device]</CODE></P> + +<P>例子:<BR> + <CODE>mplayer --vcd 1<BR> + mplayer --fs --vcd 2 --dev / hdc </CODE></P> + +注意: +<UL> + <LI>一定<B>不要</B>mount VCD来直接播放DAT文件!在Windows下可能可以但在Linux下不行。你必须用<CODE>-vcd</CODE>选项来播放VCD。</LI> + <LI>VCD盘通常有2条轨道:数据轨道(包含autostart Windows回放程序,karaoke数据等等)和mode-2轨道(电影)。因此,试试<CODE>-vcd 2</CODE>先。</LI> + <LI>默认的VCD设备是<CODE>/dev/cdrom</CODE>。如果你的设置不同,做个符号链接,或者在命令行上用<CODE>-cdrom-device</CODE>选项指定正确的设备。</LI> +</UL> + +</BODY> +</HTML>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/DOCS/Chinese/codecs.html Sat Oct 05 10:19:07 2002 +0000 @@ -0,0 +1,354 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<HTML> + +<HEAD> + <TITLE>编码格式 -- MPlayer -- Linux的电影播放器</TITLE> + <LINK REL="stylesheet" TYPE="text/css" HREF="default.css"> + <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=gb_2312-80"> +</HEAD> + +<BODY> + + +<H2><A NAME="codecs">2.2 支持的编码格式 </A></H2> + + +<H3><A NAME="video_codecs">2.2.1 视频编码格式</A></H3> + +<P>看<A HREF="http://www.mplayerhq.hu/DOCS/codecs-status.html">编码格式状态表格</A>来了解完整的,每日更新的列表。</P> + +<P>所有之中最重要的:</P> +<UL> + <LI>MPEG1(VCD)和MPEG2(DVD)视频</LI> + <LI>DivX的本地的解码器;-),OpenDivX,DivX4,DivX5,M$ MPEG4 v1,v2和其它的MPEG4变种</LI> + <LI>Windows Media Video 7(WMV1)的本地的解码器,和Windows Media Video 8(WMV2)的Win32 DLL解码器,用于.wmv文件的他们两个都</LI> + <LI><B>本地的Sorenson(SVQ1)解码器</B></LI> + <LI>3ivx解码器</LI> + <LI>Cinepak和Intel Indeo解码器(3.1,3.2,4.1,5.0)</LI> + <LI>MJPEG,AVID,VCR2,ASV2和其它硬件格式</LI> + <LI>VIVO 1.0,2.0,I263和其它h263(+)的变种</LI> + <LI>FLI/FLC</LI> + <LI>libavcodec的RealVideo 1.0解码器,和使用RealPlayer库的RealVideo 2.0,3.0解码器</LI> + <LI>HuffYUV的本地的解码器</LI> + <LI>各种各样的老的简单的类似RLE的格式</LI> +</UL> + +<P>如果你有一个Win32解码器没有列出来而且目前没有被支持,请读取<A HREF="#importing">解码器导入HOWTO</A>并且帮助我们添加对它的支持。</P> + + +<H4><A NAME="divx">2.2.1.1 DivX4与DivX5</A></H4> + +<P>这部分包含关于<A HREF="http://www.projectmayo.com">Mayo工程</A>的DivX4和DivX5编码格式的信息,他们的第一个可用的alpha版本是 +OpenDivX 4.0 alpha 47和48。 对它们的支持以前包括仔<B>MPlayer</B>中,并且是默认编译的。 我们也使用其后处理代码来有选择地提高MPEG1/2电影的视觉质量。 +现在我们使用我们自己的,对于所有文件类型。</P> + +<P>这个解码器的新一代产品称为DivX4,它甚至能解码以声名狼籍的DivX编码格式制作的电影! 此外,它比本地的Win32 DivX DLL快得多比但是比libavcodec慢。 +因此,<B>不鼓励</B>把它当解码器用。 然而,它对编码有用。 这个编码格式的缺点之一是它目前不开放源代码。</P> + +<P>解码器可以从下列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>解开它,然后以root身份运行<CODE>./install.sh</CODE>。</P> + +<P><B>注意:</B>一定<B>不要</B>忘记在你的<CODE>/etc/ld.so.conf</CODE>里添加<CODE>/usr/local/lib</CODE>然后运行<CODE>ldconfig</CODE>!</P> + +<P>如果安装正确<B>MPlayer</B>会自动检测到DivX4/DivX5,然后按通常方法编译。如果没有找到,那么你没有正确地安装或配制它。</P> + +<P>DivX4Linux有两种工作方式:</P> + +<DL> + <DT><CODE>-vc odivx</CODE></DT> + <DD>以OpenDivX方式使用解码器。在这种情况下,它在自己的缓冲中产生YV12图象,然后由<B>MPlayer</B>通过libvo做色彩空间转换。(<B>推荐,快!</B>)</DD> + + <DT><CODE>-vc divx4</CODE></DT> + <DD>使用解码器的色彩空间转换。以这种方式你也能使用YUY2与UYVY。(<B>慢</B>)</DD> +</DL> + +<P><CODE>-vc odivx</CODE>方式通常更快,因为它以YV12(planar YUV 4:2:0)格式传输图象数据,这样占用少的多的总线带宽。对于packed YUV方式 +(YUY2,UYVY)使用<CODE>-vc divx4</CODE>方式。对于RGB模式两者速度是相同的,差别最多是你当前的色彩深度。</P> + +<P><B>注意:</B>如果你的<CODE>-vo</CODE>驱动支持直接渲染,那么<CODE>-vc divx4</CODE>可以是很快甚至最快的解决方案。</P> + + +<H4><A NAME="libavcodec">2.2.1.2 FFmpeg DivX/libavcodec</A></H4> + +<P><A HREF="http://ffmpeg.sourceforge.net">FFmpeg</A>包括一组<B>开源的</B>解码器包,能够以兼容方式解码以 +H263/MJPEG/RV10/DivX3/DivX4/DivX5/MP41/MP42/WMV1编码格式编码的视频流。它不仅能对其中一些进行编码, +同时提供比Win32解码器或Mayo工程的DivX4/5库更高的速度!</P> + +<P>它包含很多不错的解码器,尤其重要的是MPEG4的几个变种:DivX 3,DivX 4,DivX 5,Windows Media Video 7 (WMV1)</P> + +<P>如果你使用<B>MPlayer</B>发行版,在你的源码包里就有libavcodec,正常编译。如果你使用CVS的<B>MPlayer</B> +那么你必须从FFmpeg的CVS树中提取libavcodec因为FFmpeg 0.4.5<B>不能</B>用于<B>MPlayer</B>。你应该这样来完成:</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>把<CODE>libavcodec</CODE>目录从FFmpeg的源代码里移到<B>MPlayer</B>的CVS树的根部。应该看起来象这样: + <P> <CODE>main/libavcodec</CODE></P> + 符号链接是<B>不</B>够的,你必须复制或移动它!</LI> + <LI>编译。Configure应该在编译之前发现可能的问题。</LI> +</OL> + +<P><B>注意:</B>CVS的MPlayer确实有libavcodec子目录,但是它确实<B>没有</B>包含libavcodec的源代码!你必须按照上述的步骤来得到这个库的源代码。</P> + +<P>用FFmpeg和我的Matrox G400,我甚至能在我的K6/2 500上无掉帧的观看最高分辨率的DivX电影。</P> + + +<H4><A NAME="xanim">2.2.1.3 XAnim解码器</A></H4> + +<P>前言:<BR> + XAnim的二进制的解码器包里面有一份关于合法捆绑软件许可的声明,除其它限制之外,禁止用户用除XAnim外的任何程序使用其解码器。然而, +XAnim的作者到目前为止没有就解码器有关的问题对着任何人采取法律行动。 +</P> + +<P><B>MPlayer</B>可以使用XAnim的解码器解码。按照下列指令来开启它:</P> + +<OL> + <LI>从<A HREF="http://xanim.va.pubnix.com">XAnim的站点</A>下载你想要的解码器。<B>3ivx</B>的解码器不在那里,在 +<A HREF="http://www.3ivx.com">3ivx的站点</A>。</LI> + <LI>使用<CODE>--with-xanimlibdir</CODE>选项来告诉configure在何处可以找到XAnim的解码器。缺省的话,它在 +<CODE>/usr/local/lib/xanim/mods, /usr/lib/xanim/mods and /usr/lib/xanim</CODE>里寻找。或者你可以把<I>XANIM_MOD_DIR</I>环境变量 +设置为XAnim解码器所在的目录。</LI> + <LI>给文件改名/做符号链接,去掉代表平台构架之类的东西,让他们看起来像这样:<CODE>vid_cvid.xa, vid_h263.xa, vid_iv50.xa</CODE>。</LI> +</OL> + +<P>XAnim的视频解码器族号码是10,因此你可以使用<CODE>-vfm 10</CODE>选项让<B>MPlayer</B>尽可能的使用他们。</P> + +<P>测试过的解码器包括:<B>Indeo 3.2</B>,<B>4.1</B>,<B>5.0</B>,<B>CVID</B>,<B>3ivX</B>,<B>h263</B>。</P> + + +<H4><A NAME="vivo_video">2.2.1.4 VIVO视频</A></H4> + +<P><B>MPlayer</B>能播放Vivo(1.0和2.0)视频。对于1.0的文件最适合的解码器是FFmpeg的H263解码器,你可以用<CODE>-vc ffh263</CODE>选项 +(默认的)来使用它(需要最新的libavcodec)。对于2.0个文件,使用<A HREF="http://www.mplayerhq.hu/MPlayer/samples/drivers32/ivvideo.dll"> +ivvideo.dll</A>这个Win32 DLL文件,将它安装在<CODE>/usr/lib/win32</CODE>或者你放Win32解码器的那个什么地方。后面这个解码器不支持YV12或YUY2, +只使用BGR,只能限定在X11和OpenGL输出方式。希望ffh263将来支持VIVO 2.0的文件。</P> + + +<H4><A NAME="mpeg">2.2.1.5 MPEG 1/2视频</A></H4> + +<P>MPEG1和MPEG2用本地的多平台的<B>libmpeg2</B>库解码,其源代码被包括在<B>MPlayer</B>中。对于buggy的MPEG 1/2视频文件我们通过截获sig11 +(segmentation fault),然后迅速再次初始化解码器,从失败的地方继续。这种恢复技术会带来无法估量的速度损失。</P> + + +<H4><A NAME="ms_video1">2.2.1.6 MS Video1</A></H4> + +<P>这是微软的又旧又差的编码格式。过去它用<CODE>msvidc32.dll</CODE>的Win32解码器解码,现在我们有我们自己的开源的实现(由 +<A HREF="mailto:melanson@pcisys.net">Mike Melanson</A>提供)。</P> + + +<H4><A NAME="cinepak">2.2.1.7 Cinepak CVID</A></H4> + +<P><B>MPlayer</B>默认将使用自己的开源的,多平台的Cinepak解码器。它支持YUV输出,所以只要硬件驱动允许它将使用硬件缩放。</P> + + +<H4><A NAME="realvideo">2.2.1.8 RealVideo</A></H4> + +<B>MPlayer</B>支持所有版本的RealVideo的解码: + +<UL> + <LI>RealVideo 1.0 (fourcc RV10) -- 编/解码由<B>libavcodec</B>支持</LI> + <LI>RealVideo 2.0,3.0,4.0(fourcc RV20,RV30,RV40) -- 解码由<B>RealPlayer库</B>支持</LI> +</UL> + +<P>推荐下载并安装RealPlayer8或者RealONE,因为<B>MPlayer</B>能使用他们的库来解码RealVideo 2.0或者RealVideo 3.0的视频文件。 +<B>MPlayer</B>的配置脚本应该在一个完全安装的RealPlayer的标准位置找到它的库。如果它没找到,用<CODE>--with-reallibdir</CODE> +选项告诉configure到哪里去找。</P> + +<P><B>注意:</B>RealPlayer库目前<B>只能用于x86平台上的Linux,FreeBSD,NetBSD和Cygwin。</B></P> + +<P><B>注意:</B>我们不能分发RealPlayer库,它的许可证不允许这样。你必须自己搞到他们。</P> + + +<H4><A NAME="xvid">2.2.1.9 XViD</A></H4> + +<P><B>XViD</B>OpenDivX编码格式的开发分支。故事发生在Mayo工程把OpenDivX变成封闭源码的DivX4的时候,那些从事于OpenDivX的非Mayo工程 +的人们感到愤怒,于是开始了XViD。所以两个项目有相同的起源。</P> + +<H4>优点:</H4> + +<UL> + <LI>开放源码</LI> + <LI>它的API与DivX4相同,所以加入对它的支持很容易</LI> + <LI>支持2-pass编码</LI> + <LI>不错的编码质量,DivX4更快的速度(编译时你能针对你的机器优化它)</LI> +</UL> + +<H4>缺点:</H4> + +<UL> + <LI>目前还不能正确的<B>解码</B>所有的DivX与DivX4文件(没问题因为libavcodec能播放他们)</LI> + <LI>编译时你必须选择支持DivX4<B>或者</B>支持XViD</LI> + <LI>还在开发中</LI> +</UL> + +<P>XViD目前只能从CVS中得到。这是下载和安装的指令:</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>按照你的需要编辑<CODE>Makefile.linux</CODE>。</LI> + <LI><CODE>make -f Makefile.linux</CODE></LI> + <LI>从DivX4Linux包中找出<CODE>encore2.h </CODE>和<CODE>decore.h </CODE>,把它们复制到<CODE>/usr/local/include/</CODE>。</LI> + <LI>加上<CODE>--with-xvidcore=/path/to/libcore.a</CODE>选项重新编译<B>MPlayer </B>。</LI> +</OL> + + +<H4><A NAME="sorenson">2.2.1.10 Sorenson </A></H4> + +<P><B>Sorenson </B>是苹果开发的视频编码格式。目前我们能用本地解码器解码第一个版本(SVQ1)。</P> + +<H4>优点:</H4> + +<UL> + <LI>快,甚至很老的Macintosh机器也能够解码它。</LI> +</UL> + +<H4>缺点:</H4> + +<UL> + <LI>SVQ3仍然没有完成逆向工程。</LI> +</UL> + +<P>Sorenson解码器是默认编译使用的。</P> + + +<H3><A NAME="audio_codecs">2.2.2 音频编码格式 </A></H3> + +<P>所有音频编码中最重要的是:<BR></P> + +<UL> + <LI>MPEG layer 2, 和layer 3(MP3)(<B>本地</B>代码,经过MMX/SSE/3DNow!优化)</LI> + <LI>MPEG layer 1音频(<B>本地</B>代码,使用libavcodec)</LI> + <LI>AC3杜比音频(<B>本地</B>代码,经过MMX/SSE/3DNow!优化)</LI> + <LI>Ogg Vorbis音频编码格式(<B>本地</B>库)</LI> + <LI>Voxware音频(使用DirectShow DLL)</LI> + <LI>alaw,msgsm,pcm和其它简单的老的音频格式</LI> + <LI>VIVO音频(g723,Vivo Siren)的</LI> + <LI>RealAudio:DNET(低比特率的AC3),Cook</LI> +</UL> + + +<H4><A NAME="software_ac3">2.2.2.1 软件AC3解码</A></H4> + +<P>这是含有AC3音频的文件的默认解码器。</P> + +<P>AC3解码器能为了2,4或者6个扬声器创建音频混合输出。当配置为6个扬声器时,这个解码器向声卡驱动提供所有AC3通道的单独的输出, +允许彻底的“环绕立体声”感受而不需要使用需要hwac3解码器的外部AC3解码器。</P> + +<P>使用<CODE>-channels</CODE>选项可以选择输出的通道数。使用<CODE>-channels 2</CODE>获得立体声的降混频。 +对于4通道的降混频(左前,右前,左环绕和右环绕),使用<CODE>-channels 4</CODE>。在这种情况下,中心通道的任何输出将与前通道均匀混合。 +<CODE>-channels 6</CODE>将按照编码时的形式输出所有AC3通道-- 依次为左,右,左环绕,右环绕,中间和低频效果。</P> + +<P>默认的输出通道数是2。</P> + +<P>为使用超过2个通道的输出,你需要使用OSS,和一块能通过SNDCTL_DSP_CHANNELS ioctl支持适当输出通道数的声卡。合适的驱动的一个例子是 +2001年8月的或者更新的emu10k1(用于Soundblaster Live!卡)(ALSA的CVS应该也能工作)。</P> + + +<H4><A NAME="hardware_ac3">2.2.2.2 硬件AC3解码</A></H4> + +<P>你需要一个AC3兼容声卡,加上数字输出(SP/DIF)。声卡的驱动必须正确地支持AFMT_AC3格式(C-Media就支持)。把你的AC3解码器连接到SP/DIF输出, +然后使用<CODE>-ac hwac3</CODE>选项。这还在试验阶段但已经知道能用于C-Media声卡,使用ALSA驱动(但不能是OSS)的Soundblaster Live! +还有DXR3/Hollywood+ MPEG译码卡。</P> + + +<H4><A NAME="libmad">2.2.2.3 libmad支持</A></H4> + +<P><A HREF="http://mad.sourceforge.net">libmad</A>是多平台的MPEG音频解码库。它不能很好的处理损坏的文件,而且有时候搜索也有问题。</P> + +<P>为了支持它,加上<CODE>--enable-mad</CODE>配置选项编译。</P> + + +<H4><A NAME="vivo_audio">2.2.2.4 VIVO音频</A></H4> + +<P>VIVO文件的使用的音频编码取决于它是VIVO/1.0还是VIVO/2.0。VIVO/1.0文件使用<B>g.723</B>音频,而VIVO/2.0文件使用<B>Vivo Siren</B>音频。 +他们两个都支持。你能从MPlayer站点下载<A HREF="http://www.mplayerhq.hu/MPlayer/samples/drivers32/vivog723.acm">g.723/Siren</A>的Win32 DLL, +然后把它复制到<CODE>/usr/lib/win32</CODE>目录下。</P> + + +<H4><A NAME="realaudio">2.2.2.5 RealAudio</A></H4> + +<B>MPlayer</B>支持解码几乎所有版本的RealAudio: + +<UL> + <LI>RealAudio DNET -- 解码由<B>liba52</B>支持</LI> + <LI>RealAudioCook/Sipro -- 解码由<B>RealPlayer库</B>支持</LI> + <LI>RealAudio atrc -- 解码尚未支持</LI> +</UL> + +<P>至于如何安装RealPlayer库,参见<A HREF="formats.html#real">RealMedia文件格式</A>部分。</P> + + +<H3><A NAME="importing">2.2.3 Win32解码器导入HOWTO</A></H3> + + +<H4><A NAME="importing_vfw">2.2.3.1 VFW codecs</A></H4> + +<P>VFW(Video for Windows)是Windows的老的视频API。它的解码器以.DLL或者(很少的).DRV为扩展名。 +如果<B>MPlayer</B>无法播放你的AVI并显示这种信息:</P> + +<P> <CODE>UNKNOWN video codec: HFYU (0x55594648)</CODE></P> + +<P>它意味着你的AVI在编码时使用了HFYU fourcc(HFYU = HuffYUV codec,DIV3 = DivX Low Motion,等等...) +的编码格式。现在你知道了,你必须查明Windows为了播放这个文件装载了哪一个DLL。在我们的情况下, +<CODE>system.ini</CODE>在这样的一行上包含这个信息:</P> + +<P> <CODE>VIDC.HFYU=huffyuv.dll</CODE></P> + +<P>因此,你需要<CODE>huffyuv.dll</CODE>文件。注意,音频解码器通过MSACM前缀指定:</P> + +<P> <CODE>msacm.l3acm=L3codeca.acm</CODE></P> + + +<P>这是MP3编码格式。现在你有了所有必要的信息(fourcc,解码器文件,AVI样本),把你的解码器支持要求通过邮件提交, +并把相关文件上载到我们的FTP站点:</P> + +<P> <CODE>ftp://ftp.mplayerhq.hu/MPlayer/incoming/[codecname]/</CODE></P> + + +<H4><A NAME="importing_directshow">2.2.3.2 DirectShow codecs</A></H4> + +<P>DirectShow是较新的视频API,比它的前辈更恶劣。对于DirectShow事情变的困难了,</P> + +<UL> + <LI><CODE>system.ini</CODE>不再包含需要的信息,它们被储存在注册表里,此外 + <LI>我们需要解码器的的GUID。 +</UL> + +<P><B>新方法:</B>使用微软的GraphEdit(快速)</P> +<OL> + <LI>从DirecX SDK或者<A HREF="http://doom9.org">Doom9</A>中取得GraphEdit + <LI>运行<CODE>graphedit.exe</CODE> + <LI>从菜单中选择Graph -> Insert Filters + <LI>展开<CODE>DirectShow Filters</CODE>项目 + <LI>选择正确的解码器名称然后展开项目 + <LI>在<CODE>DisplayName</CODE>一项中看反斜杠后面花括号里面的文字并把它记下来(小短横分隔开的五块,就是GUID) + <LI>解码器的二进制文件是<CODE>Filename</CODE>项里指定的文件 +</OL> + +<P><B>注意:</B>如果没有<CODE>Filename</CODE>项而<CODE>DisplayName</CODE>中包含类似<CODE>device:dmo</CODE>的东西, +那么这是一个DMO-Codec,MPlayer目前不支持</P> +<P><B>老方法:</B>做个深呼吸然后开始搜索注册表...</P> + +<OL> + <LI>运行<CODE>regedit</CODE>。 + <LI>按<CODE>Ctrl-f</CODE>,禁用头两个复选框,填写解码器的fourcc(例如TM20)。 + <LI>你应该看见一个包含路径和文件名的域(例如<CODE>C:\WINDOWS\SYSTEM\TM20DEC.AX</CODE>)。 + <LI>现在你找到了文件,我们需要GUID。尝试再次搜索,但现在搜索解码器的名称,fourcc。用媒体播放器播放文件时, +察看File -> Properties -> Advanced可以获得解码器名。如果没有,你真不走运。猜猜看吧(例如搜索TrueMotion)。 + <LI>如果找到GUID你将看见FriendlyName和CLSID域。写出16字节CLSID,这就是我们需要的GUID。 +</OL> + +<P><B>注意:</B>如果搜索失败,试试选上所有的复选框。你可能找到错误的内容,不过说不定你会走运...</P> + +<P>现在你有所有必要的信息(fourcc,GUID,解码器文件,AVI样本),把你的解码器支持要求通过邮件提交,并把相关文件上载到我们的FTP站点</P> + +<P> <CODE>ftp://ftp.mplayerhq.hu/MPlayer/incoming/[codecname]/</CODE></P> + +</BODY> +</HTML>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/DOCS/Chinese/default.css Sat Oct 05 10:19:07 2002 +0000 @@ -0,0 +1,5 @@ +body { + font-family : Arial, Helvetica, sans-serif; + font-size : 12px; + background : white; +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/DOCS/Chinese/documentation.html Sat Oct 05 10:19:07 2002 +0000 @@ -0,0 +1,1433 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<HTML> + +<HEAD> + <TITLE>文档 - MPlayer - Linux的电影播放器</TITLE> + <LINK REL="stylesheet" TYPE="text/css" HREF="default.css"> + <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=gb_2312-80"> +</HEAD> + +<BODY> + +<H1 ALIGN="center">MPlayer - Linux的电影播放器</H1> + +<H2 ALIGN="center">© 2000-2002 Arpad Gereoffy (A'rpi/ESP-team)<BR> + <A HREF="http://www.mplayerhq.hu">http://www.mplayerhq.hu</A></H2> + +<P ALIGN="center">[汉语] + <A HREF="../documentation.html">[英语] </A> + <A HREF="../Hungarian/documentation.html">[匈牙利语] </A> + <A HREF="../German/documentation.html">[德语] </A> + <A HREF="../French/documentation.html">[法语] </A> + <A HREF="../Polish/documentation.html">[波兰语] </A> + <A HREF="../Italian/documentation.html">[意大利语] </A><P> + +<HR> + +<H2>目录</H2> + +<HR> + +<UL> + <LI><A HREF="#reading">0. 如何读取这种文件</A></LI> + <LI><A HREF="#introduction">1. 介绍</A> + <UL> + <LI><A HREF="#history">1.1 历史</A></LI> + <LI><A HREF="#installation">1.2 安装</A></LI> + <LI><A HREF="#gui">1.3 GUI有吗?</A></LI> + <LI><A HREF="#subtitles_osd">1.4 字幕和OSD </A> + <UL> + <LI><A HREF="#mpsub">1.4.1 MPlayer自己的字幕格式(MPsub)</A></LI> + <LI><A HREF="#install_osd">1.4.2 安装OSD和字幕</A></LI> + </UL> + </LI> + <LI><A HREF="#rtc">1.5 RTC</A></LI> + </UL> + </LI> + <LI><A HREF="#features">2. 特色</A> + <UL> + <LI><A HREF="formats.html">2.1 支持的格式</A> + <UL> + <LI><A HREF="formats.html#video_formats">2.1.1 视频格式</A> + <UL> + <LI><A HREF="formats.html#mpeg">2.1.1.1 MPEG文件</A></LI> + <LI><A HREF="formats.html#avi">2.1.1.2 AVI文件</A></LI> + <LI><A HREF="formats.html#asf">2.1.1.3 ASF与WMV文件</A></LI> + <LI><A HREF="formats.html#mov">2.1.1.4 QuickTime与MOV文件</A></LI> + <LI><A HREF="formats.html#vivo">2.1.1.5 VIVO文件</A></LI> + <LI><A HREF="formats.html#fli">2.1.1.6 FLI文件</A></LI> + <LI><A HREF="formats.html#real">2.1.1.7 RealMedia(RM)文件</A></LI> + <LI><A HREF="formats.html#nuppelvideo">2.1.1.8 NuppelVideo文件</A></LI> + <LI><A HREF="formats.html#yuv4mpeg">2.1.1.9 yuv4mpeg文件</A></LI> + <LI><A HREF="formats.html#film">2.1.1.10 FILM文件</A></LI> + <LI><A HREF="formats.html#roq">2.1.1.11 RoQ文件</A></LI> + <LI><A HREF="formats.html#ogg">2.1.1.12 OGG文件</A></LI> + </UL> + </LI> + <LI><A HREF="formats.html#audio_formats">2.1.2 音频格式</A> + <UL> + <LI><A HREF="formats.html#mp3">2.1.2.1 MP3文件</A></LI> + <LI><A HREF="formats.html#wav">2.1.2.2 WAV文件</A></LI> + <LI><A HREF="formats.html#ogg_vorbis">2.1.2.3 OGG文件(Vorbis) </A></LI> + <LI><A HREF="formats.html#wma">2.1.2.4 WMA与ASF文件</A></LI> + <LI><A HREF="formats.html#mp4">2.1.2.5 MP4文件</A></LI> + </UL> + </LI> + </UL> + </LI> + <LI><A HREF="codecs.html"">2.2 支持的编码格式</A> + <UL> + <LI><A HREF="codecs.html#video_codecs">2.2.1 视频编码格式</A> + <UL> + <LI><A HREF="codecs.html#divx">2.2.1.1 DivX4与DivX5</A></LI> + <LI><A HREF="codecs.html#libavcodec">2.2.1.2 FFmpeg DivX / libavcodec</A></LI> + <LI><A HREF="codecs.html#xanim">2.2.1.3 XAnim codecs</A></LI> + <LI><A HREF="codecs.html#vivo_video">2.2.1.4 VIVO视频</A></LI> + <LI><A HREF="codecs.html#mpeg">2.2.1.5 MPEG 1/2种视频</A></LI> + <LI><A HREF="codecs.html#ms_video1">2.2.1.6 MS Video1</A></LI> + <LI><A HREF="codecs.html#cinepak">2.2.1.7 Cinepak CVID</A></LI> + <LI><A HREF="codecs.html#realvideo">2.2.1.8 RealVideo</A></LI> + <LI><A HREF="codecs.html#xvid">2.2.1.9 XViD </A></LI> + <LI><A HREF="codecs.html#sorenson">2.2.1.10 Sorenson</A></LI> + </UL> + </LI> + <LI><A HREF="codecs.html#audio_codecs">2.2.2音频编码格式</A> + <UL> + <LI><A HREF="codecs.html#software_ac3">2.2.2.1软件AC3解码</A></LI> + <LI><A HREF="codecs.html#hardware_ac3">2.2.2.2硬件AC3解码</A></LI> + <LI><A HREF="codecs.html#libmad">2.2.2.3 libmad支持</A></LI> + <LI><A HREF="codecs.html#vivo_audio">2.2.2.4 VIVO音频</A></LI> + <LI><A HREF="codecs.html#realaudio">2.2.2.5 RealAudio</A></LI> + </UL> + </LI> + <LI><A HREF="codecs.html#importing">2.2.3 Win32 codec导入HOWTO</A> + <UL> + <LI><A HREF="codecs.html#importing_vfw">2.2.3.1 VFW codecs</A></LI> + <LI><A HREF="codecs.html#importing_directshow">2.2.3.2 DirectShow codecs</A></LI> + </UL> + </LI> + </UL> + </LI> + <LI><A HREF="#output">2.3 输出设备</A> + <UL> + <LI><A HREF="video.html">2.3.1 视频输出设备</A> + <UL> + <LI><A HREF="video.html#mtrr">MTRR的2.3.1.1设置</A></LI> + <LI><A HREF="video.html#xv">2.3.1.2 Xv </A> + <UL> + <LI><A HREF="video.html#xv_3dfx">2.3.1.2.1 3dfx卡</A></LI> + <LI><A HREF="video.html#xv_s3">2.3.1.2.2 S3卡</A></LI> + <LI><A HREF="video.html#xv_nvidia">2.3.1.2.3 nVidia卡</A></LI> + <LI><A HREF="video.html#xv_ati">2.3.1.2.4 ATI卡</A></LI> + <LI><A HREF="video.html#xv_neomagic">2.3.1.2.5 NeoMagic卡</A></LI> + <LI><A HREF="video.html#xv_trident">2.3.1.2.6 Trident卡</A></LI> + </UL> + </LI> + <LI><A HREF="video.html#dga">2.3.1.3 DGA </A> + <UL> + <LI><A HREF="video.html#dga_summary">2.3.1.3.1总结</A></LI> + <LI><A HREF="video.html#dga_whatis">2.3.1.3.2 DGA是什么</A></LI> + <LI><A HREF="video.html#dga_installation">2.3.1.3.3 MPlayer的DGA支持的安装</A></LI> + <LI><A HREF="video.html#dga_resolution">2.3.1.3.4 切换分辨率</A></LI> + <LI><A HREF="video.html#dga_mplayer">2.3.1.3.5 DGA与MPlayer</A></LI> + <LI><A HREF="video.html#dga_features">2.3.1.3.6 DGA驱动模式的特性</A></LI> + <LI><A HREF="video.html#dga_speed">2.3.1.3.7 速度问题</A></LI> + <LI><A HREF="video.html#dga_bugs">2.3.1.3.8 已知的bug</A></LI> + <LI><A HREF="video.html#dga_future">2.3.1.3.9 未来工作</A></LI> + <LI><A HREF="video.html#dga_modelines">2.3.1.3.A 一些modelines</A></LI> + <LI><A HREF="video.html#dga_bug_reports">2.3.1.3.B 错误报告</A></LI> + </UL> + </LI> + <LI><A HREF="video.html#sdl">2.3.1.4 SDL</A></LI> + <LI><A HREF="video.html#svgalib">2.3.1.5 SVGAlib</A></LI> + <LI><A HREF="video.html#fbdev">2.3.1.6 Framebuffer输出(FBdev)</A></LI> + <LI><A HREF="video.html#mga_vid">2.3.1.7 Matrox framebuffer(mga-vid)</A></LI> + <LI><A HREF="video.html#sis_vid">2.3.1.8 SiS 6326 framebuffer(sis-vid)</A></LI> + <LI><A HREF="video.html#tdfxfb">2.3.1.9 3dfx YUV支持(tdfxfb)</A></LI> + <LI><A HREF="video.html#opengl">2.3.1.10 OpenGL输出</A></LI> + <LI><A HREF="video.html#aalib">2.3.1.11 AAlib -- 文本方式显示</A></LI> + <LI><A HREF="video.html#vesa">2.3.1.12 VESA -- VESA BIOS的输出</A></LI> + <LI><A HREF="video.html#x11">2.3.1.13 X11</A></LI> + <LI><A HREF="video.html#vidix">2.3.1.14 VIDIX</A></LI> + <LI><A HREF="video.html#zr">2.3.1.15 Zr</A></LI> + <LI><A HREF="video.html#dvb">2.3.1.16 DVB</A></LI> + <LI><A HREF="video.html#dxr3">2.3.1.17 DXR3</A></LI> + <LI><A HREF="video.html#tv-out">2.3.1.A 电视支持</A> + <UL> + <LI><A HREF="video.html#tv-out_matrox">2.3.1.A.1 Matrox G400显卡</A></LI> + <LI><A HREF="video.html#tv-out_matrox_g450">2.3.1.A.2 Matrox G450/G550显卡</A></LI> + <LI><A HREF="video.html#tv-out_ati">2.3.1.A.3 ATI显卡</A></LI> + <LI><A HREF="video.html#tv-out_voodoo">2.3.1.A.4 Voodoo 3显卡</A></LI> + </UL> + </LI> + </UL> + <LI><A HREF="sound.html">2.3.2 音频输出设备</A> + <UL> + <LI><A HREF="sound.html#experiences">2.3.2.1 声卡经验推荐</A></LI> + <LI><A HREF="sound.html#plugins">2.3.2.2 音频插件 </A> + <UL> + <LI><A HREF="sound.html#resample">2.3.2.2.1 升/降采样率</A></LI> + <LI><A HREF="sound.html#surround_decoding">2.3.2.2.2 环绕音效解码</A></LI> + <LI><A HREF="sound.html#format">2.3.2.2.3 采样格式转换</A></LI> + <LI><A HREF="sound.html#delay">2.3.2.2.4 延迟</A></LI> + <LI><A HREF="sound.html#volume">2.3.2.2.5 软件音量控制</A></LI> + <LI><A HREF="sound.html#extrastereo">2.3.2.2.6 立体声加强</A></LI> + <LI><A HREF="sound.html#normalizer">2.3.2.2.7 音量正则话</A></LI> + <LI><A HREF="sound.html#surround">2.3.2.2.8 环绕</A></LI> + </UL> + </LI> + </UL> + </LI> + </UL> + </LI> + <LI><A HREF="encoding.html">2.4 用MEncoder编码</A> + <UL> + <LI><A HREF="encoding.html#compilation">2.4.1 编译</A></LI> + <LI><A HREF="encoding.html#features">2.4.2 MEncoder特性</A> + <UL> + <LI><A HREF="encoding.html#2pass">2.4.2.1 编码2或者3-pass的DivX4</A></LI> + <LI><A HREF="encoding.html#rescaling">2.4.2.2 重新缩放电影</A></LI> + <LI><A HREF="encoding.html#copying">2.4.2.3 流复制</A></LI> + <LI><A HREF="encoding.html#fixing">2.4.2.4 修复索引损坏的AVI文件 </A></LI> + <LI><A HREF="encoding.html#libavcodec">2.4.2.5 用libavcodec codec编码器族编码</A></LI> + <LI><A HREF="encoding.html#image_files">2.4.2.6 从多个图象文件(JPEG,PNG或TGA)的输入编码</A></LI> + <LI><A HREF="encoding.html#vobsub">2.4.2.7 DVD字幕提取为Vobsub文件</A></LI> + </UL> + </LI> + <LI><A HREF="encoding.html#options">2.4.3 可用的选项</A></LI> + </UL> + </LI> + <LI><A HREF="#tv">2.5 电视输入</A> + <UL> + <LI><A HREF="#tv_compilation">2.5.1 编缉</A></LI> + <LI><A HREF="#tv_options">2.5.2 可用的选项</A></LI> + <LI><A HREF="#tv_keyboard">2.5.3 键盘控制</A></LI> + <LI><A HREF="#tv_examples">2.5.4 例子</A></LI> + </UL> + </LI> + </UL> + </LI> + <LI><A HREF="#usage">3. 用法</A> + <UL> + <LI><A HREF="#command_line">3.1 命令行</A></LI> + <LI><A HREF="#control">3.2 控制</A> + <UL> + <LI><A HREF="#default_controls">3.2.1 缺省控制</A></LI> + <LI><A HREF="#controls_configuration">3.2.2 控制配置</A> + <UL> + <LI><A HREF="#key_names">3.2.2.1 键名</A></LI> + <LI><A HREF="#commands">3.2.2.2 命令</A></LI> + </UL> + </LI> + <LI><A HREF="#lirc">3.2.3 LIRC控制</A></LI> + <LI><A HREF="#slave">3.2.4 Slave模式</A></LI> + </UL> + </LI> + <LI><A HREF="#streaming">3.3 网络或管道的流媒体</A></LI> + </UL> + </LI> + <LI><A HREF="cd-dvd.html">4. CD与DVD部分</A> + <UL> + <LI><A HREF="cd-dvd.html#drives">4.1 CD与DVD驱动器</A></LI> + <LI><A HREF="cd-dvd.html#dvd">4.2 DVD回放</A></LI> + <LI><A HREF="cd-dvd.html#vcd">4.3 VCD回放</A></LI> + </UL> + </LI> + <LI><A HREF="faq.html">5. FAQ部分</A> + <UL> + <LI><A HREF="faq.html#compilation">5.1 编译</A></LI> + <LI><A HREF="faq.html#general">5.2 一般问题</A></LI> + <LI><A HREF="faq.html#playback">5.3 回放问题</A></LI> + <LI><A HREF="faq.html#driver">5.4 视频与音频驱动问题(vo/ao)</A></LI> + <LI><A HREF="faq.html#dvd">5.5 DVD回放</A></LI> + <LI><A HREF="faq.html#features">5.6 特性要求</A></LI> + <LI><A HREF="faq.html#encoding">5.7 编码</A></LI> + </UL> + </LI> + <LI><A HREF="#ports">6. 移植</A> + <UL> + <LI><A HREF="#debian">6.1 Debian安装包的制作</A></LI> + <LI><A HREF="#freebsd">6.2 FreeBSD</A></LI> + <LI><A HREF="#solaris">6.3 Solaris</A></LI> + <LI><A HREF="#strongarm">6.4 StrongARM</A></LI> + <LI><A HREF="#sgi">6.5 Silicon Graphics/Irix</A></LI> + <LI><A HREF="#qnx">6.6 QNX</A></LI> + <LI><A HREF="#openbsd">6.7 OpenBSD</A></LI> + <LI><A HREF="#cygwin">6.8 Cygwin</A></LI> + </UL> + </LI> + <LI><A HREF="#mailing_lists">附录A -- 邮件列表</A></LI> + <LI><A HREF="bugreports.html">附录B -- 如何报告bug</A> + <UL> + <LI><A HREF="../tech/patches.txt">附录B2 -- 如何发送补丁</A></LI> + </UL> + </LI> + <LI><A HREF="#known_bugs">附录C -- 已知bug</A></LI> + <LI><A HREF="skin-zh.html">附录D -- MPlayer skin的格式!</A></LI> + <LI><A HREF="users_against_developers.html">附录E -- 开发者的痛楚</A> + <UL> + <LI><A HREF="users_against_developers.html#gcc">GCC 2.96 </A></LI> + <LI><A HREF="users_against_developers.html#binary">二进制发行版</A></LI> + <LI><A HREF="users_against_developers.html#nvidia">nVidia</A></LI> + <LI><A HREF="users_against_developers.html#barr">Joe Barr </A></LI> + </UL> + </LI> +</UL> + +<HR> + + + +<H1><A NAME="reading">0. 如何阅读本文档</A></H1> + +<P>如果你是首次安装:请一定要阅读从这里到安装部分末端的每件事,并且追踪你将遇到的链接。 +如果你有任何其它问题,返回到目录并搜索主题,读取<A HREF="faq.html">FAQ</A>,或者试图grepping整个文件。</P> + +<P>这个文件的主要原则:如果一个功能没有被编入文档,那么它<U>不存在</U>。如果我不说你能 +用电视选台器音频编码,你一定不能。不过健康程度的综合能力还是受欢迎的。祝你好运。你将需要它的:), +让我引用<A HREF="http://mplayerhq.hu/pipermail/mplayer-users/">mplayer-users</A>邮件列表中 +Chris Phillips的话作为另一个好的建议:</P> + +<P><I>“我以前说过新手和白痴之间的区别在于:无论,你实际上对一个系统(Linux,汽车,女孩:D) +了解多少,你应该总能够退一步想想并且保持客观,否则,你是公认的白痴IMHO。跟我住在一起的女孩认定吸 +尘器坏了因为它不吸进东西,而从不想更换袋子,因为她以前从来没有做过...那就是愚蠢,而不仅仅是不 +知道做什么...仅仅因为不是那么熟悉你的环境不是你的a)懒惰和b)忽视的借口。如此多人们似乎看到“error” +就停止...极少数似乎真正上读取了在冒号的另一边的东西”。</I></P> + + +<H1><A NAME="introduction">1. 介绍</A></H1> + +<P><B>MPlayer</B>是Linux 上的电影播放器(也能跑在许多其它Unices上,甚至<B>non-x86</B>CPU上, +参见<A HREF="#ports">移植部分</A>)。它能使用众多的本地的,XAnim,RealPlayer,和Win32 DLL codecs, +播放大多数MPEG,VOB,AVI,OGG,VIVO,ASF/WMV,QT/MOV,FLI,RM,NuppelVideo,yuv4mpeg,FILM,RoQ文件。 +你还能观看<B>VideoCD</B>,<B>SVCD</B>,<B>DVD</B>,<B>3ivx</B>,<B>RealMedia</B>,和<B>DivX</B>格式 +的电影(你根本不需要avifile库)。mplayer的另一个大的特色是广泛的输出设备支持。它可以在X11,Xv,DGA, +OpenGL,SVGAlib,fbdev,AAlib,DirectFB下工作,而且你也能使用GGI和SDL(由此可以使用他们支持的各种驱动模式) +和一些低级的硬件相关的驱动模式(比如Matrox,3Dfx和Radeon,Mach64,Permedia3)!他们大多数支持软件或者硬件缩放, +因此你能在全屏下享受电影。<B>MPlayer</B>还支持通过硬件MPEG解码卡显示,诸如<B><A HREF="video.html#dvb">DVB</A></B> +和<B><A HREF="video.html#dxr3">DXR3与Hollywood+</A></B>。可以使用european/ISO 8859-1,2(匈牙利语,英语,捷克语等等), +Cyrillic,朝鲜字体的清晰放大并且反锯齿的字幕(<B>支持10种格式</B>),和on screen display(OSD)你又觉得如何?</P> + +<P><B>MPlayer</B>以GPL v2许可证发行。</P> + +<P>这个播放器能够稳如泰山的播放被破坏的MPEG文件(对一些VCD有用),而它能播放著名的windows media player +都打不开的的坏的AVI文件。甚至,没有索引部分的AVI文件可播放,你能暂时由重建他们的索引<CODE>-idx</CODE>选择, +或者用<B>MEncoder</B>永久重建,使你能够seek!如你所见,稳定和质量是最重要的事情,而且他的速度是也惊人的。</P> + + +<H2><A NAME="history">1.1 历史</A></H2> + +<P>这一年以前开始的... +我(A'rpi)已尝试Linux下的许多播放器(mtv,xmps,dvdview,livid/oms,videolan,xine,xanim,avifile,xmmp), +但是他们全都有一些问题。多半与特殊的文件或音频与视频的同步有关。他们中大多数不能同时播放MPEG1,MPEG2和AVI(DivX)文件。 +许多播放器也有图象质量或者速度的问题。因此,我已决定自己写/修改一个...</P> + +<UL> +<LI><B>mpg12play v0.1-v0.3:</B>2000年9月22-25日<BR> + 第一次尝试,总共只用了半小时来hack!到版本0.3我都使用www.heroinewarrior.com的libmpeg3,但是它有图象质量和速度的问题。</LI> +<LI><B>mpg12play v0.5-v0.87:</B>2000年9月28日 - 10月20日<BR> + 用Dirk Farin的DVDview替换了原来的Mpeg codec,它是一个很不错的东东,但是它很慢并且使用写成C++(我讨厌C++!!!)</LI> +<LI><B>mpg12play v0.9-v0.95pre5:</B>2000年十月21日 - 11月2日<BR> + Mpeg codec改用Aaron Holtzman与的Michel Lespinasse的libmpeg2(mpeg2dec)。它十分出色,优化过的十分快速的C代码和完美的图象质量以及100%的MPEG标准的一致性。</LI> +<LI><B>MPlayer v0.3-v0.9:</B>2000年11月18日 - 12月4日<BR> + 它包含两个程序: mpg12play v0.95pre6和我的新的简单的基于avifile的Win32 DLL Loader的AVI播放器'avip'。</LI> +<LI><B>MPlayer v0.10:</B>2001年1月1日<BR> + MPEG和AVI播放器做成了一个二进制文件!</LI> +<LI><B>MPlayer v0.11pre系列:</B><BR> + 一些新的开发者加入了,从0.11开始mplayer项目成为一个team-work!增加了.ASF文件支持,和OpenDivX(见www.projectmayo.com)编/解码。</LI> +<LI><B>MPlayer v0.17a“IdegCounter”</B>2001年4月27日<BR> + 在艰苦发展了4个月的0.11pre之后的正式版本!试试看,然后等着被震撼!成千上万的新的特性添加...当然同时旧的代码也被改进,移去了一些bug</LI> +<LI><B>MPlayer 0.18“BugCounter”</B>2001年7月9日<BR> + 自从0.17以来的2个月后的新的正式版。完全的ASF支持,更多字幕格式,引入libao(类似于libvo但是针对音频),比以往任何时候更加稳定,如此等等。这肯定是个必需品!</LI> +<LI><B>MPlayer 0.50“Faszom(C)ounter”</B>2001年10月8日<BR> + Hmm。又一次新版本。众多新的特性,Beta版的GUI,bug修正,新的vo和ao驱动模式,许多系统的移植,包括opensource DivX codecs和更多得多的改进。尝试一下!</LI> +<LI><B>MPlayer 0.60“RTFMCounter”</B>2002年1月3日<BR> + 支持MOV/VIVO/RM/FLI/NUV文件格式,本地的CRAM,Cinepak,ADPCM codecs,支持XAnim的二进制的codecs;DVD字幕支持,首此发布MEncoder,电视截取,cache,liba52,无数的修正。</LI> +<LI><B>MPlayer 0.90“?”</B>8月??日,2002<BR> + </LI> +</UL> + +<H2><A NAME="installation">1.2 安装</A></H2> + +<P>在这章中我将试图指引你通过编译和配置<B>MPlayer</B>的过程,它不大容易的,不过也见得一定很难的。 +如果你遇到不同于我所解释的现象,请的通过搜索这篇文件来查找你的回答。如果你遇到链接,请跟踪他们并且细心读取他们包含的内容。 +它将花费一些时间,但是它确实是值得的。</P> + +<P>你需要一个相当新的系统。在Linux上,推荐2.4.x的内核。</P> + +<H4>软件要求:</H4> + +<UL> + <LI><B>binutils </B>-- 建议版本<B>2.11.x</B>。这个程序这样十分重要,负责产生MMX/3DNow!/etc指令。</LI> + <LI><B>gcc </B>-- 建议版本是:<B>2.95.3</B>,<B>2.95.4</B>和<B>3.1</B>。<B>永远不要</B>使用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的(仍然没有修正,他们在<B>MPlayer</B>中不断出现!)详细信息能在<A HREF="users_against_developers.html"> +这里</A>和<A HREF="faq.html">FAQ</A>中找到。</LI> + <LI><B>XFree86 </B>-- 建议<B>总使用最新版本(4.2.0)</B>。正常来说,每个人会这样做,因为XFree86从4.0.2开始, +它包含了用来使其能够在它支持的卡片上使用硬件YUV加速(快速的图象显示)的<A HREF="video.html#xv">XVideo</A>扩展(在某些地方被称作<B>Xv</B>)。<BR> +确保也安装了<B>开发包</B>,否则它将不工作。<BR> +对于一些视频卡你不需要XFree86。参见下面的列表。</LI> + <LI><B>make </B>-- 建议<B>总使用最新版本</B>(至少3.79.x)。这通常不太重要。</LI> + <LI><B>SDL </B>-- 它不是强制要求的,但是在某些情况下(坏的音频,在xv驱动模式下奇怪地延迟的视频卡)能帮助。总使用最新(从1.2.x开始支持)的。</LI> + <LI><B>libjpeg </B>-- 可选的JPEG译码器,用于-mf参数和一些QT MOV文件。如果你计划做jpeg文件的工作<B>MPlayer</B>和<B>MEncoder</B>都需要它。</LI> + <LI><B>libpng </B>-- 推荐也是缺省( M)PNG译码器。GUI需要。对<B>MPlayer</B>和<B>MEncoder</B>也有用。</LI> + <LI><B>lame </B>-- 推荐,MEncoder需要用它把音频做MP3编码,建议<B>总使用最新版本</B>(至少3.90)。</LI> + <LI><B>libogg </B>-- 可选,播放OGG文件格式需要。</LI> + <LI><B>libvorbis </B>-- 可选,播放OGG Vorbis音频需要。</LI> +</UL> + +<H4>解码器:</H4> + +<UL> + <LI><B>libavcodec</B>:这个解码器包可以在多重平台上对H263/MJPEG/RV10/DivX3/DivX4/DivX5/MP41/MP42/WMV1编码格式的视频流进行解码。 +详细情况请看<A HREF="codecs.html#libavcodec">这里</A>。特色<BR>: + <UL> + <LI>在non-x86机器上的对上述的各种编码格式解码。</LI> + <LI>以上述大多数编码格式编码。</LI> + <LI>这是<B>可用的最快的</B>DivX/3/4/5和其它MPEG4类型的解码器,因此高度推荐。</LI> + </UL> + </LI> + <LI><B>Win32 codecs:</B>如果你计划在x86构架的机器上使用<B>MPlayer</B>,你将有可能需要他们。在开始<B>MPlayer</B>的编译<B>之前</B> +下载并用unzip解压缩w32codecs.zip到/usr/local/win32,否则将不会编译Win32支持代码!<BR> +注: avifile项目有类似的codecs包,但是它不同于我们的,如此如果你想要使用所有支持的codecs,那么使用我们的包! 然而, +你能在avifile中使用我们的codecs包。特色:<BR> + <UL> + <LI>如果你想要播放或者编码例如以各种各样的硬件压缩器记录的电影,像调音器卡,数码相机(例如:DV,ATI VCR,MJPEG),你将需要它</LI> + <LI>如果你想要播放<B>WMV8格式的电影</B>那就需要它。播放老的以MP41或者MP42视频的ASF(尽管这些文件的音频常常是VoxWare -- 它是通过Win32 codec解码的),或者WMV7是不需要它的。</LI> + </UL> + </LI> + + <LI><B>DivX4与DivX5:</B>关于这编码格式的信息可从<A HREF="codecs.html#divx">DivX4与DivX5</A>节得到。如果你不想用它来编码, +你有可能不会想要这个解码器,因为<B>libavcodec</B>(见上面)比它快得多。<BR> + 特色: + <UL> + <LI>用<A HREF="encoding.html">MEncoder</A>进行1 pass或2 pass编码。</LI> + <LI>播放老的<B>DivX3</B>格式的电影比Win32 DLL快得多但是比<B>libavcodec</B>慢!</LI> + <LI>它封闭源码的,而且仅仅有一个x86平台的版本。</LI> + </UL> + </LI> + + <LI><B>XviD:</B>开源的Divx4Linux的编码替代品<BR> + 特色: + <UL> + <LI>用<A HREF="encoding.html">MEncoder</A>进行1 pass或2 pass编码。</LI> + <LI>这是开源的,如此不仅只有x86一种版本可用。</LI> + <LI>它的编码速度比divx4快2倍-- 在几乎相同的质量的情况下</LI> + </UL> + </LI> + + <LI><A HREF="codecs.html#xanim">XAnim codecs</A>对解码<B>3ivx</B>和Indeo 3/4/5格式,和一些旧的格式的电影效果是最好 +(全屏幕,硬件YUV缩放)。同时,他们是多平台的,因此这是在非x86平台上播放Indeo的唯一的方法(当然,除了直接使用XAnim之外:)。 +但是例如Cinepak电影<B>MPlayer</B>自己的Cinepak解码器播放才有最好的效果!</LI> + + <LI>对于<B>Ogg Vorbis</B>音频解码你需要正确地安装<CODE>libvorbis</CODE>。如果可能的话尽量使用deb/rpm包装, +或者用<A HREF="http://ogg.org/ogg/vorbis/download/vorbis_nightly_cvs.tgz">源代码</A>编译(这是Vorbis CVS的每天最新的tarball)。</LI> + + <LI><B>MPlayer</B>能使用RealPlayer 8或RealONE的库来播放包括<B>RealVideo 2.0和3.0</B>格式的视频和Sipro/Cook格式的音频的文件。 +安装方法以及关于它的更多信息参见<A HREF="formats.html#real">RealMedia文件格式</A>节!</LI> + +</UL> + +<H4>显卡</H4> + +<P>一般地显卡可分为两种。一种(较新的显卡)支持<B>硬件缩放和YUV加速</B>,另一种卡没有。</P> + +<H4>YUV显卡</H4> + +<P>他们能在他们显存可以的范围中用任何分辨率显示和缩放(zoom)图像,只有<B>很小CPU使用量</B>(缩放不会使它增加!),所以你能得到清晰快速的全屏播放。</P> + +<UL> + <LI><B>Matrox G200与G400与G450与G550卡片:</B>虽然提供了一个<A HREF="video.html#vidix">VIDIX模式的驱动</A>, +但还是推荐使用旧的mga-vid内核模块,因为它工作起来好得多。关于其安装和用法请参见<A HREF="video.html#mga_vid">mga-vid</A>部分。 +在编译<B>MPlayer</B><I>之前</I>进行这些步骤这一点很重要,否则不会编译mga-vid的支持代码。同时也请查看<A HREF="video.html#tv-out_matrox">Matrox电视输出</A>部分。 +<U><B>如果你是非Linux用户</B></U>,你的唯一的选择是Vidix驱动器: 请看<A HREF="video.html#vidix">VIDIX</A>的相关文件!</LI> + + <LI><B>3Dfx Voodoo3与Banshee卡片:</B>请参见<A HREF="video.html#tdfxfb">tdfxfb</A>部分以了解如何获得大的速度提升。 +在编译<B>MPlayer</B><B>之前</B>进行这些步骤这一点很重要,否则不会编译3Dfx的支持代码。也请参考<A HREF="video.html#tv-out_voodoo">3dfx电视输出</A>部分。 +如果你使用X,至少使用4.2.0版本,因为4.1.0和更早释放的版本的3dfx Xv驱动是坏的!</LI> + + <LI><B>ATI卡片:</B>下列的显卡提供了<A HREF="video.html#vidix">VIDIX驱动</A>:<B>Radeon</B>,<B>Rage128</B>, +<B>Mach64</B>(Rage XL/Mobility,Xpert98)。也请参考电视输出文档中的<A HREF="video.html#tv-out_ati">ATI电视输出</A>部分, +看看Linux与MPlayer是否支持你的显卡的电视输出。</LI> + + <LI><B>S3卡片:</B>Savage和Virge/DX芯片有硬件加速功能。尽可能使用最新的XFree86版本,老的的驱动很buggy。 +Savage的芯片的YV12显示有问题,具体细节请看<A HREF="video.html#xv_s3">S3 Xv</A>部分。更老的,Trio显卡没有,或只有很慢的硬件加速功能。</LI> + + <LI><B>nVidia卡片:</B>对视频播放来说是十分糟糕的选择(nVidia<A HREF="users_against_developers.html#nvidia">不这么认为</A>!)。 +nVidia的显卡使用十分低廉和质量低劣的芯片。此外,<B>XFree86自带的nVidia驱动器对所有nVidia显卡都不支持硬件YUV加速!</B> +你将不得不从nVidia.com下载nVidia的封闭源码的驱动。细节参见<A HREF="video.html#xv_nvidia">nVidia Xv驱动器</A>部分。</LI> + +<LI><B>3DLabs GLINT R3和Permedia3</B>:提供VIDIX驱动(pm3-vid)。细节参见<A HREF="video.html#vidix">VIDIX</A>部分。</LI> + +<LI><B>其它卡片:</B>不是上述的任何一个? + <UL> + <LI>试试XFree86的驱动(和你的显卡)是否支持硬件加速。细节参见<A HREF="video.html#xv">Xv</A>部分。</LI> + <LI>如果不是,那么你的操作系统不支持你显卡的视频特性:(,<BR> +如果它在Windows下能够使用硬件缩放,那并不不意味着在Linux或者其它OS下做同样的事情,它依赖于驱动! +大多数制造厂不做Linux驱动也不公布芯片标准 -- 所以,使用他们的显卡你很不走运。看‘非YUV显卡’: + </LI> + </UL> +</LI> + +</UL> + +<H4>非YUV卡片</H4> + +<P>播放Fullscreen能被任一个可以使用<B>软件缩放</B>(使用<CODE>-zoom</CODE>或者<CODE>-vop scale</CODE>参数,但是我先警告你: +这会非常非常慢!),或者切换成较小的的分辨率,例如352x288。如果你没有YUV加速,我们推荐使用后一种方法。在<B>MPlayer</B>中, +这种方法通过<CODE>-vm</CODE>参数打开,它能用于下列驱动:</P> + +<UL> + <LI><B>使用</B>XFree86:细节参见<A HREF="video.html#x11"">X11驱动</A>和<A HREF="video.html#dga">DGA驱动</A>部分。推荐使用DGA! +也可以尝试通过SDL使用DGA,有时这种办法更好。</LI> + <LI><B>不使用</B>XFree86:按下列顺序尝试驱动模式:<A HREF="video.html#vesa">vesa</A>,<A HREF="video.html#fbdev">fbdev</A>, +<A HREF="video.html#svgalib">svgalib</A>,<A HREF="video.html#aalib">aalib</A>。</LI> +</UL> + +<H4>某些显卡:</H4> + +<UL> + <LI><B>Cirrus Logic显卡</B>: + <UL> + <LI>GD 7548: 板载显卡并用Compaq Armada 41xx系列的笔记本测试。 + <UL> + <LI>XFree86 3:能使用8/16bpp模式。然而,这个驱动在800x600@16bpp下狂慢而且buggy<B>推荐: 640x480@16bpp</B></LI> + <LI>XFree86 4: 如果不仅用加速Xserver会在启动后不久失去响应,但这样之后就比XFree86 3慢了。没有XVideo</LI> + <LI>FBdev: 这个显卡只兼容VBE 1.2,所以VESA帧缓冲用不了,当尝试用UniVBE来绕过时, 帧缓冲显示的全是碎片根本用不了。</LI> + <LI>VESA: 这个显卡只兼容VBE 1.2,所以VESA输出用不了。无法用UniVBE绕过</LI> + <LI>SVGAlib: 检测成更老的Cirrus芯片. 用<CODE>-bpp 8</CODE>可以使用但很慢</LI> + </UL> + </LI> + </UL> + </LI> +</UL> + +<H4>声卡</H4> + +<UL> + <LI><B>Soundblaster Live!:</B>通过这种声卡你能使用4或者6(<B>5.1</B>)声道AC3解码而不只是2声道。请看<A HREF="codecs.html#software_ac3"> +软件AC3解码</A>一节。对于硬件AC3中转你必须使用ALSA 0.9的oss仿真!</LI> + + <LI><B>C-Media的SP/DIF输出:这些声卡可以使用</B>硬件AC3中转,参见<A HREF="codecs.html#hardware_ac3">硬件AC3解码</A>一节。</LI> + + <LI><B>其它声卡</B>的特性<B>MPlayer</B>是不支持的。 + <U>强烈建议阅读<A HREF="sound.html">声卡</A>部分!</U> +</UL> + +<H4>特性</H4> + +<UL> + <LI>考虑一下你是否需要GUI。如果需要,在进行编译之前,请看<A HREF="#gui">GUI</A>部分。</LI> + + <LI>如果你想要安装<B>MEncoder</B>(我们的强大的全功能编码器),请看<A HREF="encoding.html">MEncoder</A>一节。</LI> + + + <LI>如果你有一张V4L兼容的<B>电视选台器</B>卡,而希望用<B>MPlayer</B>观看/截取并且录制电影,请看<A HREF="#tv">电视输入</A>一节。</LI> +</UL> + +<P>接着编译<B>MPlayer</B>:</P> + +<PRE> + ./configure + make + make install +</PRE> + +<P>到此为止,<B>MPlayer</B>就可以使用了。<CODE>$PREFIX/share/mplayer</CODE>目录下包含了<CODE>codecs.conf</CODE>文件, +程序通过它来了解所拥有的codecs和他们的能解的码。该文件应该与主程序一起更新!<BR> +检查在你的home目录(~/.mplayer/codecs.conf)中是否有旧的MPlayer版本留下的codecs.conf,如果有就删掉它!</P> + +<P><B>Debian的用户</B>能自己制作.deb安装包,这十分简单。直接在<B>MPlayer</B>的根目录执行<CODE>fakeroot debian/rules binary</CODE>。 +详尽的步骤请看<A HREF="documentation.html#debian">这里</A>。</P> + +<P><CODE>./configure</CODE><B>的输出请务必一定阅读</B>,还有<CODE>configure.log</CODE>文件,其中的信息会告诉你将什么将被编译,什么不编译。 +你也可能需要查看<CODE>config.h</CODE>和<CODE>config.mak</CODE>文件。<BR> +如果你已经安装一些库文件,却没有被<CODE>./configure</CODE>发现,那么检查你是否也安装了正确的头文件(通常在-dev包中)以及他们的版本符合要求。 +<CODE>configure.log </CODE>通常会告诉你缺了什么。</P> + +<P>尽管并非必需,你确实应该安装字体以使用OSD和字幕功能。下载<CODE>mp-arial-iso-8859-*.zip</CODE>和/或者可选(如果存在的话)的其他语言的更新。 +阅读<A HREF="#subtitles_osd">字幕和OSD</A>一节来了解其细节。</P> + +<PRE> + mkdir ~/.mplayer/font + cd ~/.mplayer/font + unzip mp-arial-iso-8859-1.zip + ln -s ~/.mplayer/font/arial-24 font +</PRE> + +<H2><A NAME="gui">1.3 GUI有吗?</A></H2> + +<P>GUI需要GTK(它不是GTK写成的,但是面板是的)。skin被保存为PNG格式,因此你需要安装gtk,libpng(和他们的devel包)。 +你必须在运行<CODE>./configure</CODE>时使用<CODE>--enable-gui</CODE>来编译它的代码。然后,你可以用下列方法之一打开GUI方式</P> +<UL> + <LI>使用<CODE>-gui</CODE>选项</LI> + <LI>在你的config文件中添加<CODE>gui=yes</CODE></LI> + <LI><CODE>ln -s $PREFIX/bin/mplayer $PREFIX/bin/gmplayer</CODE>,然后运行<CODE>gmplayer</CODE>。 +</UL> + +<P>由于技术原因,目前你不能在命令行下使用<CODE>-gui</CODE>选项。</P> + +<BLOCKQUOTE> + <B>提示</B><Br> + 使用鼠标的中间键(2键鼠标则同时按下左右两键),会弹出一个有DVD播放选项的GTK菜单! +</BLOCKQUOTE> + +<P>因为<B>MPlayer</B>不自带skin,所以如果你想要使用GUI,你必须自己下载他们。参见<A HREF="http://www.mplayerhq.hu/homepage/dload.html">下载页</A>。 +他们应该被解压到系统通用的目录(<CODE>$PREFIX/share/mplayer/Skin</CODE>),或者解压到<CODE>$HOME/.mplayer/Skin</CODE>。 +<B>MPlayer</B>在默认情况下会在这些的目录里寻找一个叫<I>default</I>的目录, +但是你能使用<CODE>-skin newskin</CODE>选项或在config文件中添加<CODE>skin=newskin</CODE>来强制使用<CODE>*/Skin/newskin</CODE>下的skin。</P> + +<H2><A NAME="subtitles_osd">1.4 字幕和OSD</A></H2> + +<P> + <B>MPlayer</B>能在播放电影的同时显示字幕。目前支持下列格式:</P> +<UL> + <LI>VobSub</LI> + <LI>Microdvd</LI> + <LI>SubRip</LI> + <LI>SubViewer</LI> + <LI>Sami</LI> + <LI>VPlayer</LI> + <LI>RT</LI> + <LI>SSA</LI> + <LI>MPsub</LI> + <LI>AQTitle</LI> +</UL> + +使用不同格式的命令行选项稍有不同: + +<H4>VobSub字幕</H4> +<P>VobSub字幕包括一个大的(几兆).sub文件,和可选的.idx和/或者.ifo文件。<BR> +用法: 如果你有类似<CODE>sample.sub</CODE>,<CODE>sample.ifo</CODE>,<CODE>sample.idx</CODE>之类的文件 + -- 你必需使用<CODE>-vobsub sample -vobsubid <id></CODE>的参数(当然必要时加上路径)。 + <CODE>-vobsubid </CODE>选择类似于播放DVD时的<CODE>-sid</CODE>,用它你可以选择不同的字幕轨道(语言)。</P> + +<H4>其它字幕</H4> +<P>其它格式由一个单一的包含时间,位置和正文信息的文本文件组成。<BR> +用法: 如果你有类似<CODE>sample.txt</CODE>之类的文件,你必须使用<CODE>-sub sample.txt</CODE> +(当然必要时加上路径)。</P> + +<H4>调整字幕的时间和位置</H4> + +<DL> + <DT><CODE>-subdelay<sec></CODE></DT> + <DD>延迟字幕< sec >秒。可以是负数。</DD> + + <DT><CODE>-subfps<rate></CODE></DT> + <DD>规定字幕文件按每秒多少帧速度显示(浮点数)</DD> + + <DT><CODE>-subpos<0-100></CODE></DT> + <DD>规定字幕显示的位置。</DD> +</DL> + +<P>如果你使用MicroDVD字幕文件时遇到电影和字幕之间的延迟不断增加的问题,很有可能你的电影文件和字幕文件的帧速度不同。<BR> +请注意,MicroDVD字幕格式用绝对帧数来计时,因此<CODE>-subfps</CODE>选项不能用于这种格式。因为<B>MPlayer</B>没法猜测 +字幕文件的帧速度,你必须手工修改它。在MPlayer的FTP站点的<CODE>contrib</CODE>目录中有一个小的perl脚本可以替你做这种转化。</P> + +<P>关于DVD字幕,请看<A HREF="cd-dvd.html#dvd">DVD</A>一节。</P> + +<H3><A NAME="mpsub">1.4.1 MPlayer自己的字幕格式(MPsub)</A></H3> + +<P><B>MPlayer</B>引入一种称为<B>MPsub</B>的新的字幕格式。它是我(Gabucino)设计。基本上,其主要的特性是基于<I>动态</I>时间 +(虽然它有基于帧的模式)。例如(引自<A HREF="http://www.mplayerhq.hu/DOCS/tech/mpsub.sub">DOCS/tech/mpsub.sub</A>):</P> + +<P><CODE><I># first number : wait this much after previous subtitle disappeared<BR> + # second number : display the current subtitle for this many seconds<BR> + <BR> + 15 3<BR> + A long long, time ago...<BR> + <BR> + 0 3<BR> + in a galaxy far away...<BR> + <BR> + 0 3<BR> + Naboo was under an attack.<BR> + </I></CODE></P> + +<P>因此如你所见,主要的目标是<B>使字幕的编辑/计时/合并/分割变得容易</B>。同时,如果你 -- 比方说 -- 有一个SSA字幕但是它 +与你的电影却有严重的时间/延迟问题,你只要简单运行<CODE>mplayer dummy.avi -sub source.ssa -dumpmpsub</CODE>。 +在当前目录中将生成一个<CODE>dump.mpsub</CODE>文件,它包含源字幕的正文,但是使用<B>MPsub</B>格式。 +然后,你就能字幕中自由地添加或减去任意秒。</P> + +<P>字幕的显示使用一种称为<B>'OSD', On Screen Display</B>的技术。OSD被用来显示当前的时间,音量条,进度条等等。</P> + +<H3><A NAME="install_osd">1.4.2 安装OSD和字幕</A></H3> + +<P>你需要一个<B>MPlayer</B>字体包来使用OSD和字幕功能。有许多方法获得它:</P> + +<UL> + + <LI>从<B>MPlayer</B>站点下载准备好的字体包。 +注:当前可用的字体限仅限于iso 8859-1/2的支持,但在FTP占的contrib/font部分有其它一些(包括朝鲜语,俄语,8859-8等等)用户制作的字体。 + +字体应该有正确的font.desc文件用来unicode格式的字符位置映射到字幕文件实际使用的内码页。另一种解决方法是把字幕用utf8格式编码 +然后使用-utf8选项或者将字幕文件命名为<video_name>.utf放在与视频文件相同的目录中。将不同的内码转换到utf8编码可以通过使用 +konwert(Debian)或者iconv(Red Hat)程序完成。<BR> +一些URL: + <UL> + <LI><A HREF="ftp://ftp.mplayerhq.hu/MPlayer/releases/">ftp://ftp.mplayerhq.hu/MPlayer/releases/</A> -- ISO字体</LI> + <LI><A HREF="ftp://ftp.mplayerhq.hu/MPlayer/contrib/fonts/">ftp://ftp.mplayerhq.hu/MPlayer/contrib/fonts/</A> -- 用户制作的各种各样的字体</LI> + <LI><A HREF="http://realtime.ssu.ac.kr/~lethean/mplayer">http://realtime.ssu.ac.kr/~lethean/mplayer</A> -- 朝鲜字体与RAW的插件</LI> + </UL> + </LI> + + <LI>使用TOOLS/subfont-c下的字体制作工具,它是一个能将TTF/Type1等字体转换到mplayer字体pkg的一个完整的工具。 +(详细情况请看TOOLS/subfont-c/README)</LI> + + <LI>使用TOOLS/subfont-GIMP下的GIMP字体生成插件(注:你同时也必须有HSI RAW插件,见下面的URL)</LI> +</UL> + +<P>下载字体之后,把你下载的文件UNZIP到<CODE>~/.mplayer</CODE>或者<CODE>$PREFIX/share/mplayer</CODE>。 +然后将其中之一改名或者符合链接为<CODE>font</CODE>(例如:<CODE>ln -s ~/.mplayer/arial-24 ~/.mplayer/font</CODE>)。 +你现在应该在电影的左上角看见一个计时器(用"o"键可以关上它)。</P> + +<P>OSD有3种状态:(用'o'键切换)</P> +<UL> + <LI>计时器+音量条+进度条+字幕(默认)</LI> + <LI>音量条+进度条+字幕</LI> + <LI>只有字幕</LI> +</UL> + +<P>你能通过在config文件中设置变量<CODE>osdlevel=</CODE>来改变默认行为。</P> + + +<H2><A NAME="rtc">1.5 RTC</A></H2> + +在<B>MPlayer</B>中有三种计时方法。 +<UL> + <LI><B>使用老方法</B>,你不必做任何事情。它使用<CODE>usleep()</CODE>调节A/V同步,达到+/-10ms的准确性。 + 虽然有时同步应该调整的更好。</LI> + <LI><B>新的定时器</B>代码使用PC的RTC(实时钟)完成这个任务,因为它有精确到1ms的计时器。当可用时它将自动起动, +但要求root权限,或<I>setuid root</I>的<B>MPlayer</B>或者一个适当配置的内核。 + <BR> + 如果你使用2.4.19pre8或者其后的内核你能通过<CODE>/proc</CODE>文件系统为普通用户调整最大RTC频率。使用下列命令来允许普通用户使用RTC: + <P> + <CODE>echo 1024 > /proc/sys/dev/rtc/max-user-freq</CODE> + </P> + 如果你没有这么新的内核,你也可以修改<CODE>drivers/char/rtc.c</CODE>中的一行并且重新编译你的内核。找到下面这一段 + <PRE> + * We don't really want Joe User enabling more + * than 64Hz of interrupts on a multi-user machine. + */ + if ((rtc_freq > 64) && (!capable(CAP_SYS_RESOURCE))) + </PRE> + 把64改成1024。当然你应该确实明白你做了什么。 + <BR> + 你能在状态栏上看到新的计时器的效果。 + <BR> + 一些使用speedstep功能CPU的笔记本的BIOS的电源管理不能很好的与RTC协同工作。音频和视频可能会不同步。在给你的笔记本加电之前将外部电源接上似乎会有帮助。 +你总能用<CODE>-nortc</CODE>选项关闭RTC支持。一些硬件连接器(在ALi1541主板上使用非DMA的DVD光驱上可以证明)RTC定时器的使用会造成跳跃的playback。 +在这些情况下,推荐使用下列的方法。</LI> + <LI><B>第三个定时器代码</B>可以用<CODE>-softsleep</CODE>选项打开。它有RTC的效果,但是它不使用RTC。另一方面,它要使用更多的CPU。</LI> + </UL> +</LI> +</UL> + +注意:<B>永远不要将setuid root的MPlayer安装在多用户系统上!</B>这显然会让任何人得到root权限。 + + +<H1><A NAME="features">2. 特性</A></H1> + + +<H2><A NAME="formats">2.1</A> <A HREF="formats.html">支持格式</A></H2> + + +<H2><A NAME="codecs">2.2</A> <A HREF="codecs.html">支持的codecs</A></H2> + + +<H2><A NAME="output">2.3</A > <A HREF="video.html">视频</A>与<A HREF="sound.html">音频</A>输出模式</H2> + + +<H2><A NAME="encoding">2.4</A> <A HREF="encoding.html">MEncoder -- 全功能编码器</A></H2> + + +<H2><A NAME="tv"><B>2.5 电视输入</B></A></H2> + + +<P>这段将要如何能够<B>使用V4L兼容的电视选台器观看与截取</B>。</P> + +<P><B>这些代码目前没有继续开发!不要指望它不经过修改或实验就能正常工作!</B></P> + + +<H3><A NAME="tv_compilation">2.5.1 编译</A></H3> + +<OL> + <LI>首先,你必须重新编译。<CODE>./configure</CODE>将自动检测v4l的内核头文件和<CODE>/dev/video*</CODE> + 输入的存在。如果他们存在,电视支持将被编译(查看<CODE>./configure</CODE>的输出)。</LI> + <LI>用另一个Linux中的电视软件确保你的调音器工作,例如xawtv。</LI> +</OL> + +<BLOCKQUOTE> + <B>提示</B><BR> + 颜色是混乱的吗?那么,你的选台器不能在YV12颜色格式中显示。尝试一下I420(<CODE>-vc rawi420</CODE>)或者YUY2, +UYVY,RGB32 (<CODE>-vo sdl</CODE>)颜色格式。你可以用<CODE>outfmt=YV12</CODE>选项来指定它,参见下面。</P> +</BLOCKQUOTE> + + +<H3><A NAME="tv_options">2.5.2 可用的选项</A></H3> + +<DL> + <DT><CODE>on</CODE></DT> + <DD>使用电视输入。</DD> + + <DT><CODE>noaudio</CODE></DT> + <DD>没有声音,谢谢。</DD> + + <DT><CODE>driver</CODE></DT> + <DD><B>dummy</B> -- 空电视输入:)仅仅用于测试,产生伪输入。<BR> + <B>v4l</B> -- 用标准的V4L接口(缺省为<CODE>/dev/video0</CODE>)捕捉图象。</DD> + + <DT><CODE>device</CODE></DT> + <DD>指定缺省的<CODE>/dev/video0</CODE>之外的设备。</DD> + + <DT><CODE>input</CODE></DT> + <DD>指定电视选台器输入中你希望截取的输入(比如<B>电视</B>,<B>s-video</B>,<B>composite</B>,...)<BR> + 在初始化时会显示可用的选项。</DD> + + <DT><CODE>freq</CODE></DT> + <DD>把选台器设置到指定的频率(例如<B>511.250</B>)。</DD> + + <DT><CODE>outfmt</CODE></DT> + <DD>规定选台器把图象传送到我们时应该使用的输出格式(<B>rgb32</B>,<B>rgb24</B>,<B>yv12</B>,<B>uyvy</B>, +<B>i420</B>(对于i420你必须使用<CODE>-vc rawi420</CODE>参数,否则会有fourcc冲突))。</DD> + + <DT><CODE>width</CODE></DT> + <DD>输出窗口的宽度,以象素为单位</DD> + + <DT><CODE>height</CODE></DT> + <DD>输出窗口的高度,以象素为单位的</DD> + + <DT><CODE>norm</CODE></DT> + <DD>可用选项:PAL,SECAM,NTSC</DD> + + <DT><CODE>channel</CODE></DT> + <DD>把选台器设置到指定的频道。</DD> + + <DT><CODE>chanlist</CODE></DT> + <DD>可用选项:<CODE>us-bcast, us-cable, europe-west, europe-east, 等等</CODE></DD> +</DL> + +<H3><A NAME="tv_keyboard">2.5.3 键盘控制</A></H3> + +<TABLE BORDER=0> + <TR><TD> </TD><TD>h/k</TD><TD> </TD><TD>选择前一个/下一个频道</TD></TR> + <TR><TD></TD><TD>n</TD><TD></TD><TD>切换制式</TD></TR> + <TR><TD></TD><TD>b</TD><TD></TD><TD>切换chanlist</TD></TR> +</TABLE> + +<H3><A NAME="tv_examples"><B>2.5.4 例子</B></A></H3> + +<P>伪输出,到AAlib:)<BR> + <CODE> mplayer -tv on:driver=dummy:width=640:height=480 -vo aa</CODE><BR> + <BR> + 从标准的V4L输入<BR> + <CODE> mplayer -tv on:driver=v4l:width=640:height=480:outfmt=i420 -vc rawi420 -vo xv</CODE><BR></P> + +<P><B>注:</B><BR> + 如果你的电视卡有一个有外部音频设备而只出现黑屏,但xawtv或类似的东西对输入的信号却工作正常,那么试试<CODE>-noaudio</CODE>选项。对于上述的例子命令是:<BR> + +<P><B><A NAME="usage">3. 用法</A></B></P> + +<P><B><A NAME="command_line">3.1 命令行</A></B></P> + +<P><B>MPlayer</B>使用一个复杂playtree格式。它包括写在最前面作为全局设置的选项(例如<CODE>mplayer -vfm 5</CODE>),和写在文件名之后, +仅仅作用于给定的文件名或URL或whatever的选项(例如<CODE>mplayer -vfm 5 movie1.avi movie2.avi -vfm 4</CODE>)。<BR> +你能使用{和}给文件名与URL分组。它对-loop选项很有用:<CODE>mplayer { 1.avi -loop 2 2.avi } -loop 3</CODE>命令将按以下顺序播放文件: +1 1 2 1 1 2 1 1 2<BR> +</P> + +<TABLE BORDER=0> +<TR><TD> </TD><TD>单一文件</TD><TD> </TD><TD><CODE>mplayer [options] [path/]filename</CODE></TD></TR> + <TR><TD></TD><TD>多个文件</TD><TD></TD><TD><CODE>mplayer [default options] [path/]filename1 [options for filename1] filename2 [options for filename2] ...</CODE></TD></TR> + <TR><TD></TD><TD>VCD</TD><TD></TD><TD><CODE>mplayer [options] -vcd trackno [-cdrom-device /dev/cdrom]</CODE></TD></TR> + <TR><TD></TD><TD>DVD</TD><TD></TD><TD><CODE>mplayer [options] -dvd titleno [-dvd-device /dev/dvd]</CODE></TD></TR> + <TR><TD></TD><TD>网址</TD><TD></TD><TD><CODE>mplayer [options] http://site.com/file.asf (也可以使用playlist)</CODE></TD></TR> +</TABLE> + +<P> + 最新版本的MPlayer也可以象Xine一样接受URL风格的VCD和DVD轨道,就做: <CODE>mplayer dvd://1</CODE>或者<CODE>mplayer vcd://1</CODE></P> + +<PRE> + 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 +</PRE> + +<H2><A NAME="control">3.2 控制</A></H2> + +<P><B>MPlayer</B>有一个完全可配置的,命令驱动的控制层使你可以键盘,鼠标,游戏杆或遥控器(使用LIRC)控制<B>MPlayer</B>。</P> + +<H3><A NAME="default_controls">3.2.1 默认控制方法</A></H3> + +<H4>从终端的键盘控制</H4> + +<TABLE BORDER=0> + <TR><TD> </TD><TD><- or -></TD><TD> </TD><TD>快进/后退10秒</TD></TR> + <TR><TD></TD><TD>up or down</TD><TD></TD><TD>快进/后退1分钟</TD></TR> + <TR><TD></TD><TD>pgup/pgdown</TD><TD></TD><TD>快进/后退10分钟</TD></TR> + <TR><TD></TD><TD>< or ></TD><TD></TD><TD>在播放列表中选下一个/上一个</TD></TR> + <TR><TD></TD><TD>p or SPACE</TD><TD></TD><TD>暂停(按任意键)</TD></TR> + <TR><TD></TD><TD>q or ESC</TD><TD></TD><TD>停止播放并退出</TD></TR> + <TR><TD></TD><TD>+ or -</TD><TD></TD><TD>调整音频延迟+/-0.1秒</TD></TR> + <TR><TD></TD><TD>/ or *</TD><TD></TD><TD>减少/增加音量</TD></TR> + <TR><TD></TD><TD>f</TD><TD></TD><TD>切换全屏</TD></TR> + <TR><TD></TD><TD>o</TD><TD></TD><TD>切换OSD: none/seek/seek+timer</TD></TR> + <TR><TD></TD><TD>z or x</TD><TD></TD><TD>调整字幕延迟+/-0.1秒</TD></TR> + <TR><TD></TD><TD>r or t</TD><TD></TD><TD>调整字幕位置</TD></TR> + <TR><TD></TD><TD>HOME or END</TD><TD></TD><TD>选择上一级列表中的下一个/上一个playtree命令</TD></TR> + <TR><TD></TD><TD>INSERT or DELETE</TD><TD></TD><TD>下一个/上一个替代source(只用于asx播放列表)</TD></TR> + <TR><TD COLSPAN=4><P><I>(下列的控制键只有当使用<CODE>-vo xv</CODE>时是有效的)</I></P></TD></TR> + <TR><TD></TD><TD>1 or 2</TD><TD></TD><TD>调整对比</TD></TR> + <TR><TD></TD><TD>3 or 4</TD><TD></TD><TD>调整亮度</TD></TR> + <TR><TD></TD><TD>5 or 6</TD><TD></TD><TD>调整hue</TD></TR> + <TR><TD></TD><TD>7 or 8</TD><TD></TD><TD>调整饱和</TD></TR> +</TABLE> + +<H4>GUI键盘控制</H4> + +<TABLE BORDER=0> + <TR><TD> </TD><TD>, and .</TD><TD> </TD><TD>上一个/下一个文件</TD></TR> + <TR><TD></TD><TD>gray - or +</TD><TD></TD><TD>减少/增加音量</TD></TR> + <TR><TD></TD><TD>enter</TD><TD></TD><TD>开始播放</TD></TR> + <TR><TD></TD><TD>space</TD><TD></TD><TD>暂停</TD></TR> + <TR><TD></TD><TD>s</TD><TD></TD><TD>停止</TD></TR> + <TR><TD></TD><TD>a</TD><TD></TD><TD>about</TD></TR> + <TR><TD></TD><TD>l</TD><TD></TD><TD>打开文件</TD></TR> + <TR><TD></TD><TD>b</TD><TD></TD><TD>skin browser</TD></TR> + <TR><TD></TD><TD>e</TD><TD></TD><TD>equalizer对话框</TD></TR> + <TR><TD></TD><TD>p</TD><TD></TD><TD>playlist对话框</TD></TR> + <TR><TD></TD><TD>f</TD><TD></TD><TD>切换全屏</TD></TR> + <TR><TD></TD><TD>m</TD><TD></TD><TD>切换静音</TD> +</TABLE> + +<H4>TV输入的键盘控制</H4> + +<TABLE BORDER=0> + <TR><TD> </TD><TD>h or l</TD><TD> </TD><TD>选择上一个/下一个频道</TD></TR> + <TR><TD></TD><TD>n</TD><TD></TD><TD>切换制式</TD></TR> + <TR><TD></TD><TD>b</TD><TD></TD><TD>切换频道列表</TD></TR> +</TABLE> + +<H3><A NAME="controls_configuration">3.2.2 配置控制方法</A></H3> + +<P><B>MPlayer</B>允许你使用一个简单的config文件把任何键或按钮绑定为任何一个<B>MPlayer</B>控制命令。 +句法是键名后加命令。缺省config文件是<CODE>$HOME/.mplayer/input.conf</CODE>但是<CODE>-input</CODE> conf +选项可以重新指定(相对路径是相对于<CODE>$HOME/.mplayer</CODE>的)。 + +<P>例子:</P> + +<PRE> +## +## 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 +</PRE> + +<H4><A NAME="key_names">3.2.2.1 键名</A></H4> + +<P>运行<CODE>mplayer -input keylist</CODE>你将得到一个完整的列表</P> + +<H4>键盘:</H4> + +<UL> + <LI>Any printable character</LI> + <LI>SPACE</LI> + <LI>ENTER</LI> + <LI>TAB</LI> + <LI>CTRL</LI> + <LI>BS</LI> + <LI>DEL</LI> + <LI>INS</LI> + <LI>HOME</LI> + <LI>END</LI> + <LI>PGUP</LI> + <LI>PGDWN</LI> + <LI>ESC</LI> + <LI>RIGHT</LI> + <LI>LEFT</LI> + <LI>UP</LI> + <LI>DOWN</LI> +</UL> + +<H4>鼠标(只在X下支持):</H4> + +<UL> + <LI>MOUSE_BTN0 (左键)</LI> + <LI>MOUSE_BTN1 (右键)</LI> + <LI>MOUSE_BTN2 (中键)</LI> + <LI>MOUSE_BTN3 (滚轮)</LI> + <LI>MOUSE_BTN4 (滚轮)</LI> + <LI>...</LI> + <LI>MOUSE_BTN9</LI> +</UL> + +<H4>游戏杆(编译时必须打开对游戏杆的支持)</H4> + +<UL> + <LI>JOY_RIGHT or JOY_AXIS0_PLUS</LI> + <LI>JOY_LEFT or JOY_AXIS0_MINUS</LI> + <LI>JOY_UP or JOY_AXIS1_MINUS</LI> + <LI>JOY_DOWN or JOY_AXIS1_PLUS</LI> + <LI>JOY_AXIS2_PLUS</LI> + <LI>JOY_AXIS2_MINUS</LI> + <LI>....</LI> + <LI>JOY_AXIS9_PLUS</LI> + <LI>JOY_AXIS9_MINUS</LI> +</UL> + + +<H4><A NAME="commands">3.2.2.2 控制命令</A></H4> + +<P>通过运行"mplayer -input cmdlist"你可以得到一个完整的已知命令的列表</P> +<UL> + <LI><B>seek</B> (int) val [(int) type=0] + <P>搜索电影中的某处<BR> + Type 0 是以+/-val秒搜索。<BR> + Type 1 是以电影的val%搜索</P></LI> + <LI><B>audio_delay</B> (float) val + <P>音频延迟val秒</P></LI> + <LI><B>quit</B> + <P>退出<B>MPlayer</B></P></LI> + <LI><B>pause</B> + <P>暂停/继续playback</P></LI> + <LI><B>grap_frames</B> + <P>有人知道?</P></LI> + <LI><B>pt_step</B> (int) val [(int) force=0] + <P>选择playtree中的下一个/上一个输入。Val的符号决定方向.<BR> + 如果在要求的方向上没有其他可用entry,除非force非0,否则不会做任何动作。</P></LI> + <LI><B>pt_up_step</B> (int) val [(int) force=0] + <P>类似pt_step但它跳转到上一级列表的下一个/上一个。用来跳出playtree的内部循环。</P></LI> + <LI><B>alt_src_step</B> (int) val + <P>当一种以上的source可用时选择下一个/上一个(只有asx播放列表支持).</P></LI> + <LI><B>sub_delay</B> (float) val [(int) abs=0] + <P>字幕延迟+/-val秒或当abs非0时跳到val秒。</P></LI> + <LI><B>osd</B> [(int) level=-1] + <P>切换osd模式或当level>0时把它设为level。</P></LI> + <LI><B>volume</B> (int) dir + <P>增加/减少音量</P></LI> + <LI><B>contrast</B> (int) val [(int) abs=0]</LI> + <LI><B>brightness</B> (int) val [(int) abs=0]</LI> + <LI><B>hue</B> (int) val [(int) abs=0]</LI> + <LI><B>saturation</B> (int) val [(int) abs=0] + <P>设置/调整视频参数。Val范围从-100到100。</P></LI> + <LI><B>frame_drop</B> [(int) type=-1] + <P>切换/设置frame dropping模式。</P></LI> + <LI><B>sub_pos</B> (int) val + <P>调整字幕位置。</P></LI> + <LI><B>vo_fullscreen</B> + <P>切换到全屏</P></LI> + <LI><B>tv_step_channel</B> (int) dir + <P>选择下一个/上一个tv频道。</P></LI> + <LI><B>tv_step_norm</B> + <P>切换TV制式。</P></LI> + <LI><B>tv_step_chanlist</B> + <P>切换频道列表。</P></LI> + <LI><B>gui_loadfile</B></LI> + <LI><B>gui_loadsubtitle</B></LI> + <LI><B>gui_about</B></LI> + <LI><B>gui_play</B></LI> + <LI><B>gui_stop</B></LI> + <LI><B>gui_playlist</B></LI> + <LI><B>gui_preferences</B></LI> + <LI><B>gui_skinbrowser</B> + <P>GUI的功能</P></LI> +</UL> + +<H3><A NAME="lirc">3.2.3 用LIRC控制</A></H3> + +<P>Linux红外遥控 -- 使用一个容易制作的home-brewn红外线接收器,(几乎)任意一个的遥控器然后就可以用它来控制你的Linux box了! +更多内容见<A HREF="http://www.lirc.org">www.lirc.org</A>。</P> + +<P>如果你已安装了lirc-package,configure将自动检测到它。如果一切顺利,<B>MPlayer</B>在启动时将显示 +"Setting up lirc support..."之类的信息。如果发生错误它将会显示。如果它不显示关于LIRC的任何信息则对LIRC的支持没有编译。就是这样:-)</P> + +<P><B>MPlayer</B>的程序名是 -- 嗯,让我想想看 -- 'mplayer'。你能使用任何mplayer命令甚至传递超过一种命令只要用\n分开他们。 +不要忘记当有意义的时候(搜索,音量等等),在.lircrc中开启repeat标记。这是我的.lircrc的摘录:</P> + +<PRE> +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 +</PRE> + +<P>如果你不喜欢lirc-config文件的标准位置(~/.lircrc)使用-lircconf <filename>选项指定别的文件。</P> + + +<H3><A NAME="slave">3.2.4 Slave方式</A></H3> + +<P>Slave方式把允许你为<B>MPlayer</B>建立简单的frontend。当它开启(用<CODE>-slave</CODE>选项)时<B>MPlayer</B> +将从stdin读取用new line(\n)分开的命令。</P> + + +<H3><A NAME="streaming">3.3 网络或管道的流媒体</A></H3> + +<P><B>MPlayer</B>支持通过HTTP或者MMS协议播放网络上的文件。</P> + +<P>只要直接把URL地址加到命令行中就可以进行播放。<B>MPlayer</B>也支持http_proxy环境变量, +并且在可能的情况下使用代理。也可以强行指定使用代理:</P> + +<P><CODE>mplayer http_proxy://proxy.micorsops.com:3128/http://micorsops.com:80/stream.asf</CODE></P> + +<P><B>MPlayer</B>能从stdin(不称为管道)输入。例如这样能从FTP上播放:</P> +<P><CODE> wget ftp://micorsops.com/something.avi -O - | mplayer -</CODE></P> + +<P>注:当使用网络播放功能时推荐打开cache功能:</P> + +<P><CODE> wget ftp://micorsops.com/something.avi -O - | mplayer -cache 8192 -</CODE></P> + + +<H1><A NAME="faq"></A>4. <A HREF="faq.html">FAQ部分</A></H1> + + +<H1><A NAME="cd/dvd"></A>5. <A HREF="cd-dvd.html">CD与DVD部分</A></H1> + + +<H1><A NAME="ports">6. 移植</A></H1> + + +<H2><A NAME="debian">6.1 Debian安装包的制作</A></H2> + +<P>为了制作安装包,下载cvs版本,或者.tgz和并把它解压缩,然后进入程序的目录:</P> + +<PRE> + cd main + fakeroot debian/rules binary +</PRE> + +<P>(... mplayer检测软硬件, 编译自己然后.. ) + dpkg-deb: building package 'mplayer' in '../mplayer_0.90-1_i386.deb'.</P> + +<P>现在,成为root,然后:</P> + +<PRE> + dpkg -i ../mplayer_0.90-1_i386.deb as root. +</PRE> + +<P>你将会看到下面这样的信息:</P> + +<PRE> + eyck@incubus:/src/main$ sudo dpkg -i ../mplayer_0.90-1_i386.deb + Password: + (Reading database ... 26946 files and directories currently installed.) + Preparing to replace mplayer 0.50-1 (using ../mplayer_0.90-1_i386.deb) + Unpacking replacement mplayer ... + Setting up mplayer (0.90-1) ... +</PRE> + + +<H2><A NAME="freebsd">6.2 FreeBSD </A></H2> + +<P>为编译它你需要GNU make(gmake,/usr/ports/devel/gmake),本地的BSD make不能正常工作。</P> + +<P>为了运行<B>MPlayer</B>你将需要打开"options USER_LDT"重新编译内核(除非你使用-CURRENT,这一项在其中是默认的)。 +如果你有支持SSE的CPU也用"options CPU_ENABLE_SSE"选项来使用它(需要FreeBSD-STABLE,或者使用内核补丁)。</P> + +<P>如果<B>MPlayer</B>报告"CD-ROM Device '/dev/cdrom' not found!",那么请做一个符号链接: +<CODE>ln -s /dev/(your_cdrom_device) /dev/cdrom</CODE></P> + +<P>目前对FreeBSD没有DVD支持。</P> + +<H2><A NAME="solaris">6.3 Solaris</A></H2> + +<P>MPlayer在Solaris 2.6或者更新的系统上应该能够正常运行。</P> + +<P>AVI文件的回放在Solaris x86上的效果最好,因为在x86平台上你可以选择使用win32 codecs,或者使用MMX/MMX2/3DNow等指令集 +来播放MP3/DivX/DVD或者其他什么。在Solaris SPARC上,你将发现许多AVI文件的视频和/或者音频playback无法正常播放, +因为它们的视频与音频codecs使用Win32 DLL的不可用的。然而,<B>DivX/OpenDivX</B>电影应该可以使用libavcodec播放。</P> + +<P>在<B>UltraSPARC</B>上,<B>MPlayer</B>利用他们的<B>VIS</B>扩展(相当于MMX)的优势,目前只应用于<I>libmpeg2</I>, +<I>libvo</I>以及<I>libavcodec </I>,但mp3lib没有。你能在400MHz CPU上观看VOB文件。你需要安装<A +HREF="http://www.sun.com/sparc/vis/mediaLib.html">mLib</A>。</P> + +<P>为编译它你需要GNU make(gmake,/opt/sfw/gmake),native的Solaris make不能正常工作。你用Solaris的make代替GNU make时的典型的错误信息为:</P> + +<PRE> + % /usr/ccs/bin/make + make: Fatal error in reader: Makefile, line 25: Unexpected end of line seen +</PRE> + +<P>在Solaris SPARC上,你需要GNU C/C++编译器;GNU C/C++编译器是否设置使用GNU汇编程序没有什么关系。</P> + +<P>在Solaris x86上,你需要GNU汇编程序和GNU C/C++编译器,设置使用GNU的汇编程序!在x86平台上的mplayer代码大量使用MMX,SSE和3DNOW! +指令集,使用Sun的汇编程序<CODE>/usr/ccs/bin/as</CODE>不能编译通过。</P> + +<P>configure脚本将试图查找你的"gcc"命令使用的汇编程序(如果自动检测失败,使用"--as=/whereever/you/have/installed/gnu-as" +选项告诉configure脚本你的系统的GNU的"as"在哪里)。</P> + +<P>在Solaris x86系统上使用没有GNU汇编程序的GCC时configure的出错信息为:</P> + +<PRE> + % configure + ... + Checking assembler (/usr/ccs/bin/as) ... , failed + Please upgrade(downgrade) binutils to 2.10.1... +</PRE> + +<P>(解决方法:安装并且使用配置了"--with-as=gas"的gcc)</P> + +<P>当不使用GNU as的GNU C编译程序时的典型出错信息是:</P> + +<PRE> + % 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 ... +</PRE> + +<P>关于DVD支持你必须安装打过补丁的libcss。补丁在: +<A HREF="http://www.tools.de/solaris/mplayer/">http://www.tools.de/solaris/mplayer/</A>。</P> + +<P>因为Solaris8 x86的两个bug,不能可靠地播放容量>4GB的DVD:</P> + +<UL> + <LI>The sd(7D) driver on Solaris 8 x86 driver has bug when accessing a + disk block >4GB on a device using a logical blocksize != DEV_BSIZE + (i.e. CD-ROM and DVD media). Due to a 32bit int overflow, a disk + address modulo 4GB is accessed. + (<A HREF="http://groups.yahoo.com/group/solarisonintel/message/22516">http://groups.yahoo.com/group/solarisonintel/message/22516</A>) + </LI> + <LI>The similar bug is present in the hsfs(7FS) filesystem code (aka + ISO9660), hsfs currently does not support partitions/disks >4GB, + all data is accessed modulo 4GB + (<A HREF="http://groups.yahoo.com/group/solarisonintel/message/22592">http://groups.yahoo.com/group/solarisonintel/message/22592</A>) + </LI> +</UL> + +<P>在使用UltraSPARC CPU的Solaris上,对有些耗时的操作使用CPU的VIS指令能获得额外的速度提升。 +在MPlayer中通过Sun的<A HREF="http://www.sun.com/sparc/vis/mediaLib.html">mediaLib</A>中的函数使用VIS加速功能。</P> + +<P>mediaLib的VIS加速功能用于mpeg2视频解码和视频输出驱动的颜色转换。</P> + + +<H2><A NAME="strongarm">6.4 StrongARM</A></H2> + +<P>据报告<B>MPlayer</B>可以在StrongARM上编译。使用下列命令:</P> + +<PRE> + ./configure --target=arm-linux --disable-css --with-x11libdir=/usr/arm/lib + --with-x11incdir=/usr/arm/lib --disable-gcc-checking +</PRE> + + +<H2><A NAME="sgi">6.5 Silicon Graphics / IRIX</A></H2> + +<P>据称可以工作正常。你可能必须使用<I>SGI</I>ao驱动。谁有较确切的信息?</P> + + +<H2><A NAME="qnx">6.6 QNX</A></H2> + +<P>能工作。你需要下载SDL for QNX并安装它。然后使用<CODE>-vo sdl:photon</CODE>和<CODE>-ao sdl:nto</CODE> +选项运行<B>MPlayer</B>,速度应该很快。</P> + +<P><CODE>-vo x11</CODE>输出将比Linux更加缓慢,因为QNX只有一个十分缓慢的的X<I>仿真</I>。使用SDL。</P> + + +<H2><A NAME="openbsd">6.7 OpenBSD</A></H2> + +<P>为编译它你需要GNU make(gmake,/usr/port/devel/gmake),native的BSD make不能正常工作,还要一个最近的binutils(包括objcopy)。</P> + +<P>因为gas的版本不同(relocation vs mmx)的限制,你需要分两步编译: 首先确保non-native的汇编程序当前在PATH中并运行<CODE>gmake -k</CODE>, +然后在确保使用native版本情况下运行<CODE>gmake</CODE>。</P> + +<P>要想<B>MPlayer</B>使用Win32 DLL你要用"<CODE>option USER_LDT</CODE>"重新编译内核。</P> + +<P>如果<B>MPlayer</B>报告找不到'/dev/cdrom'或'/dev/dvd',请做一个符号链接,例如<CODE>ln -s /dev/rcd0c /dev/dvd</CODE></P> + +<P>我们中不那么hardcore的黑客可以想要使用移植版本(/usr/port/x11/mplayer)。</P> + +<H2><A NAME="cygwin"></A>6.8 Cygwin<H2> + +<P>你必须到<B>MPlayer</B>的目录下,拷贝或者symlink<CODE>etc/cygwin-inttypes.h</CODE>到<CODE>/usr/include/inttypes.h</CODE>来使 +<B>MPlayer</B>顺利编译。否则,它将报告找不到<CODE>intypes.h</CODE>。</P> + + +<H1><A NAME="mailing_lists">附录A -- 邮件列表</A></H1> + +<P>有一些关于<B>MPlayer</B>的公开的邮件列表。用户能在下列的地址完成订阅:</P> + +<UL> + <LI>MPlayer开发者列表: + <A HREF="http://mplayerhq.hu/mailman/listinfo/mplayer-dev-eng">http://mplayerhq.hu/mailman/listinfo/mplayer-dev-eng</A><BR> +<P>这个列表是关于mplayer开发的! 谈论接口与API的变化,新的库,代码优化,configure修改,另外补丁也应发送到这里。不要在这里发送bug报告, +用户问题,特性要求,吵架!这张列表应该保持低交通流量。</P></LI> + <LI>MPlayer用户列表: + <A HREF="http://mplayerhq.hu/mailman/listinfo/mplayer-users">http://mplayerhq.hu/mailman/listinfo/mplayer-users</A> + <UL> + <LI>在这里发送bug报告,(在阅读了<A HREF="#known_bugs">已知bug</A>一节和<A HREF="bugreports.html">报告bug部分</A>之后)</LI> + <LI>在这里发送特性要求(在阅读整个文件之后)</LI> + <LI>在这里发送用户问题(在阅读整个文件之后)</LI> + </UL> + </LI> + <LI>MPlayer匈牙利用户列表: + <A HREF="http://mplayerhq.hu/mailman/listinfo/mplayer-felhasznalok">http://mplayerhq.hu/mailman/listinfo/mplayer-felhasznalok</A> + <UL> + <LI>匈牙利语的列表</LI> + <LI>主题?让我们看看...迄今为止主要是吵架和RTFM问题:(</LI> + </UL> + </LI> + <LI>MPlayer & Matrox G200/G400/G450/G550用户:<BR> + <A HREF="http://mplayerhq.hu/mailman/listinfo/mplayer-matrox">http://mplayerhq.hu/mailman/listinfo/mplayer-matrox</A> + 在这里发送Matrox相关的问题 + <UL> + <LI>关于mga-vid的事情</LI> + <LI>Matrox的官方的beta版驱动(对于X 4.x.x )</LI> + <LI>还有关于matroxfb-TVout的东东。</LI> + </UL> + </LI> + <LI>MPlayer & DVB卡用户: + <A HREF="http://mplayerhq.hu/mailman/listinfo/mplayer-dvb">http://mplayerhq.hu/mailman/listinfo/mplayer-dvb</A><BR> + 与被称为DVB的硬件译码器卡有关的事情。(不是DXR3!)</P> + </LI> + <LI>MPlayer CVS-log: + <A HREF="http://mplayerhq.hu/mailman/listinfo/mplayer-cvslog">http://mplayerhq.hu/mailman/listinfo/mplayer-cvslog</A><BR> + <P>在这里只能询问CVS的变化。(如果你不理解为什么要做这样的改动或者你有更好的修正或者你注意到在已经提交的补丁中可能存在的bug或问题)确定你要找的开发者阅读这张列表!</P> + </LI> + <LI>MPlayer Cygwin-porting list: + <A HREF="http://mplayerhq.hu/mailman/listinfo/mplayer-cygwin">http://mplayerhq.hu/mailman/listinfo/mplayer-cygwin</A><BR> + 讨论MPlayer的Cygwin移植的邮件列表。 + </LI> +</UL> + +<P><B>注意:</B>在列表上的语言必须是<B>英语</B>,除非另有明确说明。请不要使用其它语言发送信息!</P> + +<P><B>注意:</B><A HREF="http://www.mplayerhq.hu/cgi-bin/htsearch">http://www.mplayerhq.hu/cgi-bin/htsearch</A>有可供检索的邮件列表文档。 + + +<H1><A NAME="bug_reports">附录B</A> -- <A HREF="bugreports.html">如何报告bug</A></H1> + +<H1><A NAME="known_bugs">附录C -- 已知bug</A></H1> + +<P>特殊的系统或CPU相关的bug或问题:</P> +<UL> + +<LI>P3上使用2.2.x内核出现SIGILL(signal 4):<BR> + 问题:2.2.x内核没有适当的(能正常工作的)SSE支持<BR> + 解决:把内核升级到2.4.x<BR> + 绕过方法:<CODE>./configure --disable-sse</CODE></LI> + +<LI>一般的SIGILL(signal 4):<BR> + 问题:你在不同的机器中编译和运行mplayer(例如在P3上编译在Celeron上跑)<BR> + 解决:在你将使用的的机器上编译MPlayer!<BR> + 绕过方法:<CODE>./configure --disable-sse</CODE>等等选项</LI> + +<LI>运行MEncoder时出现"Internal buffer inconsistency":<BR> + 问题:当用gcc 2.96或者3.x编译lame < 3.90时的已知问题。<BR> + 解决:使用lame > =3.90。<BR> + 绕过方法:以gcc 2.95.x编译lame并且卸载任何已经安装的lame包,他们可能是用gcc 2.96编译的。</LI> + +<LI>在PPC上MP2/MP3的声音混乱:<BR> + 问题:PPC平台上的已知的GCC误编译的bug,目前没有修正。<BR> + 绕过方法:使用FFmpeg的(较慢的)MP1/MP2/MP3译码器(<CODE>-ac ffmpeg</CODE>)</LI> + +<LI>当缩放+编码时,libmpeg2的sig11:<BR> + 问题: 已知的GCC 2.95.2的MMXbug,升级到2.95.3。</LI> +</UL> + +<P>各种各样A-V同步和其它音频问题:</P> + +一般的音频延迟或者急跳声音(对所有或者大部分文件存在): +<UL> + <LI>最普遍的: buggy的音频驱动! -- 试试使用不同的驱动,用-ao oss试试ALSA 0.9的OSS仿真,也试试-ao sdl,有时它有帮助。 +如果你的文件用-nosound播放正常,你就能确定这是声卡(驱动)的问题。</LI> + <LI>音频缓冲的问题(缓冲大小检测错误)<BR> + 绕过方法:mplayer -abs选项</LI> + <LI>采样率的问题-- 也许你的声卡不支持你的文件使用的采样率 -- 试试 resampling插件(- aop)</LI> + <LI>机器太慢(CPU或VGA)<BR> + 用-vo null试试看,如果它播放正常,那么你的VGA显卡/驱动太慢了<BR> + 绕过方法:买一块更快的显卡或阅读这篇文档关于如何加速的内容<BR> + 也试试-framedrop</LI> +</UL> + +特定的某一个或一些文件的音频延迟/不同步: +<UL> + <LI>损坏的文件<BR> + 绕过方法: + <UL> + <LI>-ni或-nobps选项(对于非交错的或坏的文件)<BR> + 以及/或者</LI> + <LI>-mc 0(对带有糟糕的交错的VBR音频的文件是需要的)<BR> + 以及/或者</LI> + <LI>-delay选项或者+/-键在播放时调整延迟时间</LI> + </UL> + 如果没有一个方法有效,请upload这些文件,我们将检查(和修正)。 + </LI> + <LI>你的声卡不支持48kHz playback<BR> + 绕过方法:买个更好的声卡...或者尝试减少10%的fps(对30fps的电影使用-fps 27)或者使用resampler插件</LI> + <LI>机器太慢<BR> + (如果A-V不是在0附近,状态行的最后一个数字不断增加)<BR> + 绕过方法:-framedrop</LI> +</UL> + +完全没有声音: +<UL> + <LI>你的文件使用不支持的音频codec<BR> + 绕过方法:读取文档并帮助我们添加对它的支持</LI> +</UL> + +完全没有图画(全灰/全绿窗口): +<UL> + <LI>你的文件使用不支持的视频codec<BR> + 绕过方法:读取文档并帮助我们添加对它的支持</LI> + <LI>自动选择的codec不能解码文件,试试用-vc或-vfm选项使用其他译码器</LI> + <LI>你试图用OpenDivX或XviD(-vc odivx)译码器播放DivX 3.x格式的文件 -- 安装Divx4Linux并且重新编译播放器</LI> +</UL> + +<P>视频输出问题:</P> + +<P>首先注意: -fs -vm和-zoom选项只是推荐,(目前)不是所有驱动器都支持。因此,如果它不起作用那不是bug。 +只有少数驱动支持缩放,对x11或dga不要指望这个。</P> + +<P>OSD与字幕闪烁:<BR> +-- x11驱动器: 抱歉,它现在不能被修正<BR> +-- xv驱动器: 使用-double选项</P> + +<P>使用mga_vid时的绿色图象(-vo mga/-vo xmga):<BR> +-- mga-vid没有正确检测你的显卡的显存大小,使用mga_ram_size选项重新载入</P> + + +<H1><A NAME="skin">附录D</A> - <A HREF="skin-zh.html">MPlayer skin的格式</A></H1> + + + +<H1><A NAME="flame_wars">附录E</A> - <A HREF="users_against_developers.html">开发者的痛楚</A></H1> + +</BODY> +</HTML>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/DOCS/Chinese/encoding.html Sat Oct 05 10:19:07 2002 +0000 @@ -0,0 +1,274 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<HTML> + +<HEAD> + <TITLE>编码 -- MEncoder -- Linux的电影编码器</TITLE> + <LINK REL="stylesheet" TYPE="text/css" HREF="default.css"> + <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=gb_2312-80"> +</HEAD> + +<BODY> + + +<H2><A NAME="encoding">2.4 用MEncoder编码</A></H2> + +<P><B>MEncoder</B>(<B>MPlayer</B>的电影编码器)是一个简单的电影编码器,设计用来把MPlayer可播放的电影(<B>AVI/ASF/OGG/DVD/VCD/VOB/MPG/MOV/ +VIV/FLI/RM/NUV/NET</B>)编码成其它MPlayer可播放的格式(见下面)。它能以各种各样的编码格式进行编码,像<B>DivX4</B>(1或者2 pass),libavcodec, +<B>PCM</B>/<B>MP3</B>/<B>VBR MP3</B>音频。同时也有强大的插件系统来操控视频。</P> + + +<H3><A NAME="compilation">2.4.1 编缉</A></H3> + +<UL> + <LI><B>可选</B> -- 阅读<B>MPlayer</B>的编缉指令。</LI> + <LI><B>可选(Linux仅仅)</B> -- 从<A HREF="http://avifile.sourceforge.net/download.htm">avifile.sourceforge.net</A>下载最新<B>DivX4linux</B>的库, +并且正确的安装他们。你需要他们如果你希望使用DivX4(1/2 passes)编码。</LI> + <LI><B>可选</B> -- <A HREF="codecs.html#xvid">下载并且安装<B>XViD</B></A>。不是十分有用,libavcodec的<I>mpeg4</I>编码器能以比XViD +或者DivX4/5好得多的速度和质量编码。</LI> + <LI><B>可选</B> -- 对于libavcodec支持,按<A HREF="codecs.html#libavcodec">libavcodec部分</A>的内容安装libavcodec。</LI> + <LI><B>可选</B> -- 下载并且编译<B>libmp3lame</B>(lame 3.89beta或者lame的CVS中的)。<BR> + <B>警告:不要用<U>GCC 2.96</U>编辑LAME < 3.90! 它将不能正常工作!</B><BR> + 这对于CBR/VBR MP3音频编码的是需要的。注意,单一<CODE>lame</CODE>的二进制文件是不够的。顺便说一下:你对lame使用的优化越少,质量越好。lame编译完成之后, +你能通过运行<CODE>make test</CODE>来测试质量。结果的数字应该少于<B>30</B>。如果它是<B>400</B>之类也不必惊慌,你不应该听到任何可觉察的质量降低。 +啊,如果你的编译程序连<CODE>make test</CODE>都运行不了...好吧,把那个<B>GCC 2.96</B>删掉或者把lame升级到至少<B>3.90</B>。</LI> + <LI><B>可选</B> -- <CODE>libjpeg</CODE>和<CODE>libpng</CODE>,-- 如同<A HREF="documentation.html#installation">安装</A>部分中所说的</LI> +</UL> + +<P>准备完毕。正如你可能知道的,其它编码的工具需要安装<I>avifile</I>的库。<B>MEncoder</B>根本不需要。</P> + + +<H3><A NAME="features">2.4.2 MEncoder特性</A></H3> + +<UL> + <LI>在<B>MPlayer</B>支持的广泛的文件格式和译码器中编码</LI> + <LI>编码所有ffmpeg的<A HREF="codecs.html#libavcodec">libavcodec</A>的编码格式</LI> + <LI>从<B>V4L兼容的电视选台器</B>编码视频</LI> + <LI>编码/复用有适当索引的交错的AVI文件</LI> + <LI>从外部音频流创建文件</LI> + <LI>1,2或者3 pass编码</LI> + <LI><B>VBR</B> MP3音频 -- <B>重要的注意事项:</B>VBR MP3的音频在Windows的播放器上播放的效果并不总是很好!另一方面,目前<B>MEncoder</B> +的CBR编码在Win32播放器上完全不能播放:)</LI> + <LI>PCM音频</LI> + <LI>流复制</LI> + <LI>输入A/V同步(基于PTS,用-mc 0选项禁用)</LI> + <LI>用<CODE>-ofps</CODE>选项进行FPS修正(用于把29.97fps的VOB编码成为24fps的AVI)</LI> + <LI>使用我们的十分强大的插件系统(裁减,扩展,翻转,后处理,旋转,缩放,rgb/yuv转化)</LI> + <LI>能把DVD与VOBsub<B>和</B>文本字幕编码到输出文件中</LI> + <LI>能把DVD的字幕提取为Vobsub格式</LI> +</UL> + +<H4>计划中的特性:</H4> + +<UL> + <LI>更加广泛的可用的编/解码格式/解码器(用DivX4/Indeo5/VIVO流创建VOB文件 :)</LI> + <LI>v4l的音频编码(FreeBSD已完成?)</LI> +</UL> + + +<H4><A NAME="2pass">2.4.2.1 编码2或者3-pass的DivX4</A></H4> + +<P><U><B>2-pass编码:</B></U>名称来自这种方法实际把文件编码<I>两次</I>的事实。第一次编码(又称为<I>pass</I>)创建一些临时性的几兆的文件(*.log), +先不要删除他们(你可以把AVI删了)。在第二次pass中,将使用临时文件的比特率数据创建输出文件,最后产生的文件将有好得多的图象质量。如果这是你第一次听到这个, +你应该在网上查阅一些可用的指南。</P> + +<P>这个例子演示如何把DVD编码成为2-pass DivX4 AVI。只需要两个命令:<BR> + <CODE> rm frameno.avi</CODE> -- 删掉这个文件,它可能来自以前的3-pass编码(它会干扰当前这个)<BR> + <CODE> mencoder -dvd 2 -lavcopts + -vcodec=mpeg4:more_options -o movie.avi -pass 1<BR> + mencoder -dvd 2 -lavcopts vcodec=mpeg4:more_options + -o movie.avi -pass 2</CODE></P> + +<P><U><B>3-pass编码:</B></U>这是2-pass编码的扩展,对音频的编码使用一个单独的pass。这种方法提供推荐视频比特率的估计以使之能够适合CD的容量。同时, +不同于2-pass方式,音频仅仅被编码一次。示例:</P> + +<OL> + <LI>删除冲突的临时性的文件: + <P><CODE>rm frameno.avi</CODE></P></LI> + <LI>第一次pass: + <P><CODE>mencoder <file/DVD> -ovc frameno -o frameno.avi</CODE></P> + <P>将创建一个只有音频的avi文件,<B>只</B>包含要求的音频流。不要忘记<CODE>-lameopts</CODE>,如果需要的话设置它。如果你对一部长的电影进行编码, +<B>MEncoder</B>在这个pass结束之后,将对于650Mb,700Mb,和800Mb的目标大小打印推荐的比特率值。</P></LI> + <LI>第二次pass: + <P><CODE>mencoder <file/DVD> -oac copy -pass 1 + -ovc divx4 -divx4opts br=<bitrate></CODE></P> + <P>又称为DivX4视频编码的第一次pass。可以选择指定在上一步结束时<B>MEncoder</B>打印的视频比特率。</P></LI> + <LI>第三次pass: + <P><CODE>mencoder <file/DVD> -oac copy -pass 2 + -ovc divx4 -divx4opts br=<bitrate></CODE></P> + <P>又称为DivX4视频编码的第二次pass。可以选择指定在上一步结束时<B>MEncoder</B>打印的视频比特率。在这次pass中,用<CODE>frameno.avi</CODE> +中的音频将被插入到目的文件中..这就全部搞定了!</P></LI> +</OL> + +<H4>3-pass编码的例子:</H4> + +<P><CODE> rm frameno.avi</CODE> -- 移去这个文件,它可能来自以前的3-pass编码(它会干扰当前这个)<BR> + <CODE> mencoder -dvd 2 -ovc frameno + -o frameno.avi<BR> + mencoder -dvd 2 + -lavcopts vcodec=mpeg4:more_options -oac copy -o movie.avi -pass 1<BR> + mencoder -dvd 2 + -lavcopts vcodec=mpeg4:more_options -oac copy -o movie.avi -pass 2</CODE></P> + +<P><U><B>使用内部的libavcodec控制器的2或者3-pass编码:</B></U>你可以选择使用libavcodec内部的2或者3-pass方式, +它在使用libavcodec时可能能提供比使用外部的DivX4制作的2-pass控制器更好的最终比特率的精确度。</P> + +<UL> + <LI><B>2-pass编码:</B><BR> + <CODE>rm -f lavc_stats.txt<BR> + mencoder -dvd 2 -ovc lavc -lavcopts vcodec=mpeg4:vpass=1 (audio-options) -o + movie.avi<BR> + mencoder -dvd 2 -ovc lavc -lavcopts vcodec=mpeg4:vpass=2 (audio-options) -o + movie.avi</CODE></LI> + <LI><B>3-pass编码:</B><BR> + <CODE>rm -f frameno.avi lavc_stats.txt<BR> + mencoder -dvd 2 -ovc frameno (audio-options) -o frameno.avi<BR> + mencoder -dvd 2 -ovc lavc -lavcopts vcodec=mpeg4:vpass=1 -oac copy -o + movie.avi<BR> + mencoder -dvd 2 -ovc lavc -lavcopts vcodec=mpeg4:vpass=2 -oac copy -o + movie.avi</CODE></LI> +</UL> + + +<H4><A NAME="rescaling">2.4.2.2 重新缩放电影</A></H4> + +<P>把电影图象的尺寸重新设置的需要经常出现。原因可能很多,例如减小输出文件的大小,把SVCD编码为到DivX。提取的DVD多半需要重新缩放,例如一个4:3的 +DVD应该是640x480,当你希望它合适1张CD,并且同时还有不错的质量的时候。SVCD是480x480的尺寸,而他们的头部包含播放器应该使用的长宽比(例如: +480x480 + 4:3 = 640x480)。 +然而当编码成为AVI(DivX)文件时,你必须了解AVI的头部不存储这个值。这样,唯一的解决方法是重新缩放。</P> + +<P>缩放过程由<I>'scale'</I>视频滤镜处理:<CODE>-vop scale=X:Y</CODE>。其质量由<CODE>-sws</CODE>选项控制。如果它没有指定, +<B>MEncoder</B>将使用0:快速二次线性。</P> + +<P>用法:<BR> + <CODE> mencoder sample-svcd.mpg -lavcopts + vcodec=mpeg4:more_options -vop scale=640:480 -sws 2 -o + output.avi</CODE></P> + + +<H4><A NAME="copying">2.4.2.3 流复制</A></H4> + +<P><B>MEncoder</B>能用两种方式处理输入流:<B>编码</B>或者<B>复制</B>他们。这部分是关于<B>复制</B>的。</P> + +<UL> + <LI><B>视频流</B>(<CODE>-ovc copy</CODE>选项): 可以干的很好:)<BR> + 比如,把FLI或者VIVO或者MPEG1的视频放(不是转化)到AVI文件中。当然只有<B>MPlayer</B>能播放这样的文件:)。而且可能在现实生活中没有任何价值。 +合理使用:视频流复制可以用于例如只有音频流需要被编码(比如,非压缩的PCM到MP3)时。</LI> + + <LI><B>音频流</B>(<CODE>-oac copy</CODE>选项): 直接了当。可以把一个外部音频文件(MP3,Vorbis)合波到输出流中。 +使用<CODE>-audiofile <filename></CODE>选择来实现这个功能。</LI> +</UL> + + +<H4><A NAME="fixing">2.4.2.4 修复索引或者交错损坏的AVI </A></H4> + +<P>最容易的事情。我们简单地复制视频和音频流,并用<B>MEncoder</B>产生索引。当然这不能修复视频和/或者音频流中可能的错误。 +这同样也可以修复交错损坏的文件, +使它们不再需要<CODE>-ni</CODE>选项。</P> + +<P>命令:<CODE>mencoder -idx input.avi -ovc copy -oac copy -o output.avi</CODE></P> + + +<H4><A NAME="libavcodec">2.4.2.5 用libavcodec编码器族编码</A></H4> + +<P><A HREF="codecs.html#libavcodec">libavcodec</A>提供简单编码许多有趣的视频和音频格式(目前其音频编码器还不支持)的方法。 +你能编码下列的编码格式:</P> + +<UL> + <LI>mjpeg -- Motion JPEG</LI> + <LI>h263 -- H263</LI> + <LI>h263p -- H263 Plus</LI> + <LI>mpeg4 -- DivX4</LI> + <LI>msmpeg4 -- 老的DivX</LI> + <LI>msmpeg4v2 -- Micro$oft MPEG4 V2 (DivX的又称为MP43的前辈)</LI> + <LI>rv10 -- 老的RealVideo编码格式</LI> + <LI>mpeg1video -- MPEG1视频:)</LI> +</UL> + +<P>第一个列包含应该传给<CODE>vcodec</CODE>配置的编码格式的名称,比如:<CODE>-lavcopts vcodec=msmpeg4</CODE></P> + +<P>例如,对于使用MJPEG压缩:<BR> + <CODE> mencoder -dvd 2 -o title2.avi -ovc lavc + -lavcopts vcodec=mjpeg</CODE></P> + + +<H4><A NAME="image_files">2.4.2.6 从多个图象文件(JPEG,PNG或TGA)的输入编码</A></H4> + +<P><B>MEncoder</B>具有从一个或多个JPEG,PNG或TGA文件创建电影的能力。通过简单的framecopy它能创建MJPEG(Motion JPEG), +MPNG(Motion PNG )或MTGA(Motion TGA)文件。</P> + +处理过程的解释: + +<OL> + <LI><B>MEncoder</B>使用<CODE>libjpeg</CODE><I>解码</I>输入图像(当解码PNG时将使用<B>libpng</B>)。</LI> + + <LI><B>MEncoder</B>接着把解码后的图象喂给所选的的视频压缩器(DivX4,Xvid,ffmpeg msmpeg4等等)。注意因为PNG解码器 +目前只能输出RGB格式,所以不能用于要求YUV输入的编码格式,像DivX4或者ffmpeg的msmpeg4之类。</LI> +</OL> + +<H4>例子</H4> + +<P><CODE>-mf</CODE>选项的解释能在全局<A HREF="#options">选项</A>部分和manpage中被找到。</P> + +<P><I>用当前目录中的所有JPEG文件创建DivX4文件:</I><BR> + <CODE>mencoder \*.jpg -mf on:w=800:h=600:fps=25 -ovc divx4 -o + output.avi</CODE></P></P> + +<P><I>用当前目录中的一些JPEG文件创建DivX4文件:</I><BR> + <CODE>mencoder frame001.jpg,frame002.jpg -mf on:w=800:h=600:fps=25 -ovc divx4 -o + output.avi</CODE></P> + +<P><I>用当前目录中的所有JPEG文件创建Motion JPEG(MJPEG)文件:</I><BR> + <CODE>mencoder \*.jpg -mf on:w=800:h=600:fps=25 -ovc copy + -o output.avi</CODE></P> + +<P><I>用当前目录中的所有PNG文件创建一个非压缩的文件:</I><BR> + <CODE>mencoder \*.png -mf on:w=800:h=600:fps=25:type=png -ovc raw -o + output.avi</CODE></P> + +<P><I>用当前目录中的所有PNG文件创建Motion PNG(MPNG)文件:</I><BR> + <CODE>mencoder \*.png -mf on:w=800:h=600:fps=25:type=png -ovc copy + -o output.avi</CODE></P> + +<P><I>用当前目录中的所有TGA文件创建Motion TGA(MTGA)文件:</I><BR> + <CODE>mencoder \*.tga -mf on:w=800:h=600:fps=25:type=tga -ovc copy + -o output.avi</CODE></P> + + +<H4><A NAME="vobsub">2.4.2.7 DVD字幕提取为Vobsub文件</A></H4> + +<P><B>MEncoder</B>有把DVD字幕提取到Vobsub格式的文件的能力。包括以<CODE>.idx</CODE>和<CODE>.sub</CODE>结尾的一对 +文件而且通常打包在一个单一的<CODE>.rar</CODE>文档中。<B>MPlayer</B>能使用<CODE>-vobsub</CODE>和<CODE>-vobsubid</CODE> +选项播放它们。</P> + +<P>你使用<CODE>-vobsubout</CODE>选项规定输出文件的基名称(就是不包括<CODE>.idx</CODE>或者<CODE>.sub</CODE>的后缀)和 +<CODE>-vobsuboutindex</CODE>指定字幕在输出文件中的索引号。</P> + +<P>如果输入不是来自DVD你必须使用<CODE>-ifo</CODE>来指明构造<CODE>.idx</CODE>文件需要的<CODE>.ifo</CODE>文件。</P> + +<P>如果输入不是来自DVD而且你也没有<CODE>.ifo</CODE>文件你将需要使用<CODE>-vobsubid</CODE>选项让它了解在<CODE>.idx</CODE> +文件中放置什么样的language id。</P> + +<P>如果<CODE>.idx</CODE>和<CODE>.sub</CODE>文件已经存在,每次运行将追加运行获得的字幕。因此,你应该在开始之前删掉所有东西。</P> + +<H4>例子</H4> + +<P><I>在进行3-pass编码的同时从DVD复制两份字幕</I><BR> + <CODE>rm subtitles.idx subtitles.sub</CODE><BR> + <CODE>mencoder -dvd 1 -vobsubout subtitles -vobsuboutindex 0 + -sid 2 -o frameno.avi -ovc frameno</CODE><BR> + <CODE>mencoder -dvd 1 -oac copy -ovc divx4 -pass 1</CODE><BR> + <CODE>mencoder -dvd 1 -oac copy -ovc divx4 -pass 2 -vobsubout + subtitles -vobsuboutindex 1 -sid 5</CODE></P> + +<P><I>从一个MPEG文件中复制法语字幕</I><BR> + <CODE>rm subtitles.idx subtitles.sub</CODE><BR> + <CODE>mencoder movie.mpg -ifo movie.ifo -vobsubout subtitles + -vobsuboutindex 0 -vobsuboutid fr -sid 1</CODE></P> + + +<H3><A NAME="options">2.4.3 可用的选项</A></H3> + +<P><B>MEncoder</B>可用的选项和例子的完全列表,请参见manpage。</P> + +</BODY> +</HTML>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/DOCS/Chinese/faq.html Sat Oct 05 10:19:07 2002 +0000 @@ -0,0 +1,586 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<HTML> + +<HEAD> + <TITLE>FAQ -- MPlayer -- Linux的电影播放器</TITLE> + <LINK REL="stylesheet" TYPE="text/css" HREF="default.css"> + <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=gb_2312-80"> + <STYLE TYPE="text/css"> + dt { + font-weight : bold; + } + </STYLE> +</HEAD> + +<BODY> + + +<H1><A NAME="faq">5. FAQ </A></H1> + +<UL> + <LI><A HREF="#compilation">5.1 编译</A></LI> + <LI><A HREF="#general">5.2 一般问题</A></LI> + <LI><A HREF="#playback">5.3 播放问题</A></LI> + <LI><A HREF="#driver">5.4 视频与音频驱动问题(vo/ao)</A></LI> + <LI><A HREF="#dvd">5.5 DVD回放</A></LI> + <LI><A HREF="#features">5.6 特性要求</A></LI> + <LI><A HREF="#encoding">5.7 编码</A></LI> +</UL> + + +<H2><A NAME="compilation">5.1 编译</A></H2> + +<DL> + + <DT>Q:编译停止并出现类似这样的出错信息: + <PRE> + In file included from mplayer.c:34: + mw.h: In function `mplMainDraw': + mw.h:209: Internal compiler error in print_rtl_and_abort, at flow.c:6458 + Please submit a full bug report, + with preprocessed source if appropriate. + </PRE> + </DT> + <DD>A:这是gcc 3.0.4的一个已知的bug,升级到3.1就可以解决问题。如何安装gcc参阅<A HREF="users_against_developers.html#gcc">gcc 2.96</A>一节。</DD> + <DD> </DD> + + <DT>Q:Configure结束时出现这样的文字,MPlayer无法编译!<BR> + <CODE>"Your gcc does not support even i386 for '-march' and '-mcpu'."</CODE> + </DT> + <DD>A:你的gcc没有正确的安装,细节需要查看<CODE>config.log</CODE>文件。</DD> + <DD> </DD> + + <DT>Q:"No such file or directory"是什么意思?</DT> + <DD>A:有可能真的没有这样文件或目录。</DD> + <DD> </DD> + + <DT>Q:gcc2.96有什么问题?</DT> + <DD>A:<B>我们强烈反对使用gcc 2.96!</B><BR> + 细节参见<A HREF="users_against_developers.html#gcc">这个</A>文件了解为什么Red Hat发布gcc 2.96,以及它有什么问题。如果你仍然 +确实确实确实确实想要使用它,总是使用最新的版本并且在configure的时候加上<CODE>--disable-gcc-checking</CODE>选项。记住是你自己选择这条路的。 +一定<B>不要</B>报告bug,一定<B>不要</B>到邮件列表上寻求帮助。如果你遇到问题我们将<B>不</B>提供任何支持。</DD> + <DD> </DD> + + <DT>Q:好极了,那么我使用Red Hat/Mandrake的gcc 3.0.1,我没问题!</DT> + <DD>A:不,因为那些编译器同样有问题。为了了解当前的编译器对MPlayer的支持状况,参见<A HREF="documentation.html#installation">安装</A>一节。</DD> + <DD> </DD> + + <DT>Q:我试图编译MPlayer,但是我得到这样的输出: + <PRE> + In file included from /usr/include/g++-v3/bits/std_cwchar.h:42, + from /usr/include/g++-v3/bits/fpos.h:40, + from /usr/include/g++-v3/bits/char_traits.h:40, + from /usr/include/g++-v3/bits/std_string.h:41, + from /usr/include/g++-v3/string:31, + from libwin32.h:36, + from DS_AudioDecoder.h:4, + from DS_AudioDec.cpp:5: + /usr/include/wchar.h: In function Long long int wcstoq(const wchar_t*, + wchar_t**, int)': + /usr/include/wchar.h:514: cannot convert `const wchar_t* __restrict' to + `const + </PRE> + </DT> + <DD>A:把你的glibc升级到最新的发行版。对于Mandrake,使用2.2.4-8mdk。</DD> + <DD> </DD> + + <DT>Q:... gcc 2.96 ... (是的,有些人还在为gcc 2.96上火!)</DT> + <DD>A:我们引用A'rpi发送到<A HREF="http://mplayerhq.hu/pipermail/mplayer-users/">mplayer-users</A>邮件列表的一封 +<A HREF="http://www.mplayerhq.hu/pipermail/mplayer-users/2001-October/005351.html">邮件</A>('ideg'的意思将在下面解释): + <BLOCKQUOTE> + <P>And we have idegs. And our idegcounter overflowed again and again.</P> + + <P>Unfortunately MPlayer is out of our control. It's used by lamers, Linux + users who can't even use Windows, and never tried to compile a kernel. They + installed (with default options) Mandrake or Red Hat or SuSE, and without + RTFM'ing they send messages saying 'it doesn't work! help me! please! i'm + new to Linux! help! oh! help me!'. We can't stop them, but at least we try + to force them to RTFM and to read the messages of ./configure and MPlayer.</P> + + <P>And you clever guys come and flame us with gcc 2.96 and binary packages. + Instead of helping users or making patches to help solve problems.</P> + + <P>Half of our spare/free time is spent by answering silly mails here and + making newer tricks and checks to configure to avoid such mails.</P> + + <P>And there is a balance. On the one side are you, clever guys, saying we + are very bad because we don't like buggy gcc 2.96, and on the other side + there are the 'new to Linux' guys who are showing us gcc 2.96 is buggy.</P> + + <P>Conclusion: We can't be good. Half the people will always say we are bad.</P> + + <P>Maybe we should close the project, make it closed source, commercial, and + provide install support for it. then we could leave current work, so + development could go faster, and we could earn lots of money with it and buy + a big house, etc etc. Do you really want it? It seems.</P> + </BLOCKQUOTE> + </DD> + <DD> </DD> + + <DT>Q:SDL输出不能工作或者编译。问题在...</DT> + <DD>A:SDL 1.2.x经过测试能够工作另外SDL 1.1.7+可能能工作。任何以前的版本肯定<B>不能</B>工作。因此如果你选择使用这样的版本,是你自己的责任。</DD> + <DD> </DD> + + <DT>Q:我在编译SDL支持的时候仍然有问题。gcc说什么"undefined reference to `SDL_EnableKeyRepeat'"。现在怎么办?</DT> + <DD>A:你把SDL库装在哪里? 如果你装在/usr/local(默认目录)中那么编辑顶层的config.mak并在"X_LIBS="之后添加"-L/usr/local/lib"。现在打make。你搞定了!</DD> + <DD> </DD> + + <DT>Q:不能编译,找不到uint64_t inttypes.h之类的东西...</DT> + <DD>A:把etc/inttypes.h复制到<B>MPlayer</B>目录下(<CODE>cp etc/inttypes.h .</CODE>)然后再试一次...</DD> + <DD> </DD> + + <DT>Q:我在Pentium III上运行Linux但是<CODE>./configure </CODE>没有找到SSE...</DT> + <DD>A:只有2.4.x的内核支持SSE(或者试试2.2.19或更新的版本,但准备好出问题)。</DD> + <DD> </DD> + + <DT>Q:我有G200与G400,我如何编译使用mga_vid驱动?</DT> + <DD>A:阅读<A HREF="video.html#mga_vid">mga_vid文档</A>。</DD> + <DD> </DD> + + <DT>Q:<B>MPlayer</B>有rpm/deb/...之类的安装包吗?</DT> + <DD>A:你能自己制作.deb安装包,查阅<A HREF="documentation.html#debian">Debian安装包的制作</A>一节。 +我们网站的<A HREF="http://www.mplayerhq.hu/homepage/dload.html">下载页</A>上有官方的Red Hat的RPM包的下载链接。</DD> + <DD> </DD> + + <DT>Q:在'make'时,MPlayer报告没有X11库。我不理解,我确实装了X!?</DT> + <DD>A:...但是你没有装X的开发包。或者没有正确安装。Red Hat下面它叫XFree86-devel*,Debian下面是xlibs-dev。 +也检查是否存在<CODE>/usr/X11</CODE>和<CODE>/usr/include/X11</CODE>的符号链接(在Mandrake系统上可能有这个问题)。 +他们用下列命令创建:<BR> + <CODE>$ ln -sf /usr/X11R6 /usr/X11</CODE><BR> + <CODE>$ ln -sf /usr/X11R6/include/X11 /usr/include/X11</CODE><BR> + 你的发行版可能不是<A HREF="http://www.pathname.com/fhs/">文件系统层次标准</A>。</DD> + <DD> </DD> + + <DT>Q:我不能编译SVGAlib。我使用2.3/2.4的内核...</DT> + <DD>A:你必须编辑SVGAlib的Makefile.cfg把<CODE>BACKGROUND = y</CODE>注释掉。</DD> + <DD> </DD> + + <DT>Q:我的MPlayer编译了libdvdcss/libdivxdecore的支持,但是当我试图起动它时,它说:<BR> + <CODE>> error while loading shared libraries: lib*.so.0: cannot load + shared object file: No such file or directory</CODE><BR> + 我检查了文件,它确实在<CODE>/usr/local/lib</CODE>里面...</DT> + <DD>A:在<CODE>/etc/ld.so.conf</CODE>里添加<CODE>/usr/local/lib</CODE>然后运行<CODE>ldconfig</CODE>。</DD> + <DD> </DD> + + <DT>Q:Hmm,奇怪。我加载mga_vid.o内核模块后在log中找到这个:<BR> + <CODE>Warning: loading mga_vid.o will taint the kernel: no license</CODE></DT> + <DD>A:最新的内核modutils要求一个标明许可证的标记(主要避免内核hackers调试非开源的驱动)。升级你的内核, +modutils和<B>MPlayer</B>。</DD> + <DD> </DD> + + <DT>Q:编译<B>MEncoder</B>过程中,在连接时出现segfaults!</DT> + <DD>A:这是连接程序的问题。把binutils升级应该有用(2.11.92.*或者更新版本应该不错)。由于它不是我们的问题, +请一定<B>不要</B>报告!</DD> + <DD> </DD> + + <DT>Q:MPlayer在pthread check时因为segmentation fault而崩溃!</DT> + <DD>A:chmod 644 /usr/lib/libc.so</DD> + <DD> </DD> + + <DT>Q:我想在Minix上编译<B>MPlayer</B>!</DT> + <DD>A:我也想。:)</DD> + +</DL> + + +<H2><A NAME="general">5.2 一般问题</A></H2> + +<DL> + + <DT>Q:我能同时运行多个<B>MPlayer</B>实例吗?</DT> + <DD>A:是的。有些视频输出的驱动像xv,dga或者(x)mga是唯一的,所以你将不能够运行超过一个使用这样的视频输出驱动的<B>MPlayer</B>实例。 +音频驱动也在不是很严重的程度上存在这种问题。并非所有的驱动都允许在同样的设备上播放多重流。</DD> + <DD> </DD> + + <DT>Q:在左上角中有一个计时器。我怎么能去掉它?</DT> + <DD>A:按<CODE>o</CODE>或者使用<CODE>-osdlevel</CODE>选项。</DD> + <DD> </DD> + + <DT>Q:<CODE>-xy</CODE>或者<CODE>-fs</CODE>选项对x11驱动(<CODE>-vo x11</CODE>)不起作用...</DT> + <DD>A:它能起作用,但你必须用<CODE>-zoom</CODE>选项明确指定使用软件缩放(十分缓慢)。你最好是使用XF86VidMode支持: +你必须指定<CODE>-vm</CODE>和<CODE>-fs</CODE>选项,然后就搞定了。确保在你的XF86Config文件中有正确设定了modelines,并且尝试使用 +<A HREF="video.html#dga">DGA驱动</A>并且<A HREF="video.html#sdl">SDL的DGA驱动</A>。它快得多。如果SDL的DGA能工作就用它,它还要更快。</DD> + <DD> </DD> + + <DT>Q:状态行上的数字的是什么意思?</DT> + <DD>A:例如: + <CODE>A: 2.1 V: 2.2 A-V: -0.167 ct: 0.042 57/57 41% 0% 2.6% 0 4 49%</CODE> + <UL> + <LI>A:以秒计算的音频位置</LI> + <LI>V:以秒计算的视频位置</LI> + <LI>A-V:以秒计算的音频视频位置差(延迟)</LI> + <LI>ct:所有完成的A-V同步纠正</LI> + <LI>播放的帧数(从最后一次搜索开始计算)</LI> + <LI>解码的帧数(从最后一次搜索开始计算)</LI> + <LI>视频解码器占用的cpu的百分比(对于slice和DR这包括了视频输出的占用)</LI> + <LI>视频输出的cpu占用</LI> + <LI>音频解码器占用的cpu的百分比</LI> + <LI>为保持A-V同步而丢弃的帧数</LI> + <LI>目前图像后处理的级别(当使用<CODE>-autoq</CODE>时)</LI> + <LI>当前cache使用量(大约50%是正常的)</LI> + </UL> + 他们中大多数是为了调试的,将在适当时候去掉。</DD> + <DD> </DD> + + <DT>Q:我不想要他们出现怎么办?</DT> + <DD>A:使用<CODE>-quiet</CODE>选项并阅读man page。</DD> + <DD> </DD> + + <DT>Q:为什么有些文件的视频输出的cpu占用是零(0%)?</DT> + <DD>A1:它不是零,但它是由解码器调用的不能被单独测量。你应该试着先用<CODE>-vo null</CODE>播放文件然后用<CODE>-vo ...</CODE>播放, +检查它们的不同来查看视频速度。</DD> + <DD>A2:你使用了直接渲染,那是由解码器自己渲染显存。在这种情况下,解码占用的百分比也包含了显示占用的百分比。</DD> + <DD> </DD> + + <DT>Q:出现关于在<CODE>/usr/lib/win32/</CODE>下找不到文件的错误...</DT> + <DD>A:从<B>我们的</B>FTP站点下载<A HREF="ftp://ftp.mplayerhq.hu/MPlayer/releases/w32codec-0.90.tar.bz2">Win 32解码器</A> +(avifile的解码器包的DLL集不同)并安装它。</DD> + <DD> </DD> + + <DT>Q:有关于MPlayer的邮件列表吗?</DT> + <DD>A:有的。看我们的主页的<A HREF="http://www.mplayerhq.hu/homepage/info.html">信息页</A>的底部来订阅。</DD> + <DD> </DD> + + <DT>Q:当我试图播放我最喜爱的视频时,我发现一个讨厌的bug!我应该报告谁?</DT> + <DD>A:请阅读<A HREF="bugreports.html">bug报告指导</A>并遵照上面的指令做。</DD> + <DD> </DD> + + <DT>Q:我用...解码器播放文件的时候有问题。我能使用它们吗?</DT> + <DD>A:查阅<A HREF="http://www.mplayerhq.hu/DOCS/codecs-status.html">解码器状态</A>,如果它不包含你的解码器, +阅读<A HREF="codecs.html">解码器文件</A>,特别是<A HREF="codecs.html#importing">解码器导入HOWTO</A>然后联系我们。</DD> + <DD> </DD> + + <DT>Q:Umm,"IdegCounter"是什么东东?</DT> + <DD>A:匈牙利语和英语的结合。匈牙利语"Ideg"是神经质的意思,发音类似于“ydaegh”。它最初用来度量A'rpi神经质, +在一些CVS的代码(umm)“神秘的”消失之后;)</DD> + <DD> </DD> + + <DT>Q:"Faszom(C)ounter"又是什么?</DT> + <DD>A:“Fasz”是你不会想要知道的匈牙利词汇,其他的跟MPlayer开发者们的邪恶的脑袋有关。</DD> + <DD> </DD> + + <DT>Q:LIRC不工作,因为...</DT> + <DD>A:你明确你使用的是<CODE>mplayer</CODE>而不是<CODE>mplayer-lirc</CODE>吗? 注意,<CODE>mplayer-lirc</CODE> +使用了很长时间,包括0.60的发行版,但是它最近又变成<CODE>mplayer</CODE>了。</DD> + <DD> </DD> + + <DT>Q:字幕非常不错,是我见过的最漂亮的,但它们降低播放速度! 我想它是不可能的了...</DT> + <DD>A:在运行<CODE>./configure</CODE>之后,编辑<CODE>config.h</CODE>并将<CODE>#undef FAST_OSD</CODE>换成 +<CODE>#define FAST_OSD</CODE>。然后重新编译。</DD> + <DD> </DD> + + <DT>Q:onscreen display(OSD)不停的闪烁!</DT> + <DD>A:你使用单缓冲的vo驱动(x11,xv)。对于xv,使用<CODE>-double</CODE>选项。也试试<CODE>-vop expand</CODE></DD> + <DD> </DD> + + <DT>Q:libavcodec这种东东到底是什么?</DT> + <DD>A:参见<A HREF="codecs.html#libavcodec">libavcodec</A>一节。</DD> + <DD> </DD> + + <DT>Q:但是Configure告诉我"Checking for libavcodec ... no"!</DT> + <DD>A:你需要从FFmpeg的CVS中获得libavcodec。阅读<A HREF="codecs.html#libavcodec">libavcodec一节</A>的指令。</DD> + <DD> </DD> + + <DT>Q:Icewm的任务条不断的挡住全屏幕的电影!</DT> + <DD>A:这不应该再发生了,但如果它确实仍然发生,使用<CODE>-icelayer</CODE>选项并向 +<A HREF="http://mplayerhq.hu/pipermail/mplayer-users/">mplayer-users</A>邮件列表报告。</DD> + <DD> </DD> + + <DT>Q:我不能访问GUI菜单。我按下右键,但我不能访问任何菜单项!</DT> + <DD>A:你使用的是FVWM吗? 试试下列方法:<BR> + Start -> Settings -> Configuration -> Base Configuration<BR> + 把"Use Applications position hints"设为"Yes"。</DD> + <DD> </DD> + + <DT>Q:我能在后台中运行MPlayer吗?</DT> + <DD>A:用法:<CODE>mplayer <options> <filename> < /dev/null &</CODE></DD> + +</DL> + + +<H2><A NAME="playback">5.3 回放问题</A></H2> + +<DL> + + <DT>Q:我能播放某些AVI文件但是我听不到声音并且有这种出错信息: + <PRE> + Detected audio codec: [divx] afm:4 (DivX audio (WMA)) + Requested audio codec family [divx] (afm=4) not available (enable it at + compile time!) + </PRE> + </DT> + <DD>A:可能文件的音频使用了一个不是<B>MPlayer</B>本地支持的解码器。按照README或者<A HREF="documentation.html#installation"> +安装</A>一节中的指示安装Win32解码器包。</DD> + <DD> </DD> + + <DT>Q:...avifile/aviplay能工作但MPlayer不能。</DT> + <DD>A:<B>MPlayer</B>不是avifile。它们之间唯一的共同之处Win32 DLL装载器。codecs(DLL)集,同步,信号分离等等完全不同 +所以不应该被比较。如果什么东西能用aviplay播放并不意味着<B>MPlayer</B>能工作,反之亦然。</DD> + <DD> </DD> + + <DT>Q:播放AVI文件时音频不同步。</DT> + <DD>A:试试<CODE>-bps</CODE>或<CODE>-nobps</CODE>选项。如果还没有改善,阅读<A HREF="bugreports.html"> +这个</A>并把文件上载到FTP上。</DD> + <DD> </DD> + + <DT>Q:MPlayer在使用l3codeca.acm的时候因为一些错误而退出。</DT> + <DD>A:检查<CODE>ldd /usr/local/bin/mplayer</CODE>的输出。如果它包含<BR> + <CODE>libc.so.6 => /lib/libc.so.6 (0x4???????)</CODE><BR> + "?"可以是任意数字表示没有问题,错误不在这里。如果它是:<BR> + <CODE>libc.so.6 => /lib/libc.so.6 (0x00??????)</CODE><BR> + 那就表示你的内核/libc有问题。可能你使用了一些安全补丁(例如Solar Designer的OpenWall补丁)强迫把库加载到很低的内存地址。 +因为l3codeca.acm是不可重新定位的DLL,它必须被加载到0x00400000,我们没法改变它。你应该使用没有打补丁的核心, +或者使用<B>MPlayer</B>的<CODE>-afm 1</CODE>选项禁用l3codeca.acm。</DD> + <DD> </DD> + + <DT>Q:我的电脑播放分辨率640x300而且是立体声的mp3的M$ DivX AVI文件时非常慢。当我使用-nosound选项时,一切正常(但没有声音)。</DT> + <DD>A:你的机器太慢或者你的声卡驱动坏了。查阅文档看你是否能提高性能。</DD> + <DD> </DD> + + <DT>Q:MPlayer由于"MPlayer interrupted by signal 4 in module: decode_video"而崩溃。</DT> + <DD>A:尝试在你用来编译<B>MPlayer</B>的机器上运行它。或者重新编译打开运行时CPU检测功能(<CODE>./configure --enable-runtime-cpudetection</CODE>)。 +如果没有使用上面提到的特性,不要在与编译它不同的CPU上使用<B>MPlayer</B>。</DD> + <DD> </DD> + + <DT>Q:我有个关于[your window manager]跟xv/xmga/sdl/x11模式下全屏的问题...</DT> + <DD>A:读取我们的<A HREF="bugreports.html">bug报告指导</A>并送一个正确的bug报告给我们</DD> + <DD> </DD> + + <DT>Q:我播放MPEG文件时出现这样的错误: Can't find codec for video format 0x10000001!</DT> + <DD>A:你的<CODE>~/.mplayer/</CODE>下的codecs.conf的版本太旧。用<CODE>/etc/</CODE>下面的文件升级它。<BR> + <B>或者</B>你的配置文件中包含<CODE>vc=</CODE>选项或者类似东西。</DD> + <DD> </DD> + + <DT>Q:当KDE下的运行MPlayer我只看到一个黑色的屏幕什么都没有。在大约一分钟之后才开始播放视频。</DT> + <DD>A:KDE的arts守护进程阻塞了声卡设备。一直等到视频开始或者在控制中心中禁用arts。如果你想使用arts的音频, +将音频输出指定为我们本地的arts音频驱动<CODE>-ao arts</CODE>)。如果它失败或者没有被编译进来,尝试SDL +(<CODE>-ao sdl</CODE>)并且确保你的SDL能处理arts的音频。还有另一个选择是用artsdsp运行<B>MPlayer</B>。</DD> + <DD> </DD> + + <DT>Q:我有一个AVI文件,当用<CODE>-vc odivx</CODE>播放时时,出现灰色屏幕,用<CODE>-vc divx4</CODE>时,出现绿色屏幕。</DT> + <DD>A:这不是DivX文件,而是M$ MPEG4v3。更新你的codecs.conf。</DD> + <DD> </DD> + + <DT>Q:我播放电影时遇到视频音频不同步和/或者MPlayer崩溃并出现下列信息:<BR> + <CODE>DEMUXER: Too many (945 in 8390980 bytes) video packets in the buffer!</CODE></DT> + <DD>A:这可能有很多原因。 + <UL> + <LI>你的CPU<B>和/或者</B>显卡<B>和/或者</B>总线太慢。在这种情况下<B>MPlayer</B>会显示信息(并且掉帧数会迅速增加)。</LI> + <LI>如果它是AVI文件,也许它的交错有问题。试试<CODE>-ni</CODE>选项。</LI> + <LI>你的声卡驱动太buggy,或者你对ALSA 0.5使用了<CODE>-ao oss</CODE>。 + 参见<A HREF="sound.html">声卡一节</A>。</LI> + <LI>AVI的文件头有问题,试试<CODE>-nobps</CODE>选项,和/或者<CODE>-mc 0</CODE>。</LI> + </UL></DD> + <DD> </DD> + + <DT>Q:我有个MJPEG文件能用其它播放器播放但是MPlayer只显示一个黑色的图象。</DT> + <DD>A:在<CODE>codecs.conf</CODE>中禁用Windows DLL,或者使用<CODE>-vc ffmjpeg</CODE>选项(为此你需要为MPlayer编译libavcodec支持)。</DD> + <DD> </DD> + + <DT>Q:当我试图从我的电视选台器截取时,它能工作,但是颜色很奇怪。用其它程序没问题。</DT> + <DD>A:你的卡片有可能错误报告了它的色彩空间容量。试试YUY2而不是缺省的YV12(见<A HREF="documentation.html#tv">电视输入文档</A>)。</DD> + <DD> </DD> + + <DT>Q:每次我开始播放是,都遇到这种信息,但一切似乎都正常:<BR> + <CODE>Linux RTC init: ioctl (rtc_pie_on): Permission denied</CODE></DT> + <DD>A:你需要root权限或者一个特殊设定的内核使用计时器代码。细节参见文档的<A HREF="documentation.html#rtc">RTC一节</A>。</DD> + <DD> </DD> + + <DT>Q:我的同步有问题。一些AVI我能正常播放,另外一些却是以双倍速度播放!</DT> + <DD>A:你的声卡/驱动buggy。很有可能它的固定在44100Hz,而你试图播放22050Hz的音频的文件。试试resample插件。</DD> + <DD> </DD> + + <DT>Q:我播放所有WMV (或者其它.. )文件时都只有一个绿色/灰色的窗口和声音! MPlayer报告:<BR> + <CODE>Detected video codec: [null] drv:0 (NULL codec (no decoding))</CODE></DT> + <DD>A:更新你<CODE>codecs.conf</CODE>。</DD> + <DD> </DD> + + <DT>Q:我用我的笔记本播放文件时得到十分奇怪的CPU百分值(太大了)。</DT> + <DD>A:这是你的笔记本的电源管理/节能系统(BIOS,不是内核)的影响。起动你的笔记本<B>之前</B>插上外部电源。</DD> + <DD> </DD> + + <DT>Q:当我以root权限在我的笔记本上运行MPlayer时,音频与视频完全不同步。当我作为普通用户运行它时,它工作正常。</DT> + <DD>A:这还是电源管理的结果(见上面)。起动你的笔记本<B>之前</B>插上外部电源或者使用<CODE>-nortc</CODE>选项。</DD> + +</DL> + + +<H2><A NAME="driver">5.4 视频与音频驱动问题(vo/ao) </A></H2> + +<DL> + + <DT>Q:我播放视频的时候没有声音并且得到类似这样的出错信息: + <PRE> + AO: [oss] 44100Hz 2ch Signed 16-bit (Little-Endian) + audio_setup: Can't open audio device /dev/dsp: Device or resource busy + couldn't open/init audio device -> NOSOUND + Audio: no sound!!! + Start playing... + </PRE> + </DT> + <DD>A:你是运行的KDE或者GNOME,并且起动了arts或者esd音频守护进程吗? 试试禁用音频守护进程,或者使用<CODE>-ao arts</CODE> +选项让<B>MPlayer</B>使用arts。</DD> + <DD> </DD> + + <DT>Q:DGA驱动器怎么样了? 我找不到它!</DT> + <DD>A:<CODE>./configure</CODE>会自动检测你的DGA驱动。如果<CODE>-vo help</CODE>没有显示DGA,那你的X装的有问题。 +尝试<CODE>./configure --enable-dga</CODE>并且读取<A HREF="video.html#dga">相关文档</A>。或者,使用<CODE>-vo sdl:dga</CODE> +选项试试SDL的DGA驱动。</DD> + <DD> </DD> + + <DT>Q:很好,<CODE>-vo help</CODE>显示有DGA驱动,但是它抱怨权限。帮帮我!</DT> + <DD>A:它只能以root权限工作! 这是DGA的限制。你应该成为root(<CODE>su -</CODE>),然后再试一次。另一个解决方法是为 +<B>MPlayer</B>SUID root,但是这种方法<B>不被推荐!</B><BR> + <CODE>chown root /usr/local/bin/mplayer</CODE><BR> + <CODE>chmod 755 /usr/local/bin/mplayer</CODE><BR> + <CODE>chmod +s /usr/local/bin/mplayer</CODE><BR> + <BLOCKQUOTE> + <B>警告:安全风险</B><BR> + 这是一个<B>很大的</B>安全风险!<B>永远不要</B>在除了你之外还有人可以使用的服务器上这样做,因为他们能通过SUID root的 +<B>MPlayer</B>获得root权限。<B>你被警告过了。</B> + </BLOCKQUOTE> + </DD> + <DD> </DD> + + <DT>Q:当使用Xvideo时,我的Voodoo 3/Banshee报告说:<BR> + <CODE>X Error of failed request: BadAccess (attempt to access private + resource denied)<BR> + Major opcode of failed request: 147 (MIT-SHM)<BR> + Minor opcode of failed request: 1 (X_ShmAttach)<BR> + Serial number of failed request: 26<BR> + Current serial number in output stream:27</CODE></DT> + <DD>A:XFree86 4.0.2/4.0.3的“tdfx”驱动有这个bug。已经被解决了<A HREF="http://www.xfree86.org/cvs/changes_4_1.html"> +bugfix #621 of the XFree86 4.1.0 CVS log</A>解决。因此,升级到XFree86 4.1.0或者更新的版本。或者,要么是从 +<A HREF="http://dri.sourceforge.net">DRI的主页</A>下载(至少)0.6版本的DRI,要么使用CVS的DRI。</DD> + <DD> </DD> + + <DT>Q:OpenGL(<CODE>-vo gl</CODE>)输出不工作(锁死/黑色窗口/X11出错/...)。</DT> + <DD>A:你的OpenGL驱动不支持动态材质更换(glTexSubImage)。已知的是它在nVidia的二进制的家伙上不工作。同时也知道它在Utah-GLX/DRI +和Matrox G400显卡上能工作。Radeon显卡加DRI也行。其它显卡加DRI不行。它同样不能在3DFX显卡上工作,因为256x256材质大小限制。</DD> + <DD> </DD> + + <DT>Q:我有一块nVidia TNT/TNT2显卡,而我的电影的下面总有一个颜色奇怪的带子! 这个是什么故障?</DT> + <DD>A:这是nVidia二进制X驱动的一个bug。这些bug仅出现在TNT/TNT2显卡上,我们什么也干不了。要解决问题,升级到最新版本的nVidia二进制的驱动。 +如果仍然不行,对nVidia抱怨去吧!</DD> + <DD> </DD> + + <DT>Q:我使用nVidia XYZ显卡,当我单击显示GUI的显示窗口来触发GUI面板时,在我单击的地方出现一个黑色方块。我安装了最新的驱动。</DT> + <DD>A:没错,nVidia修正了上一个的错误(上面),并且引进了新的bug。让我们祝贺他们。更新:据<A HREF="users_against_developers.html#nvidia"> +nVidia</A>说,这已经修正了。</DD> + <DD> </DD> + + <DT>Q:当我使用GUI时,如果使用SDL视频输出,会创建第二个视频窗口。</DT> + <DD>A:知道,目前还没有使GUI能使用SDL。</DD> + <DD> </DD> + + <DT>Q:啊世界真是残酷...! SDL只有<CODE>x11</CODE>输出,而不是<CODE>xv</CODE>!</DT> + <DD>A:再试一次<CODE>x11</CODE>输出。现在尝试<CODE>-vo x11 -fs -zoom</CODE>。看到区别了?没有?!好,给你点启发:SDL的<CODE>x11</CODE> +输出只要xv可用就会使用xv,你不必为它担心...注意:你使用<CODE>-forcexv</CODE>或<CODE>-noxv</CODE>强制/禁用SDL使用xv</DD> + +</DL> + + +<H2><A NAME="dvd">5.5 DVD回放</A></H2> + +<DL> + + <DT>Q:当播放DVD时,我遇到这个错误:<BR> + <CODE>mplayer: ifo_read.c:1143: ifoRead_C_ADT_internal: Assertion + nfo_length / sizeof(cell_adr_t) >= c_adt->nr_of_vobs' failed.</CODE></DT> + <DD>A:这是已知的libdvdread 0.9.1/0.9.2的bug。使用<B>libmpdvdkit</B>,就在MPlayer的源代码中,并且缺省使用</DD> + <DD> </DD> + + <DT>Q:我能在我的Solaris下的可爱的SPARC上编译libdvdread和libdvdcss吗?</DT> + <DD>A:天知道...据说它能工作,所以请测试它并且提供反馈。也参阅libdvdread的文件及其主页。我们不是libdvdread的作者。使用<B>libmpdvdkit</B>, +就在MPlayer的源代码中,并且缺省使用。</DD> + <DD> </DD> + + <DT>Q:字幕怎么样? MPlayer能显示他们吗?</DT> + <DD>A:是。参见文档的<A HREF="cd-dvd.html#dvd">DVD chapter</A>部分。</DD> + <DD> </DD> + + <DT>Q:我怎么设置我的DVD光驱的地区代码? 我没有Windows!</DT> + <DD>A:使用<A HREF="http://www.linuxtv.org/download/dvd/dvd_disc_20000215.tar.gz">regionset工具</A>。</DD> + <DD> </DD> + + <DT>Q:我一定需要(setuid) root/setuid fibmap_mplayer来播放DVD吗?</DT> + <DD>A:不,只用于老式的DVD支持。然而你必须有适当的DVD设备项目的权限(在<CODE>/dev/</CODE>里)。</DD> + <DD> </DD> + + <DT>Q:我在什么地方能找到libdvdread和libdvdcss包?</DT> + <DD>A:你不需要。使用<B>libmpdvdkit</B>,就在MPlayer的源代码中,并且缺省使用。无论如何,这些包能从 +<A HREF="http://www.dtek.chalmers.se/groups/dvd">Ogle site</A>得到。</DD> + <DD> </DD> + + <DT>Q:可以单独播放/编码选择的chapter吗?</DT> + <DD>A:可以,试试<CODE>-chapter</CODE>选项。</DD> + <DD> </DD> + + <DT>Q:我的DVD回放慢的要死!</DT> + <DD>A:使用<CODE>-cache</CODE>选项(在man page中介绍)并尝试用hdparm工具为了DVD光驱开启DMA(在文档 +<A HREF="cd-dvd.html#cd">CD部分</A>介绍)。</DD> + +</DL> + + +<H2><A NAME="features">5.6 特性要求</A></H2> + +<DL> + + <DT>Q:如果<B>MPlayer</B>暂停之后我试图搜索或者按任意键,<B>MPlayer</B>会停止暂停。我愿意能够在暂停时在电影中搜索。</DT> + <DD>A:很难在不失去A/V同步的情况下实现这项功能。迄今为止所有尝试都失败了,但补丁是受欢迎的。</DD> + <DD> </DD> + + <DT>Q:我想要+/- 1帧来搜索而不是10秒。</DT> + <DD>A:这不会被我们实现。它曾被实现过,但是它弄乱了A/V同步。如果你愿意就实现它,并且发送补丁。不要要求它。</DD> + <DD> </DD> + + <DT>Q:哪里有Windows版本?</DT> + <DD>A:它还没有发行,并且将来也不会。看看Windows的情况(开源的ASF分析器,开源的ASF编码器等等)然后你就知道为什么了。 +我们不想进监狱。顺便说一下,你可以自己编译它,在<A HREF="documentation.html#cygwin">Cygwin</A>下。</DD> + <DD> </DD> + +</DL> + + +<H2><A NAME="encoding">5.7 编码</A></H2> + +<DL> + + <DT>Q:我怎么编码?</DT> + <DD>A:读取<B>MEncoder</B>的<A HREF="encoding.html">文件</A>。</DD> + <DD> </DD> + + <DT>Q:我怎么创建VCD?</DT> + <DD>A:试试<CODE>TOOLS</CODE>目录下的<CODE>mencvcd</CODE>脚本。使用它你能把DVD或者其它电影编码成为VCD或者 +SVCD格式甚至直接把它们刻到CD上。</DD> + <DD> </DD> + + <DT>Q:我的电视选台器工作,我能用MPlayer听到声音观看视频,但是MEncoder不把音频编码!</DT> + <DD>A:Linux的电视音频编码目前还没有实现,我们正在努力。目前它只在BSD上工作。</DD> + <DD> </DD> + + <DT>Q:我不能把DVD字幕编码成AVI!</DT> + <DD>A:你必须正确设定<CODE>-sid</CODE>选项!</DD> + <DD> </DD> + + <DT>Q:MEncoder启动时出现segfaults!</DT> + <DD>A:升级DivX4Linux。</DD> + <DD> </DD> + + <DT>Q:我如何仅对一张DVD中选定的chapter进行编码?</DT> + <DD>A:正确使用<CODE>-chapter</CODE>选项,像这样: + <CODE>-chapter 5-7</CODE></DD> + <DD> </DD> + + <DT>Q:我试图在VFAT文件系统上处理2GB+的文件。能行吗?</DT> + <DD>A:不,VFAT不支持2GB+的文件。</DD> + <DD> </DD> + + <DT>Q:为什么MEncoder显示的推荐比特率都是负的?</DT> + <DD>A:因为你编码的音频的比特率太大,在任何CD上不能用于电影。检查你是否正确安装了libmp3lame。</DD> + +</DL> + +</BODY> +</HTML>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/DOCS/Chinese/formats.html Sat Oct 05 10:19:07 2002 +0000 @@ -0,0 +1,185 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<HTML> + +<HEAD> + <TITLE>格式 -- MPlayer -- Linux的电影播放器</TITLE> + <LINK REL="stylesheet" TYPE="text/css" HREF="default.css"> + <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=gb_2312-80"> +</HEAD> + +<BODY> + + +<H2><A NAME="formats">2.1 支持的格式</A></H2> + +<P>首先澄清一个普遍的错误是非常重要的。 当人们看到以<B>.AVI</B>为扩展名的文件时,他们立即得出结论,认定它不是MPEG文件。 +那种看法是不对的。至少不完全对。与一般人的看法相反这种文件<B>能</B>包含MPEG1视频。</P> + +<P>如你所见,一种<B>编码方式</B>与一种<B>文件格式</B>是不一样的。<BR> + 视频<B>编码格式</B>的例子有:MPEG1,MPEG2,DivX,Indeo5,3ivx。<BR> + 文件<B>格式</B>的例子有:MPG,AVI,ASF。</P> + +<P>在理论上,你能把OpenDivX视频和MP3音频放到<B>MPG</B>格式的文件中。然而,大多数播放器将无法播放它, +由于他们期待的是MPEG1视频和MP2音频(不同于<B>AVI</B>格式,<B>MPG</B>没有必要的区域来描述其视频和音频流)。 +或者你可以把MPEG1视频放到AVI文件中。<A HREF="http://ffmpeg.sourceforge.net">FFmpeg</A>和 +<A HREF="encoding.html">MEncoder</A>就能建立这样的文件。</P> + + + +<H3><A NAME="video_formats">2.1.1 视频格式</A></H3> + + +<H4><A NAME="mpeg">2.1.1.1 MPEG文件</A></H4> + +<P>MPEG文件会以不同的形式出现:</P> + +<UL> + <LI>MPG:这是MPEG文件格式的最<B>基本</B>形式。它包含MPEG1视频和MP2(MPEG-1 layer 2)或者极少数是MP1音频。</LI> + <LI>DAT:这是与MPG完全相同的格式,只是换了扩展名。它在<B>Video CD</B>上使用。因为制作VCD的方法和Linux的设计, +DAT文件不能直接播放也不能作为普通的文件从VCD上复制下来。你必须使用<CODE>-vcd</CODE>选项来播放VCD。</LI> + <LI>VOB:这是用在<B>DVD</B>上的MPEG文件格式。它与MPG一样,加上能包含字幕或者非MPEG(AC3)音频的能力。 +它包含编码的MPEG2视频和通常是AC3的音频,但是,MP2和非压缩的LPCM DTS音频也被允许使用。<BR> + <B>参见<A HREF="cd-dvd.html#dvd">DVD</A>一节!</B></LI> +</UL> + +<P>MPEG文件中的帧序列组成独立的组。这意味着你能用标准的文件工具(像<CODE>dd</CODE>,<CODE>cut</CODE>)切割和合并MPEG文件, +并且得到的文件还是完全可用的。</P> + +<P>MPG的一个重要的特性是它们有一个描述视频流长宽比的区域。例如SVCD有480x480的分辨率的视频,而在文件头中的那个区域被置为4:3, +这样它以640x480的分辨率被播放。AVI文件没有这个区域,因此他们必须在编码或者播放时用<CODE>-aspect</CODE>重新缩放。</P> + + +<H4><A NAME="avi">2.1.1.2 AVI文件</A></H4> + +<P>由微软设计,<B>AVI(Audio Video Interleaved)</B>是一种普遍的多用途格式,目前被大多数DivX和DivX4视频所使用。 +它有许多已知的弊端和缺点(比如在流播放时)。它支持1个视频流和0到99个音频流。文件大小限制是2GB,但是现在存在一种扩展格式 +称为<B>OpenDMS</B>允许更大的文件。微软目前强烈反对使用它并鼓励使用ASF与WMV。不过没有什么人在乎。</P> + +<P>有一个hack允许AVI文件包含Ogg Vorbis音频流的,但这使他们与标准的AVI不兼容。<B>MPlayer</B>支持播放这种文件。 +搜索功能也被植入,但由于编码糟糕的文件的混乱的文件头使这项功能被严重限制了。遗憾地是,目前唯一能建立这种文件的编码器, +NanDub,就存在这个问题。</P> + +<P><B>注意:</B>DV照相机建立的未经加工的DV流被DV grabbing utilities转换成两种不同类型的AVI文件。所以AVI将或者包含 +<B>MPlayer</B>可以播放的分离的音频与视频流,或者是未经加工的DV流,它的支持正在开发中的。</P> + +<P>有两种类型的AVI文件:</P> +<UL> + <LI><B>交错的:</B>音频和视频内容是交错的。这是标准使用方法。被推荐且多半都使用。一些工具以错误的同步方式建立交错的AVI。 +<B>MPlayer</B>认为这些文件是交错的,这会导致A/V不同步,在搜索时最为明显。这些文件应该被当作非交错的文件来播放 +(使用<CODE>-ni</CODE>选项)。</LI> + <LI><B>非交错的:</B>首先是整个视频流,然后是整个音频流。因此这需要大量的搜索,使用网络或者CD-ROM播放变的困难。</LI> +</UL> + +<P><B>MPlayer</B>支持两种AVI文件的计时方式:</P> +<UL> + <LI><B>基于bps</B>: 它基于视频与音频河流的比特率/采样率。这种方法被大多数播放器使用,包括 +<A HREF="http://avifile.sourceforge.net">avifile</A>和Windows媒体播放器。这种方法对于文件头损坏的文件, +以及文件创建时使用VBR音频却没有使用VBR兼容的编码器的情况将导致A/V不同步(多半在搜索时)。</LI> + <LI><B>基于交错方式</B>: 它不使用文件头的比特率,而是使用交错的音频和视频块的相关位置,使VBR音频的编码糟糕的文件可以播放。</LI> +</UL> + +<P>任何视频和音频的编码格式都允许使用,但注意大多数播放器对VBR音频的支持都不好。文件格式允许使用VBR音频,但是大多数播放器期待CBR音频, +这样它们无法播放VBR。VBR是常见而且和微软AVI说明仅描述CBR音频。大多数AVI编码器/多路复用器在使用VBR音频时会创建坏的文件。目前已知的 +只有两个例外:NanDub和<A HREF="encoding.html">MEncoder</A>。</P> + + +<H4><A NAME="asf">2.1.1.3 ASF与WMV文件</A></H4> + +<P>ASF(active streaming format)格式来自微软。他们开发了ASF的两个变种,v1.0和v2.0. v1.0被他们的媒体工具(Windows媒体播放器和 +Windows媒体编码器)使用并且是保密的. v2.0被公开并申请专利:)。当然,他们是不同的,完全没有任何兼容性(那只是另一个法律游戏)。 +<B>MPlayer</B>只支持v1.0格式因为没有任何人见过v2.0格式的文件:)。注意,ASF文件现在常以.WMA或者.WMV的扩展名出现。</P> + + +<H4><A NAME="mov">2.1.1.4 QuickTime与MOV文件</A></H4> + +<P>这些格式是由苹果设计的,能包含任何编码格式,CBR或者VBR。他们通常使用.QT或者.MOV的扩展名。自从MPEG4组织选择QuickTime作为 +MPEG4的推荐文件格式后,他们的MOV文件以.MPG或.MP4的扩展名(有趣的是这些文件的视频和音频流是真正的MPG和AAC文件。你甚至能用 +<CODE>-dumpvideo</CODE>和<CODE>-dumpaudio</CODE>选项提取他们。)。</P> + +<P><B>注意:</B>大多数新的QuickTime文件使用<B>Sorenson</B>视频和QDesign Music音频。参见我们的<A HREF="codecs.html#sorenson"> +Sorenson</A>编码格式一节。QDesign Music音频目前不能播放。</P> + + +<H4><A NAME="vivo">2.1.1.5 VIVO文件</A></H4> + +<P><B>MPlayer</B>乐于解码VIVO文件格式。这个格式的最大缺陷在于它没有索引块,也没有一个固定的包大小或者同步字节和大多数文件 +甚至缺乏关键帧,所以别想着搜索了!</P> + +<P>VIVO/1.0文件的视频编码格式是标准的<B>h.263</B>。VIVO/2.0文件的视频编码格式是一个经过修改的,非标准的<B>h.263v2</B>。 +音频也使一样,它可以是<B>g.723</B>(标准的),或<B>Vivo Siren</B>。</P> + +<P>关于安装指导参见<A HREF="codecs.html#vivo_video">VIVO视频编码格式</A>和<A HREF="codecs.html#vivo_audio"> +VIVO音频编码格式</A>两节。</P> + + +<H4><A NAME="fli">2.1.1.6 FLI文件</A></H4> + +<P><B>FLI</B>被Autodesk Animator使用的一种很老的文件格式,但是它是网上小动画普遍使用的一种文件格式。<B>MPlayer</B> +能读取并解码FLI电影寻求在它们中搜索(当使用<CODE>-loop</CODE>选项循环播放时有用)。FLI文件没有关键帧, +因此图画在搜索后短时间内将是混乱的。</P> + + +<H4><A NAME="real">2.1.1.7 RealMedia(RM)文件</A></H4> + +<P>是的,<B>MPlayer</B>能读取(demux)RealMedia(.rm)文件。搜索功能能工作,但是你必须明确地指定<CODE>-forceidx</CODE>选项 +(这种格式支持关键帧)。这里是被支持的<A HREF="codecs.html#realvideo">RealVideo</A>和<A HREF="codecs.html#realaudio"> +RealAudio</A>编码格式的列表。</P> + + +<H4><A NAME="nuppelvideo">2.1.1.8 NuppelVideo文件</A></H4> + +<P><A HREF="http://mars.tuwien.ac.at/~roman/nuppelvideo">NuppelVideo</A>是电视截取工具(据我所知:)。<B>MPlayer</B> +能读取它的.NUV文件(只能是NuppelVideo 5.0)。那些文件能包含未压缩的YV12,压缩的YV12+RTJpeg,压缩的YV12+lzo和压缩的YV12 RTJpeg+lzo帧。 +<B>MPlayer</B>能解码所有这些格式(并且用<B>MEncoder</B>把它们<B>编码</B>成DivX/etc!)。搜索功能能工作。</P> + + +<H4><A NAME="yuv4mpeg">2.1.1.9 yuv4mpeg文件</A></H4> + +<P><A HREF="http://mjpeg.sourceforge.net">yuv4mpeg/yuv4mpeg2</A>是用于<A HREF="http://mjpeg.sf.net">mjpegtools programs +</A>的文件格式。你能用这些工具进行这种格式的视频截取,制作,过滤或编码。这种文件格式是一个非压缩的YUV 4:2:0图象序列。</P> + + +<H4><A NAME="film">2.1.1.10 FILM文件</A></H4> + +<P>这种格式用于老的世嘉土星CD-ROM游戏。</P> + + +<H4><A NAME="roq">2.1.1.11 RoQ文件</A></H4> + +<P>RoQ文件是用于ID的一些游戏例如Quake III和Return to Castle Wolfenstein的多媒体文件。</P> + + +<H4><A NAME="ogg">2.1.1.12 OGG文件</A></H4> + +<P>这是<A HREF="http://www.xiph.org">Xiphophorus</A>的一个新的文件格式。它能包含任何视频或者音频编码格式, +CBR或者VBR。要想播放它,你需要在编译<B>MPlayer</B>之前安装<CODE>libogg</CODE>和<CODE>libvorbis</CODE>。</P> + + +<H3><A NAME="audio_formats">2.1.2 音频格式</A></H3> + +<P><B>MPlayer</B>是一个<B>电影</B>播放器而不是<B>媒体</B>播放器,虽然它能播放一些音频文件(他们将在下面的 +部分中列出)。不推荐这种使用<B>MPlayer</B>的方法,你最好使用<A HREF="http://www.xmms.org">xmms</A>。</P> + + +<H4><A NAME="mp3">2.1.2.1 MP3文件</A></H4> + +<P>你可能在播放有些MP3文件时遇到问题,<B>MPlayer</B>将它们错误的检测为MPEG文件并且不能正常播放或者完全不能播放。 +如果要修正这个问题就必须放弃对有些被破坏的MPEG文件的支持,所以在可以预见的将来仍然会是这样。manpage中描述的 +<CODE>-demuxer</CODE>标签在这些情况下可能会帮助你。</P> + + +<H4><A NAME="wav">2.1.2.2 WAV文件</A></H4> + + +<H4><A NAME="ogg_vorbis">2.1.2.3 OGG文件(Vorbis)</A></H4> + +<P>要求正确的安装<CODE>libogg</CODE>和<CODE>libvorbis</CODE>。</P> + + +<H4><A NAME="wma">2.1.2.4 WMA与ASF文件</A></H4> + + +<H4><A NAME="mp4">2.1.2.5 MP4文件</A></H4> + +</BODY> +</HTML>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/DOCS/Chinese/skin.html Sat Oct 05 10:19:07 2002 +0000 @@ -0,0 +1,768 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<html> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=gb_2312-80"> +<title>制作Skin -- MPlayer -- Linux的电影播放器</title> + <link rel="stylesheet" type="text/css" href="default.css"> +<style type="text/css"> +em.note {color: green; + font-style: normal;} +em.warn {color: red; + font-style: normal;} +</style> +</head> + +<body> + +<h1 align="center">MPlayer的Skin的格式</h1> + +<hr> + +<h2>内容</h2> + +<ul type=disc> +<li><a href="#intro">1 介绍</a></li> +<li><a href="#overview">2 综述</a> + <ul type=circle> + <li><a href="#dirs">2.1 目录</a></li> + <li><a href="#images">2.2 图象</a></li> + <li><a href="#components">2.3 Skin的组成部分</a></li> + <li><a href="#files">2.4 文件</a></li> + </ul> +</li> +<li><a href="#skin">3 <code>skin</code>文件</a> + <ul type=circle> + <li><a href="#mainwin">3.1 主窗口</a></li> + <li><a href="#subwindow">3.2 副窗口</a></li> + <li><a href="#skinmenu">3.3 Skin菜单</a></li> + </ul> +</li> +<li><a href="#fonts">4 字体</a> + <ul type=circle> + <li><a href="#symbols">4.1 符号</a></li> + </ul> +</li> +<li><a href="#guimsg">附录A:GUI消息</a></li> +</ul> + +<hr> + +<div align=center> +最后修改: 2002/05/24</div> + +<hr> + +<h2><a name="intro">1 介绍</a></h2> + +本文件的目的是描述<b>MPlayer</b>的skin的格式。这里所包含的信息可能不对,因为 + +<ol type="a"> + <li>GUI不是我写的</li> + <li>GUI还没有完成</li> + <li>我可能搞错了</li> +</ol> + +因此如果某个功能与它在这里被描述的工作方式不一样,不用大惊小怪。 + +<p> +谢谢<em>Zolt醤 Ponekker</em>的帮助。 +</p> + +<p> +<em>Andr醩 Mohari <mayday@freemail.hu></em> +</p> + + +<h2><a name="overview">2 综述</a></h2> + +这虽然与skin的格式扯不上什么关系,但是你应该了解<b>MPlayer</b>有<b>没有</b>内建的皮肤, +因此<b>为了能够使用GUI必须安装至少一种皮肤。</b> + +<h3><a name="dirs">2.1 目录</a></h3> + +skin的搜索目录(按顺序)是: +<pre> + $(DATADIR)/Skin/ + $(PREFIX)/share/mplayer/Skin/ + ~/.mplayer/Skin/ +</pre> + +<p> +注意,第一个路径倚赖于<b>MPlayer</b>的安装配置(见<code>configure</code>脚本 +的<code>--prefix</code>和<code>--datadir</code>的参数)。 +</p> + +所有的skin被安装到上面列出的一个目录下的自己的目录中,例如: +<pre> + $(PREFIX)/share/mplayer/Skin/default/ +</pre> + + +<h3><a name="images">2.2 图象格式</a></h3> + +图象必须是真彩的(24或者32bpp)可以是BMP,PNG或者非压缩TGA格式。最理想的格式是PNG因为它的压缩得很好。 + +<p> +在主窗口(见下面)中你能使用包含“透明色”的图象:用颜色#FF00FF(<font color="#FF00FF">深红</font>) +填充的区域在<b>MPlayer</b>看来是完全透明的。这意味着你甚至能改变窗口外形如果你的X服务器有XShape扩展。 +</p> + + +<h3><a name="components">2.3 皮肤组成部分</a></h3> + +Skin的格式是十分自由的(不是像Winamp/XMMS的那种固定格式的皮肤),所以能不能做出些东西取决于你。 + +<p> +目前有三个要被修饰的窗口:<a href="#mainwin">主窗口</a>,<a href="#subwindow">副窗口</a>和 +<a href="#skinmenu">Skin菜单</a>(右键单击弹出)。 +</p> + +<ul> +<li> +<b>主窗口</b>是你控制<b>MPlayer</b>的地方。窗口的背景是图象。各种项目可以(而且必须)被放置在这里: +<em>按钮</em>,<em>滑动条</em>和<em>标签</em>。对于每一个项目,你都必须指定其位置和大小。 + +<p> +一个<b>按钮</b>有三种状态(按下,释放,禁止),所以按钮图象必须垂直地划分成三部分。 +细节参见<a href="#main.button">按钮</a>项目。 +</p> + +<p> +<b>滑动条</b>(主要用于搜寻条和音量/平衡控制)可以有任意多的状态只要你把图像分成上下排列的足够多份。 +细节参见<a href="#main.hpotmeter">hpotmeter</a>和<a href="#main.potmeter">potmeter</a>。 +</p> + +<p> +<b>标签</b>有一点特殊:字符需要从图象文件中绘制,而图象中的字符用<a href="#fonts">字体描述文件</a> +描述。后者一个纯文本文件规定图像中每一字符的x,y坐标和大小(图象文件和他的字体描述文件<em>共同</em> +组成一个字体)。细节参见<a href="#main.dlabel">dlabel</a>和<a href="#main.slabel">slabel</a>。 +</p> + +<p> +<em class=note> +<b>注意:</b>所有图象都能像<a href="#images">图象格式</a>一节中说明的使用透明色。 +</em> +</p> +</li> + +<li> +<b>subwindow</b>是电影显示的地方。如果没有载入电影它将显示一个指定的图象(空的窗口太无聊了:-)) +<em class=note><b>注意:</b>在这里<b>不允许</b>使用透明色。</em> +</li> + +<li> +<b>skin菜单</b>仅仅是提供一个通过菜单控制<b>MPlayer</b>的方法。菜单需要两个图象:一个是基础图象 +用来显示菜单的正常状态,另一个用来显示被选择的项目。当菜单弹出时,显示第一个图象。如果你把鼠标在 +菜单条目上移动,当前选择的项目从第二个图象中复制并覆盖到当前鼠标指针下面的菜单项目上。 +(第二个图象从来不作为整体来显示)。 +<p> +一个菜单选项用图象中的位置和大小定义(细节参见<a href="#skinmenu">skin菜单</a>)。 +</p> +</li> +</ul> + +<p> +还有一件重要的事情没有提到:为了使按钮,滑动条和菜单项工作,<b>MPlayer</b>必须知道如果他们被点击 +的话应该做什么。这是利用<a href="#guimsg">消息</a>(事件)机制完成的。对于这些项目,你必须定义当 +他们被点击时将会产生的消息。 +</p> + +<h3><a name="files">2.4 文件</a></h3> + +你需要制作下列的文件构成一个skin: +<ul> +<li> +一个配置文件称为<a href="#skin">skin</a>,告诉<b>MPlayer</b>如何将skin的不同部分放在一起, +以及如果你在窗口中某处点击的话应该做什么。 +</li> +<li>主窗口的背景图象。</li> +<li>主窗口上代表物件的图像(包括一个或更多字体描述文件用来显示标签)。</li> +<li>在副窗口中显示的图象(可选)。</li> +<li>skin菜单的两个图象(仅当你想要创建菜单时才需要他们)。</li> +</ul> + +除了skin的配置文件之外,你能给其它文件起随便什么名字(但字体描述文件必须以<code>.fnt</code>为扩展名)。 + + +<h2><a name="skin">3 <code>skin</code>文件</a></h2> + +<p> +如上所述,这是skin的配置文件。 +它是基于行的;注释行必须以'<code>;</code>'开头(只有空格和tab可以放在'<code>;</code>'之前)。 +</p> + +<p> +文件由section组成。每一段描述一个程序的skin,使用下列的形式: +</p> + +<table border=1 width="100%"><tr bgcolor=silver><td><pre> +section = <i>section name</i> +. +. +. +end +</pre></td></tr></table> + +<p> +目前只有一个程序,所以你只需要一个section: +它的名称是<b>movieplayer</b>。 +</p> + +<p> +这个段中每个窗口用下列形式的块描述: +</p> + +<table border=1 width="100%"><tr bgcolor=silver><td><pre> +window = <i>window name</i> +. +. +. +end +</pre></td></tr></table> + +<p> +其中<i>window name</i>可以是下面各字串中的一项: +</p> + +<ul> +<li><b>main</b> -- 对于主窗口</li> +<li><b>sub</b> -- 对于副窗口</li> +<li><b>menu</b> -- 对于skin菜单</li> +</ul> + +<p> +(副窗口和skin菜单块是可选的 -- 你不一定要建立菜单或者修饰副窗口 )。 +</p> + +<p> +在一个窗口的描述块内,你能用下列形式的一行定义窗口中的每一项目: +</p> + +<dl> +<dt> +<b><code>item = parameter</code></b> +</dt> +<dd> +其中<code>item</code>是定义GUI项目的类型的字串,<code>parameter</code>是一个数字或者文字值 +(或者一组用逗号分开的值的列表)。 +</dd> +</dl> + +<p> +把上述的放在一起,整个文件看起来就有点像这样: +</p> + +<table border=1 width="100%"><tr bgcolor=silver><td><pre> +section = movieplayer + window = main + ; ... items for main window ... + end + + window = sub + ; ... items for subwindow ... + end + + window = menu + ; ... items for skin menu ... + end +end +</pre></td></tr></table> + +<p> +图象文件的名称必须不带目录名 -- 图象在<code>Skin</code>目录中被搜索。你能(但是并不需要)规定扩展名。 +如果文件不存在,<b>MPlayer</b>将试图装载<code><filename>.<ext></code>文件, +<code><ext></code>可以是<code>tga</code>,<code>TGA</code>,<code>bmp</code>,<code>BMP</code>, +<code>png</code>或者<code>PNG</code>(按这个顺序尝试)。第一个匹配文件将被使用。 +</p> + +<p> +最后是一些用来定位的语句。主窗口和副窗口可以放置在屏幕的不同的角落,通过给定<code>X</code>和<code>Y</code>坐标。 +<code>0</code>代表顶端或左端,<code>-1</code>代表中心然后<code>-2</code>代表右边或底部: +</p> + +<pre> + +(0, 0)----(-1, 0)----(-2, 0) + | | | + | | | +(0,-1)----(-1,-1)----(-2,-1) + | | | + | | | +(0,-2)----(-1,-2)----(-2,-2) + +</pre> + +<table border=1 cellpadding=5 width="100%"><tr bgcolor="#ffffcc"><td> +这里有个例子可以把这个搞清楚。假设你有个叫<code>main.png</code>的图像用来做主窗口: +<blockquote> +<pre> + base = main, -1, -1 +</pre> +</blockquote> + +<b>MPlayer</b>将尝试加载<code>main</code>,<code>main.tga</code>,<code>main.TGA</code>, +<code>main.bmp</code>等等,所以将找到<code>main.png</code>。 +<br> +如果你(碰巧)写了 +<blockquote> +<pre> + base = main.bmp, -1, -1 +</pre> +</blockquote> +那么<code>main.bmp</code>,<code>main.bmp.tga</code>,<code>main.bmp.TGA</code>, +<code>main.bmp.bmp</code>将被搜索而且<b>MPlayer</b>将最终放弃搜索,因为当前目录中只有 +<code>main.png</code>没有<code>main.bmp</code>。 +</td></tr></table> + + +<h3><a name="mainwin">3.1 主窗口</a></h3> + +下面是所有能用于'<code>window = main</code>' . . . '<code>end</code>'块中的项目的列表。 + +<dl> +<dt><a name="main.base"> +<b><code>base = image, X, Y</code></b> +</a></dt> +<dd> +指定用于主窗口的背景图象。窗口将显示在屏幕上的<code>X,Y</code>位置,窗口的大小与图像相同。 +<div> +<em class=warn> +<b>警告:</b>图象中的透明区域(彩色的#FF00FF )在没有XShape扩展的X服务器上是黑色的。 +</em> +</div> +</dd> + +<dt><a name="main.button"> +<b><code>button = image, X, Y, width, height, message</code></b></a></dt> +<dd> +将一个大小为<code>width</code>*<code>height</code>的按钮放置在<code>X</code>,<code>Y</code>的位置。 +指定的<code>message</code>将在按钮被点击时产生。被<code>image</code>制定的图象必须有从上到下三个部分 +(根据按钮的可能状态),像这样: +<pre> ++------------+ +| pressed | ++------------+ +| released | ++------------+ +| disabled | ++------------+ +</pre> +</dd> + +<dt><a name="main.decoration"> +<b><code>decoration = enable|disable</code></b> +</a></dt> +<dd> +允许或禁止window manager修饰主窗口。缺省设定是<b>禁止</b>。 +</dd> + +<dt> +<a name="main.hpotmeter"> +<b> +<code>hpotmeter = button, bwidth, bheight, phases, numphases, default, X, Y, width, height, message</code> +</b> +</a> +</dt> +<dd> +在<code>X</code>,<code>Y</code>位置放置一个大小为<code>width</code>*<code>height</code>的水平滑动条。 +所用的图象可以划分成不同的部分用来显示滑动条的不同状态(例如,你能做一个音量滑动条,当音量从最小变到最大时, +滑动条的颜色从绿色变成红色。)。<code>hpotmeter</code>可以有一个能被水平拖曳的按钮。 + +<div>参数是:</div> + +<ul> +<li><code>button</code> -- 用于按钮的图像(必须有从上到下三部分,跟<a href="#main.button">button</a>中一样)</li> +<li><code>bwidth</code>,<code>bheight</code> -- 按钮的大小</li> +<li><code>phases</code> -- 用于hpotmeter的不同的状态的图象。如果你想不要这样的图象可以使用一个特殊的值<code>NULL</code>。 +图象必须像这样被垂直划分成<code>numphases</code>个部分: +<pre> ++------------+ +| phase #1 | ++------------+ +| phase #2 | ++------------+ + ... ++------------+ +| phase #n | ++------------+ +</pre> +</li> +<li><code>numphases</code> -- <code>phase</code>图象中储存的状态的数量</li> +<li><code>default</code> -- hpotmeter的缺省值(范围0到100)</li> +<li><code>X</code>,<code>Y</code> -- hpotmeter的位置</li> +<li><code>width</code>,<code>height</code> -- <code>hpotmeter</code>的宽度和高度</li> +<li><code>message</code> -- 当<code>hpotmeter</code>的值改变时产生的消息</li> +</ul> + +<em class=note><b>注意:</b>将来也会有一个<code>vpotmeter</code>项目,但是它目前还没有被实现。 +</em> +</dd> + +<dt><a name="main.potmeter"> +<b><code>potmeter = phases, numphases, default, X, Y, width, height, message</code></b> +</a></dt> +<dd> +没有按钮的<code>hpotmeter</code>。(我猜它是用来旋转,但它只对水平拖拽作出反应)。 +描述参数参见<a href="#main.hpotmeter">hpotmeter</a>。<code>phases</code>能设为<code>NULL</code>, +但这实在没什么用处,因为那样你就看不到<code>potmeter</code>在哪里了。 +</dd> + +<dt><a name="main.font"> +<b><code>font = fontfile, fontid</code></b> +</a></dt> +<dd> +定义一个字体。<code>fontfile</code>是以<code>.fnt</code>为扩展名的字体描述文件的名字(<b>不要</b>加上扩展名)。 +<code>fontid</code>用来代表这种字体(见<a href="#main.dlabel">dlabel</a>和<a href="#main.slabel">slabel</a>)。 +可以定义25个字体。 +</dd> + +<dt><a name="main.slabel"> +<b><code>slabel = X, Y, fontid, "text"</code></b> +</a></dt> +<dd> +在<code>X</code>,<code>Y</code>位置放置一个静态的标签。<code>text</code>将用<code>fontid</code>代表的字体显示。 +text只能是无格式文本(<code>$x</code>之类的变量不起作用)而且必须封在一对双引号中(但是<code>"</code>字符不能是text的一部分)。 +标签使用由<code>fontid</code>代表的字体显示。 +</dd> + +<dt><a name="main.dlabel"> +<b><code>dlabel = X, Y, length, align, fontid, "text"</code></b> +</a></dt> +<dd> +在<code>X</code>,<code>Y</code>位置放置一个动态的标签。标签被称为动态的,因为它的text周期性地刷新。标签的最大限度长度由 +<code>leghth</code>给定(它的高度是字符的高度)。如果将要显示的text比给定的宽度宽,它将滚动显示,否则它将在指定的空间之内按 +<code>align</code>参数的值对齐显示:<code>0</code>表示靠右对齐,<code>1</code>表示居中对齐,<code>2 </code>表示靠左对齐。 +<br> +要显示的文本由<code>text</code>给定:text必须封在一对双引号中(但是<code>"</code>字符不能是text的一部分)。标签使用由 +<code>fontid</code>代表的字体显示。你能在文本中使用下列变量: + +<table align="center" border="1"> +<tr align=center><th>Variable</th><th align=left>Meaning</th></tr> +<tr><td align=center><kbd>$1</kbd></td> + <td><em>hh:mm:ss</em>格式的播放时间</td></tr> +<tr><td align=center><kbd>$2</kbd></td> + <td><em>mmmm:ss</em>格式的播放时间</td></tr> +<tr><td align=center><kbd>$3</kbd></td> + <td><em>hh</em>(小时)格式的播放时间</td></tr> +<tr><td align=center><kbd>$4</kbd></td> + <td><em>mm</em>(分)格式的播放时间</td></tr> +<tr><td align=center><kbd>$5</kbd></td> + <td><em>ss</em>(秒)格式的播放时间</td></tr> +<tr><td align=center><kbd>$6</kbd></td> + <td><em>hh:mm:ss</em>格式的电影长度</td></tr> +<tr><td align=center><kbd>$7</kbd></td> + <td><em>mmmm:ss</em>格式的电影长度</td></tr> +<tr><td align=center><kbd>$8</kbd></td> + <td><em>h:mm:ss</em>格式的电影长度</td></tr> +<tr><td align=center><kbd>$v</kbd></td> + <td><em>xxx.xx%</em>格式的音量</td></tr> +<tr><td align=center><kbd>$V</kbd></td> + <td><em>xxx.x</em>格式的音量</td></tr> +<tr><td align=center><kbd>$b</kbd></td> + <td><em>xxx.xx%</em>格式的声道平衡</td></tr> +<tr><td align=center><kbd>$B</kbd></td> + <td><em>xxx.x</em>格式的声道平衡</td></tr> +<tr><td align=center><kbd>$$</kbd></td> + <td><kbd>$</kbd>字符</td></tr> +<tr><td align=center><kbd>$a</kbd></td> + <td>一个代表音频格式的字母(none: <code>n</code>,mono: <code>m</code>,stereo: <code>t</code>)</td></tr> +<tr><td align=center><kbd>$t</kbd></td> + <td>track号(在播放列表中)</td></tr> +<tr><td align=center><kbd>$o</kbd></td> + <td>文件名</td></tr> +<tr><td align=center><kbd>$f </kbd></td> + <td>小写格式文件名</td></tr> +<tr><td align=center><kbd>$F </kbd></td> + <td>大写格式文件名</td></tr> +<tr><td align=center><kbd>$T</kbd></td> + <td>一个代表媒体流类型的字幕(文件: <code>f</code>,Video CD: <code>v</code>,DVD: <code>d</code>,URL: <code>u</code>)</td></tr> +<tr><td align=center><kbd>$p</kbd></td> + <td>"p"字符(如果电影正在播放并且字体中有"p"这个字符)</td></tr> +<tr><td align=center><kbd>$s </kbd></td> + <td>"s"字符(如果电影停止播放并且字体中有"s"这个字符)</td></tr> +<tr><td align=center><kbd>$e</kbd></td> + <td>"e"字符(如果playback被暂停并且字体中有"e"这个字符)</td></tr> +</table> + +<em class="note"> +<b>注意:</b><kbd>$a</kbd>,<kbd>$T</kbd>,<kbd>$p</kbd>,<kbd>$s</kbd>和<kbd>$e</kbd>变量都返回应该被显示作为特殊的符号 +(例如,"e"通常代表像<code>||</code>这样的暂停符号)的字符。你应该有一个正常字符的字体以及另一个用于符号的不同的字体。 +更多信息参见<a href="#symbols">符号</a>部分。 +</em> +</dd> +</dl> + + +<h3><a name="subwindow">3.2 副窗口</a></h3> + +下列的项目能用于'<code>window = sub</code>' . . . '<code>end</code>'块。 + +<dl> +<dt><a name="sub.base"> +<b><code>base = image, X, Y, width, height</code></b> +</a></dt> +<dd> +在副窗口中将要显示的图象。窗口将在屏幕给定的<code>X</code>,<code>Y</code>位置出现(<code>0,0 </code>是左上角)。 +你能用<code>-1</code>指定中心<code>-2</code>指定右边(<code>X</code>)和底部(<code>Y</code>)。窗口将和图象一样大。 +<code>width</code>和<code>height</code>指定窗口的大小; 他们是可选的(如果没有他们,窗口是与图象同样的大小)。 +</dd> + +<dt><a name="sub.background"> +<b><code>background = R, G, B</code></b> +</a></dt> +<dd> +让你设置背景颜色。它在图象小于窗口时有用。 +<code>R</code>,<code>G</code>和<code>B</code>规定颜色的的红,绿和蓝色的组成部分(它们中每一个都是从0到255的十进制数字)。 +</dd> +</dl> + + +<h3><a name="skinmenu">3.3 skin菜单</a></h3> + +如前所述,菜单用两个图象显示。 +正常的菜单条目从<code>base</code>项指定的图象中获得,当前选择的条目则从<code>selected</code>项指定的图象中获得。 +你必须通过<code>menu</code>项定义每个菜单条目的位置和大小。 + +<p> +这些是能用于'<code>window = menu</code>'. . . '<code>end</code>'之间的项目。 +</p> + +<dl> +<dt><a name="menu.base"> +<b><code>base = image</code></b> +</a></dt> +<dd> +正常的菜单条目的图象。 +</dd> + +<dt><a name="menu.selected"> +<b><code>selected = image</code></b> +</a></dt> +<dd> +所有条目都被选择的菜单的图象。 +</dd> + +<dt><a name="menu.menu"> +<b><code>menu = X, Y, width, height, message</code></b> +</a></dt> +<dd> +定义图像中一个菜单条目的<code>X,Y</code>位置和大小。当鼠标在该条目上被释放时产生<code>message</code>消息。 +</dd> +</dl> + + +<h2><a name="fonts">4 字体</a></h2> + +就象在关于skin的各部分的一节中论及的,字体由一个图象和一个描述文件定义。你能将字符放置在图象中的任何地方, +但是必须确保他们的位置和大小被精确的提交给描述文件。 + +<p> +字体描述文件随着(以<code>.fnt</code>为扩展名)能有以'<code>;</code>'开始的注释行。文件必须有像这样的行</p> + +<dl> +<dt><a name="font.image"> +<b><code>image = image</code></b> +</a></dt> +<dd> +其中<code>image</code>是用于字体的图象文件的名字(你不必制定扩展名)。 +</dd> + +<dt><a name="font.char"> +<b><code>"char" = X, Y, width, height</code></b> +</a></dt> +<dd> +这里<code>X</code>和<code>Y</code>指定<code>char</code>字符在图象中的位置(<code>0,0</code>表示左上角)。 +<code>width</code>和<code>height</code>是字符的尺寸,以象素为单位。 +</dd> +</dl> + +这个例子中用<code>font.png</code>定义A,B,C三个字符。 +<table width="100%" border=1><tr bgcolor=silver><td><pre> +; Can be "font" instead of "font.png". +image = font.png + +; Three characters are enough for demonstration purposes :-) +"A" = 0,0, 7,13 +"B" = 7,0, 7,13 +"C" = 14,0, 7,13 +</pre></td></tr></table> + + +<h3><a name="symbols">4.1 符号</a></h3> + +<a href="#main.dlabel">dlabel</a>中使用的一些变量返回的一些字符有特殊的意义。这些字符应该被显示为符号, +使得播放DVD时显示一个漂亮的DVD logo而不是字符‘d’。 + +<p> +下列的表格列出所有能被用来显示符号的字符(所以要求另一种字体)。 +</p> + +<table align="center" border="1"> +<tr><th align=center>字符</th><th align=left>符号</th></tr> +<tr><td align=center><kbd>p</kbd></td> + <td align=left>播放</td></tr> +<tr><td align=center><kbd>s</kbd></td> + <td align=left>停止</td></tr> +<tr><td align=center><kbd>e</kbd></td> + <td align=left>暂停</td></tr> +<tr><td align=center><kbd>n</kbd></td> + <td align=left>无声</td></tr> +<tr><td align=center><kbd>m</kbd></td> + <td align=left>单声道</td></tr> +<tr><td align=center><kbd>t</kbd></td> + <td align=left>立体声</td></tr> +<tr><td align=center><kbd>f</kbd></td> + <td align=left>媒体流是文件</td></tr> +<tr><td align=center><kbd>v</kbd></td> + <td align=left>媒体流是Video CD</td></tr> +<tr><td align=center><kbd>d</kbd></td> + <td align=left>媒体流是DVD</td></tr> +<tr><td align=center><kbd>u</kbd></td> + <td align=left>媒体流是URL</td></tr> +</table> + +<p> +<em class="note"><b>注意:</b>当前只有'p', 's', 'e', 'n', 'm'和't'能被使用。 +</em></p> + +<h2><a name="guimsg">附录A: GUI信息</a></h2> + +这些是能被按钮,滑动条和菜单项产生的消息。 + +<p> +<em class=note><b>注意:</b>一些信息可能不像所预想的那样工作(或者根本不工作)。你也知道,GUI还在开发中。</em></p> + + +<h3>Playback控制:</h3> +<blockquote> +<dl> +<dt><b>evNext</b> +<dd>跳到播放列表中下一个track。 + +<dt><b>evPause</b> +<dd>暂停播放。 + +<dt><b>evPauseSwitchToPlay</b> +<dd>与<code>evPlaySwitchToPause</code>一起形成开关。他们能用来实现普通的播放/暂停按钮。两条信息应该被分配到 +窗口中同一位置的两个按钮上。这条信息暂停播放并使<code>evPlaySwitchToPause</code>按钮的图象显示出来(表明点击按钮能继续播放)。 + +<dt><b>evPlay</b> +<dd>开始播放。 + +<dt><b>evPlaySwitchToPause</b> +<dd>与<code>evPauseSwitchToPlay</code>对应的消息。这条信息开始播放并使<code>evPauseSwitchToPlay</code> +按钮的图象显示出来(表明点击按钮能暂停播放)。 + +<dt><b>evPrev</b> +<dd>跳到播放列表中上一个track。 + +<dt><b>evStop</b> +<dd>停止播放。 +</dl> +</blockquote> + + +<h3>搜索:</h3> +<blockquote> +<dl> +<dt><b>evBackward10sec </b> +<dt><b>evBackward1min </b> +<dt><b>evBackward10min </b> +<dd>向后搜索10秒/1分钟/10分钟。 + +<dt><b>evForward10sec</b> +<dt><b>evForward1min</b> +<dt><b>evForward10min</b> +<dd>向前搜索10秒/1分钟/10分钟。 + +<dt><b>evSetMoviePosition </b> +<dd>搜索到制定位置(能被滑动条使用;使用与滑动条相关的值( 0-100% ))。 +</dl> +</blockquote> + + +<h3>视频控制:</h3> +<blockquote> +<dl> +<dt><b>evDoubleSize化</b> +<dd>把电影窗口置为双倍大小。 + +<dt><b>evFullScreen </b> +<dd>切换全屏方式。 + +<dt><b>evNormalSize化</b> +<dd>把电影窗口置为正常大小。 +</dl> +</blockquote> + + +<h3>音频控制:</h3> +<blockquote> +<dl> +<dt><b>evDecAudioBufDelay</b> +<dd>减少音频缓冲延迟。 + +<dt><b>evDecBalance</b> +<dd>减少声道平衡。 + +<dt><b>evDecVolume</b> +<dd>减少音量。 + +<dt><b>evIncAudioBufDelay</b> +<dd>增加音频缓冲延迟。 + +<dt><b>evIncBalance</b> +<dd>增加声道平衡。 + +<dt><b>evIncVolume</b> +<dd>增加音量。 + +<dt><b>evMute</b> +<dd>禁音/取消禁音。 + +<dt><b>evSetBalance</b> +<dd>设置声道平衡(能被滑动条使用;使用与滑动条相关的值( 0-100% ))。 + +<dt><b>evSetVolume</b> +<dd>设置音量(能被滑动条使用;使用与滑动条相关的值( 0-100% ))。 +</dl> +</blockquote> + + +<h3>其他:</h3> +<blockquote> +<dl> +<dt><b>evAbout</b> +<dd>打开关于窗口。 + +<dt><b>evEqualizer</b> +<dd>打开/关闭均衡器。 + +<dt><b>evExit</b> +<dd>退出程序。 + +<dt><b>evIconify</b> +<dd>窗口图标化。 + +<dt><b>evLoad</b> +<dd>装载文件(打开一个文件浏览窗口,你能在其中选择文件)。 + +<dt><b>evLoadPlay</b> +<dd>功能与<code>evLoad</code>一样,但是它在文件之后装载自动地开始播放。 + +<dt><b>evNone</b> +<dd>空信息,它没有效果(也许CVS版本除外:-))。 + +<dt><b>evPlayList</b> +<dd>打开/关闭播放列表窗口。 + +<dt><b>evPreferences</b> +<dd>打开选项设置窗口。 + +<dt><b>evSkinBrowser</b> +<dd>打开skin浏览器窗口。 +</dl> +</blockquote> + +</body> +</html>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/DOCS/Chinese/sound.html Sat Oct 05 10:19:07 2002 +0000 @@ -0,0 +1,230 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<HTML> + +<HEAD> + <TITLE>声音-- MPlayer -- Linux的电影表演者</TITLE> + <LINK REL="stylesheet" TYPE="text/css" HREF="default.css"> + <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=gb_2312-80"> +</HEAD> + +<BODY> + + +<H3><A NAME="audio">2.3.2 音频输出设备</A></H3> + +<P><B>MPlayer</B>的音频接口称为<I>libao2</I>。它目前包含这些驱动:</P> + +<TABLE BORDER=0> + <TR><TD COLSPAN=4><P><B>一般:</B></P></TD></TR> + <TR><TD> </TD><TD VALIGN=top>oss</TD><TD> </TD><TD>OSS(ioctl)驱动(支持硬件AC3中转)</TD></TR> + <TR><TD></TD><TD VALIGN=top>sdl</TD><TD></TD><TD>SDL驱动(支持升/降采样率,<B>ESD</B>,<B>ARTS</B>等等)</TD></TR> + <TR><TD></TD><TD VALIGN=top>nas</TD><TD></TD><TD>NAS(Network Audio System)驱动</TD></TR> + <TR><TD></TD><TD VALIGN=top>alsa5</TD><TD></TD><TD>本地的ALSA 0.5驱动</TD></TR> + <TR><TD></TD><TD VALIGN=top>alsa9</TD><TD></TD><TD>本地的ALSA 0.9驱动(支持硬件AC3中转)</TD></TR> + <TR><TD></TD><TD VALIGN=top>sun</TD><TD></TD><TD>BSD和Solaris8用户的SUN音频驱动(<CODE>/dev/audio</CODE>)</TD></TR> + <TR><TD></TD><TD VALIGN=top>arts</TD><TD></TD><TD>本地的ARTS驱动(主要针对KDE用户)</TD></TR> +</TABLE> + +<P>事实上,Linux声卡驱动有兼容问题。<B>可能</B>需要一定时间找到你最理想的设置。</P> + +<UL> + <LI>如果你有OSS驱动,先尝试<CODE>-ao oss</CODE>(这是默认的)。如果你遇到毛刺,停止或者任何不正常的事情, +尝试<CODE>-ao sdl</CODE>(注意:你需要安装SDL库和头文件)。许多情况下SDL的音频驱动都会有帮助,也支持ESD, +ARTS,和升/降采样率。(ESD是GNOME的音频守护进程,ARTS是KDE的)。</LI> + <LI>如果你使用ALSA 0.5的版本,那么你几乎总是不得不使用<CODE>-ao alsa5</CODE>,因为ALSA 0.5的OSS仿真很buggy, +会导致<B>MPlayer崩溃</B>并出现这样的信息:<BR> + <CODE>DEMUXER: Too many (945 in 8390980 bytes) video packets in the buffer!</CODE></LI> + <LI>如果你使用ALSA 0.9的版本,你能在<CODE>-ao oss</CODE>和<CODE>-ao sdl</CODE>之间选择。你也能使用<CODE>-ao alsa9 </CODE>。它能工作, +但是可能出现不同步或者声音消失之类的问题。</LI> +</UL> + +<P>在<B>Solaris和FreeBSD</B>系统上,用<CODE>-ao sun</CODE>选项使用SUN的音频驱动,否则视频音频都无法工作。</P> + + +<H4><A NAME="experiences">2.3.2.1 声卡体验,推荐</A></H4> + +<TABLE BORDER=0 WIDTH="100%"> + <TR><TD COLSPAN=3><B>VIA板载芯片(via82cxxx)只能48kHz</B></TD></TR> + <TR><TD></TD><TD>驱动:</TD><TD>在<A HREF="http://sourceforge.net/project/showfiles.php?group_id=3242&release_id=59602">sourceforge.net</A></TD></TR> + + <TR><TD COLSPAN=3><B>Aureal Vortex 2 </B></TD></TR> + <TR><TD> </TD><TD>OSS:</TD><TD>没有驱动</TD></TR> + <TR><TD></TD><TD>OSS/Pro:</TD><TD>OK</TD></TR> + <TR><TD></TD><TD>ALSA:</TD><TD>没有驱动</TD></TR> + <TR><TD></TD><TD>Max kHz:</TD><TD>48</TD></TR> + <TR><TD></TD><TD>驱动:</TD><TD><A HREF="http://aureal.sourceforge.net">aureal.sourceforge.net </A></TD></TR> + <TR><TD></TD><TD>驱动2:</TD><TD>在<A HREF="http://makacs.poliod.hu/~pontscho/aureal/au88xx-1.1.3.tar.bz2">Pontscho的主页</A><BR> + (<I>缓冲大小增加到32k</I>)</TD></TR> + + <TR><TD COLSPAN=3><B>GUS PnP</B></TD></TR> + <TR><TD></TD><TD>OSS:</TD><TD>没有驱动</TD></TR> + <TR><TD></TD><TD>OSS/Pro:</TD><TD>OK</TD></TR> + <TR><TD></TD><TD>ALSA:</TD><TD>OK</TD></TR> + <TR><TD></TD><TD>Max kHz:</TD><TD>48</TD></TR> + + <TR><TD COLSPAN=3><B>SB Live!</B></TD></TR> + <TR><TD></TD><TD>OSS:</TD><TD>模拟方式很好,SP与DIF不能工作</TD></TR> + <TR><TD></TD><TD>ALSA:</TD><TD>两个都很好</TD></TR> + <TR><TD></TD><TD>Max kHz:</TD><TD>192</TD></TR> + + <TR><TD COLSPAN=3><B>SB AWE 64</B></TD></TR> + <TR><TD></TD><TD>OSS:</TD><TD>max 44kHz</TD></TR> + <TR><TD></TD><TD>ALSA:</TD><TD>48kHz听起来很糟</TD></TR> + <TR><TD></TD><TD>Max kHz:</TD><TD>48</TD></TR> + + <TR><TD COLSPAN=3><B>Gravis UltraSound ACE</B></TD></TR> + <TR><TD></TD><TD>OSS:</TD><TD>不是很好</TD></TR> + <TR><TD></TD><TD>ALSA:</TD><TD>OK</TD></TR> + <TR><TD></TD><TD>Max kHz:</TD><TD>44</TD></TR> + + <TR><TD COLSPAN=3><B>Gravis UltraSound MAX</B></TD></TR> + <TR><TD></TD><TD>OSS:</TD><TD>OK</TD></TR> + <TR><TD></TD><TD>ALSA:</TD><TD>OK(?)</TD></TR> + <TR><TD></TD><TD>Max kHz:</TD><TD>48</TD></TR> + + <TR><TD COLSPAN=3><B>ESS 688</B></TD></TR> + <TR><TD></TD><TD>OSS:</TD><TD>OK</TD></TR> + <TR><TD></TD><TD>ALSA:</TD><TD>OK(?)</TD></TR> + <TR><TD></TD><TD>Max kHz:</TD><TD>48</TD></TR> + + <TR><TD COLSPAN=3><B>C-Media声卡(那种?)</B></TD></TR> + <TR><TD></TD><TD>OSS:</TD><TD>不是很好(有嘶嘶声) (?)</TD></TR> + <TR><TD></TD><TD>ALSA:</TD><TD>OK(?)</TD></TR> + <TR><TD></TD><TD>Max kHz:</TD><TD>?</TD></TR> + + <TR><TD COLSPAN=3><B>Yamaha声卡(*ymf*) </B></TD></TR> + <TR><TD></TD><TD>OSS:</TD><TD>不是很好(?)(<CODE>-ao sdl</CODE>)</TD></TR> + <TR><TD></TD><TD>ALSA:</TD><TD>仅在使用ALSA 0.5的OSS仿真<B>和</B><CODE>-ao sdl</CODE>(!)(?)时很好</TD></TR> + <TR><TD></TD><TD>Max kHz:</TD><TD>?</TD></TR> + + <TR><TD COLSPAN=3><B>使用envy24芯片(Terratec EWS88MT之类)的声卡</B></TD></TR> + <TR><TD></TD><TD>OSS:</TD><TD>?</TD></TR> + <TR><TD></TD><TD>OSS/Pro:</TD><TD>OK</TD></TR> + <TR><TD></TD><TD>ALSA:</TD><TD>?</TD></TR> + <TR><TD></TD><TD>Max kHz:</TD><TD>?</TD></TR> + + <TR><TD COLSPAN=3><B>PC Speaker或者DAC</B></TD></TR> + <TR><TD></TD><TD>OSS:</TD><TD>OK(使用SDL驱动:<CODE>-ao sdl</CODE>)</TD></TR> + <TR><TD></TD><TD>ALSA:</TD><TD>没有驱动</TD></TR> + <TR><TD></TD><TD>Max kHz:</TD><TD>驱动模拟44.1,也许更高。</TD></TR> + <TR><TD></TD><TD>驱动:</TD><TD><A HREF="ftp://ftp.infradead.org/pub/pcsp">ftp://ftp.infradead.org/pub/pcsp</A></TD></TR> +</TABLE> + +<P>在Linux上,高度推荐2.4.x的内核。2.2的内核没有经过测试。</P> + +<P>如果从CD-ROM播放时声音跳跃,开启IRQ unmasking,例如。<CODE>hdparm -u1 /dev/cdrom</CODE>(<CODE>man hdparm</CODE>)。 +这在大多数情况下有好处,更详细的描述在<A HREF="cd-dvd.html#drives">CD-ROM部分</A>。</P> + +<P>与另一个像XMMS一样的程序共享你的声卡是<B>强烈不推荐的</B>!如果其它音频程序使用ESD,用<CODE>-vo sdl:esd</CODE>选项 +启动<B>MPlayer</B>可以把两个音频流混合起来。事实上,选项<CODE>-vo sdl:esd</CODE>甚至在单独播放<B>Mplayer</B>时也可以对ESD使用。</P> + +<P>对这个文件的反馈是受欢迎的。请告诉我们你的声卡是如何与<B>MPlayer</B>共同工作的。</P> + + +<H4><A NAME="插件s">2.3.2.2 音频插件</A></H4> + +<P><B>MPlayer</B>支持音频插件。音频插件s用于在声音到达声卡之前改变音频数据的属性。他们用<CODE>-aop</CODE>开关加上 +<CODE>list=插件1,插件2,...</CODE>参数打开。必须有<CODE>list</CODE>参数用来确定应该使用哪些插件,以及他们执行的顺序。例如:</P> + +<P> <CODE>mplayer media.avi -aop list=resample,format</CODE></P> + +<P>将让声音先通过重新采样插件然后再经过格式化插件。</P> + +<P>插件也有改变他们行为的开关。这些开关在下面将详细地解释。如果开关被省略,插件将按照默认设置运行。 +这是一个关于如何组合使用指定参数的插件的例子:</P> + +<P> <CODE>mplayer media.avi -aop + list=resample,format:fout=44100:format=0x8</CODE></P> + +<P>这将会将重新采样插件的输出频率设为44100Hz格式化插件的输出格式设置为AFMT-U8。</P> + +<P>目前音频插件不能用于<B>MEncoder</B>。</P> + + +<H5><A NAME="resample">2.3.2.2.1 升/降采样率</A></H5> + +<P><B>MPlayer</B>完全支持对声音升/降采样率。如果你使用固定采样率的声卡或者如果你被只兼容 +最大44.1kHz的老声卡郁闷时可以使用这个插件。你硬件的限制是不能自动检测的,因此你必须明确地规定采样频率。 +这个插件有一个参数:<CODE>fout</CODE>用于设置期望的输出的采样率。默认是48kHz,单位是<Hz>。</P> + +<P>用法:<BR> + <CODE>mplayer media.avi -aop list=resample:fout=<required + frequency in Hz, like 44100></CODE></P> + +<P>注意输出频率不能从默认值升高。因为升高会导致音频和视频流播放缓慢而且音频也会扭曲。</P> + + +<H5><A NAME="surround_decoding">2.3.2.2.2 环绕音效解码</A></H5> + +<P><B>MPlayer</B>有一个能解码矩阵编码的环绕音效的音频插件。杜比环绕是矩阵编码格式的一个例子。 +大多数2通道音频的文件实际上包含了矩阵编码的环绕音效。为使用这个特性你需要至少支持4个声道的声卡。</P> + +<P>用法:<BR> + <CODE>mplayer media.avi -aop list=surround</CODE></P> + + +<H5><A NAME="format">2.3.2.2.3 采样格式转换</A></H5> + +<P>如果你的声卡驱动不支持带符号的16位<CODE>int</CODE>数据类型,这个插件能被用来把它转换为一个你的 +声卡能理解的格式。它有一个参数,<CODE>format</CODE>,可以设置为你在<CODE>libao2/afmt.h</CODE>中找到的数字。 +这个插件几乎很少会用到而且是面向高级用户的。记住这个插件仅仅改变采样格式而不改变采样频率或者声道数。</P> + +<P>用法:<BR> + <CODE>mplayer media.avi -aop + list=format:format=<required output format></CODE></P> + + +<H5><A NAME="delay">2.3.2.2.4 延迟</A></H5> + +<P>这个插件将声音延迟,被计划当做如何开发新的插件的例子。它不能用于任何以用户观点来说有用的东西, +在这里被提到只是为了完整的缘故。不要使用这个插件除非你是开发者。</P> + + +<H5><A NAME="volume">2.3.2.2.5 软件音量控制</A></H5> + +<P>这个插件是音量控制功能的软件替代,用于哪些使用蹩脚的混音设备的机器。如果你想要改变<B>MPlayer</B> +的输出音量而不改变混音器中PCM音量的设置也可以使用这个插件。它有一个<CODE>volume</CODE>参数初始的音量水平。 +初始音量水平能取0到255之间的值,默认值是101相当于放大0分贝。谨慎使用这个插件因为它会降低声音的信噪比。 +在大多数情况下最好是把PCM音量设为最大是,放弃这个插件并且通过混音器的主音量控制来控制你的扬声器输出水平。 +如果有连接到计算机的外部功放(这几乎是普遍情况),噪音水平能通过调整在主音量级别和功放上的旋钮而最大限度的减少, +直到去除嘶嘶的背景噪音。</P> + +<P>Usage:<BR> + <CODE>mplayer media.avi -aop + list=volume:volume=<0-255></CODE></P> + +<P>这插件也有压缩器或称为“软控制”的功能。 + 压缩用于声音的动态范围十分高或者如果扬声器的动态范围十分低的的情况。注意这个特性将造成扭曲并且应该 +是最后一种被考虑的手段。</P> + +<P>Usage:<BR> + <CODE>mplayer media.avi -aop + list=volume:softclip</CODE></P> + + +<H5><A NAME="extrastereo">2.3.2.2.6 加强立体声</A></H5> + +<P>这个插件(线性地)增加左右声道的差别(像XMMS的extrastereo插件一样)使回放产生某种“现场”效果。</P> + +<P>Usage:<BR> + <CODE>mplayer media.avi -aop list=extrastereo</CODE><BR> + <CODE>mplayer media.avi -aop list=extrastereo:mul=3.45</CODE></P> + +<P>默认参数(<CODE>mul</CODE>)是默认值为2.5的浮点数。如果你把它设置到0.0,你将获得单声道(两个声道的平均值)。 +如果你把它设置到1.0,声音不变,如果你把它设置为-1.0,左右声道将被交换。</P> + + +<H5><A NAME="normalizer">2.3.2.2.7 音量正则化</A></H5> + +<P>这个插件能没有变形的最大化音量。</P> + +<P>用法:<BR> + <CODE>mplayer media.avi -aop list=volnorm</CODE><BR> + + +<H5><A NAME="surround">2.3.2.2.8 环绕</A></H5> + +<P>谁应该在什么时候写点什么。</P> + +</BODY> +</HTML>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/DOCS/Chinese/users_against_developers.html Sat Oct 05 10:19:07 2002 +0000 @@ -0,0 +1,117 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<HTML> + +<HEAD> + <TITLE>开发者的痛楚 -- MPlayer -- Linux的电影播放器</TITLE> + <LINK REL="stylesheet" TYPE="text/css" HREF="default.css"> + <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=gb_2312-80"> +</HEAD> + +<BODY> + + +<H1>附录 E -- 开发者的痛楚</H1> + +<P>总在<A HREF="http://mplayerhq.hu/pipermail/mplayer-users/">mplayer-users</A>邮件列表上引起巨大争吵和怒火的主题主要有两个。第一个主题是关于</P> + + +<H2><A NAME="gcc">GCC 2.96</A></H2> + +<P><B>背景:</B>GCC<B>2.95</B>系列是GNU官方发行版而GCC的2.95.3版本是这个系列中bug最少的。我们从来没有遇到过可以归罪于GCC 2.95.3的编译问题。 +从RedHat Linux 7.0开始,<B>Red Hat</B>在他们的发行版里包括了一个打满补丁的CVS版本的GCC,命名为<B>2.96</B>。Red Hat在他的发行版中包括这个版本是因为 +当时GCC 3.0还没有完成,而他们需要一个在所有他们支持的平台上,包括IA64和s390都正常工作的编译器。Linux发行版<B>Mandrake</B>也照着Red Hat的例子开始 +在他们的Linux-Mandrake 8.0系列中搭载GCC 2.96。</P> + +<P><B>声明:</B>GCC小组否认于GCC 2.96有任何联系并对GCC 2.96发表了一份<A HREF="http://gcc.gnu.org/gcc-2.96.html">官方回应</A>。世界各地的开发者 +开始遇到GCC 2.96的问题,并开始推荐其他的编译程序。 +<A HREF="http://www.apachelabs.org/apr-mbox/200106.mbox/%3c20010623194228.C25512@ebuilt.com%3e">Apache</A>, +<A HREF="http://www.mysql.com/downloads/mysql-3.23.html">MySQL</A>,<A HREF="http://avifile.sourceforge.net/news-old1.htm">avifile</A>和 +<A HREF="http://www.winehq.com/news/?view=92#RH%207.1%20gcc%20fixes%20compiler%20bug">Wine</A>。 +其他你会感兴趣的链接有: +<A HREF="http://www.realtimelinux.org/archives/rtai/20017/0144.html">Real time Linux</A>, +<A HREF="http://www.atnf.csiro.au/people/rgooch/linux/docs/kernel-newsflash.html">Linux kernel news flash about kernel 2.4.17</A>和 +<A HREF="http://www.voy.com/3516/572.html">Voy Forum</A>。 +<B>MPlayer</B>同样经受这些时有时无的只要换个不同版本的GCC就可以全部解决的问题。有些项目开始为一些2.96的问题实现绕过的方法,但是我们拒绝修正别人的bug, +尤其是其中一些绕过的方法意味着降低性能。</P> + +<P>你能<A HREF="http://www.bero.org/gcc296.html">在这个站点</A>的读到故事的另一面。GCC 2.96不允许在汇编程序中出现|(管道)字符因为它同时支持 +Intel和AT&T的语法而|字符在Intel版本中是个符号。问题是它<B>一声不吭</B>的忽略了整个汇编程序块。这个问题现在应该被修正了,GCC会显示一个警告 +而不是直接跳过。</P> + +<P><B>现状:</B>Red Hat说2.96-85以上的GCC都已经修正了。情况确实好了很多,但我们在我们的邮件列表里仍然遇到一些换了编译器之后就不存在了的问题。 +在任何情况下它都不再重要了。希望一个成熟的GCC 3.x将很好的解决这个问题。如果你想要用2.96编译的话在configure的时候加上<CODE>--disable-gcc-checking</CODE> +标记。记住你要自己负责而且<B>不要报告任何bug</B>。如果你报告,你只会被我们的邮件列表封掉,因为对于GCC 2.96我们已经有够多的争吵了。请让它平息下来。</P> + +<P>如果你的GCC 2.96有问题,你能从Red Hat的<A HREF="ftp://updates.redhat.com">ftp服务器</A>得到2.96-85的包,或者直接去找7.2或更高版本里面提供的 +3.0.4的包。你也能用<A HREF="ftp://people.redhat.com/jakub/gcc3/3.1-1/">gcc-3.1的包</A>(非官方的,但是工作地不错)和你能把他们跟你已经有的2.96 +装在一起。MPlayer检测到它并且使用3.1取代2.96。如果你不想要或者无法使用二进制包,下面教你怎么从源代码编译GCC 3.1:</P> + +<OL> + <LI>去<A HREF="http://gcc.gnu.org/mirrors.html">GCC mirrors page</A>网页并下载<CODE>gcc-core-3.1.tar.gz</CODE>。这包括了完整的C编译程序, +对<B>MPlayer</B>是足够了。如果你也想要C++,Java或其它一些GCC的高级特性<CODE>gcc-3.1.tar.gz </CODE>可能更适合你。</LI> + <LI>用下列命令解开文档<BR> + <CODE>tar -xvzf gcc-core-3.1.tar.gz</CODE></LI> + <LI>GCC不像大多数程序一样的在自己的源码目录内编译,而是需要一个源码目录之外的编译目录。所以你需要这样创建这个目录<BR> + <CODE>mkdir gcc-build</CODE></LI> + <LI>然后,你能继续在GCC编译目录中配置GCC,但你需要源码目录中的configure:<BR> + <CODE>cd gcc-build<BR> + ../gcc-3.1/configure</CODE></LI> + <LI>在编译目录中运行下列命令来编译GCC:<BR> + <CODE>做依靠自己力量</CODE></LI> + <LI>现在你可以运行下列命令安装GCC(以root身份)<BR> + <CODE>make install</CODE></LI> +</OL> + + +<H2><A NAME="binary">二进制发行版</A></H2> + +<P>这以前是第二大的问题从0.90-pre1之后已经解决。<B>MPlayer</B>以前包含来自OpenDivX工程的源代码,那是不能以二进制形式再分发的。这个代码已经被去掉, +现在如果你觉得合适的话欢迎你制作二进制的包。</P> + +<P>二进制分发的另一个阻碍是针对CPU结构的编译优化。 <B>MPlayer</B>运行时CPU检测(在编译时指定<CODE>--enable-runtime-cpudetection</CODE>)。 +它默认是禁用的因为它意味着小小的速度牺牲,现在可以创建在能在Intel CPU家族的不同的成员上运行的二进制文件了。</P> + + +<H2><A NAME="nvidia">nVidia</A></H2> + +<P>我们讨厌<A HREF="http://www.nvidia.com">nVidia</A>仅仅提供二进制的驱动(用于XFree86)的作法,他们通常都很buggy。我们在 +<A HREF="http://mplayerhq.hu/pipermail/mplayer-users/">mplayer-users</A>上已有许多关于这些封闭源代码的驱动和他们的低质量,不稳定以及糟糕的用户和专家 +支持的报告。这里有一个来自<A HREF="http://www.nvnews.net/forum/showthread.php?s=fda5725bc2151e29453b2da3bd5d2930&threadid=14306"> +nVidia的Linux论坛</A>的例子。许多这样的问题与异常持续不断重复的出现。我们最近跟nVidia接触过,而他们说这些错误不存在,不稳定是由于质量不好的AGP芯片造成的 +,而他们没有收到驱动bug(例如紫色条纹)的报告。因此如果你的nVidia显卡有问题,建议你升级nVidia驱动和/或者购买新的主板或者要求nVidia提供开源的驱动。 +在任何情况下,如果你使用nVidia的二进制的驱动并遇到驱动相关的问题,请你明白你几乎不能从我们这里得到帮助,因为我们在这个问题上无能为力。</P> + + +<H2><A NAME="barr">Joe Barr</A></H2> + +<P>Joe Barr因为写了一篇一点都不讨人喜欢的<A HREF="http://www.linuxworld.com/site-stories/2001/1214.mplayer.html"><B>MPlayer</B>评论</A>而变得 +声名狼籍。他发现<B>MPlayer</B>难以安装,但是然而他由不太喜欢<A HREF="http://www.linuxworld.com/linuxworld/lw-2000-06/lw-06-exam.html">阅读文档</A> +。他同样得出结论认为开发者是不友好的,文件是不完整和侮辱性的。你自己判断吧。他继续在他的 +<A HREF="http://www.linuxworld.com/site-stories/2001/1227.predictions.html">2002年的Linux十大预言</A>中否定mplayer,接下来在 +<A HREF="http://www.linuxworld.com/site-stories/2002/0125.xine.html">xine的评论</A>中他继续扇风点火。富有讽刺意味的是在那篇文章结束时他引用的 +他与xine原作者的G黱ter Bartsch的争论,完美地总结整个情况:</P> + +<BLOCKQUOTE> + 然而,他也继续说他对我写的Mplayer的专题感到“惊讶”并觉得那是不公平的,他提醒我那是一个免费软件工程。“如果你不喜欢它,”Bartsch说,“你有不使用它的自由”。 +</BLOCKQUOTE> + +<P>他不答复我们的邮件。他的编辑也不答复了我们的邮件。这里引用一些不同的人关于Joe Barr的评论,方便你形成你自己的观点:</P> + +<P>Marc Rassbach有些针对这个人的<A HREF="http://daily.daemonnews.org/view_story.php3?story_id=2102">评论</A>。</P> + +<BLOCKQUOTE> + 你们都记得在LinuxWorld 2000的时候他说Linus T说‘FreeBSD只是一小撮程序员’。Linus从没说过任何这类东西。当Joe因此被讯问时, +他的反应是说BSD的支持者是白痴和蠢才。 +</BLOCKQUOTE> + +<P>一段来自<A HREF="http://mplayerhq.hu/pipermail/mplayer-users/">mplayer-users</A>邮件列表上的Robert Munro的 +<A HREF="http://www.mplayerhq.hu/pipermail/mplayer-users/2001-December/009118.html">引文</A>:</P> + +<BLOCKQUOTE> + <P>他挺有意思,但不善于避免,um ...争论。 Joe Barr以前是Compuserve上的Will Zachmann上的Canopus论坛的常客。他那时是OS/2的拥护者(我也是OS/2迷)。</P> + + <P>他常常说话过头,骂人,我怀疑他有没有经历过什么困难。以他最近的专栏看来,他软化了些。 适当的阴险的幽默不是他早年的方式,完全不是。</P> +</BLOCKQUOTE> + +</BODY> +</HTML>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/DOCS/Chinese/video.html Sat Oct 05 10:19:07 2002 +0000 @@ -0,0 +1,1016 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> +<HTML> + +<HEAD> + <TITLE>视频 -- MPlayer -- Linux的电影播放器</TITLE> + <LINK REL="stylesheet" TYPE="text/css" HREF="default.css"> + <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=gb_2312-80"> +</HEAD> + +<BODY> + + +<H3><A NAME="video">2.3.1 视频输出设备</A></H3> + + +<H4><A NAME="mtrr">2.3.1.1 MTRR的设置</A></H4> + +<P>强烈建议你检查你的MTRR注册是否正确的设定了,因为他们能极大的提高性能。</P> + +<P>运行'<CODE>cat /proc/mtrr</CODE>':</P> + +<P><CODE> + --($:~)-- cat /proc/mtrr<BR> + reg00: base=0xe4000000 (3648MB), size= 16MB: write-combining, count=9<BR> + reg01: base=0xd8000000 (3456MB), size= 128MB: write-combining, count=1</CODE></P> + +<P>这是正确的,显示我的Matrox G400有16MB显存存。我从XFree 4.x.x得到这个,它会自动地设定MTRR注册。</P> + +<P>如果没有什么自动工作,你将不得不手工做。首先,你必须找到基地址。你有3种方法找它:</P> + +<UL> + <LI>根据X11的启动信息,例如: + <P><CODE>(--) SVGA: PCI: Matrox MGA G400 AGP rev 4, Memory @ 0xd8000000, 0xd4000000<BR> + (--) SVGA: Linear framebuffer at 0xD8000000</CODE></P></LI> + <LI>从/proc/pci(使用lspci -v命令): + <P> + <CODE>01:00.0 VGA compatible controller: Matrox Graphics, Inc.: Unknown device 0525</CODE> + <CODE>Memory at d8000000 (32-bit, prefetchable)</CODE> + </P></LI> + <LI>根据mga_vid内核驱动的信息(使用dmesg): + <P><CODE>mga_mem_base = d8000000</CODE></P></LI> +</UL> + +<P>接着让我们来确定显存大小。这十分容易,只要把显存大小变为十六进制,或者使用这个表格:</P> + +<TABLE BORDER=0> + <TR><TD> </TD><TD>1 MB</TD><TD WIDTH="10%"></TD><TD>0x100000</TD></TR> + <TR><TD></TD><TD>2 MB</TD><TD></TD><TD>0x200000</TD></TR> + <TR><TD></TD><TD>4 MB</TD><TD></TD><TD>0x400000</TD></TR> + <TR><TD></TD><TD>8 MB</TD><TD></TD><TD>0x800000</TD></TR> + <TR><TD></TD><TD>16 MB</TD><TD></TD><TD>0x1000000</TD></TR> + <TR><TD></TD><TD>32 MB</TD><TD></TD><TD>0x2000000</TD></TR> +</TABLE> + + +<P>你知道了基地址和显存大小,下面让我们进行MTRR注册!例如,对于上述32MB显存( size=0x2000000 )的Matrox显卡(base=0xd8000000)就执行:</P> + + +<P><CODE> echo "base=0xd8000000 size=0x2000000 type=write-combining" >| /proc/mtrr</CODE></P> + + +<P>并非所有CPU都支持MTRR。比如较老的K6-2[266MHz左右,步进值0]不支持MTRR,但是步进值12的就支持(用'<CODE>cat /proc/cpuinfo</CODE>'命令检查)。</P> + + +<H4><A NAME="xv">2.3.1.2 Xv</A></H4> + +<P>在XFree86 4.0.2或者更新的版本下,你能使用XVideo扩展来使用你的显卡的硬件YUV例程。这是就是'-vo xv'所使用的。同时, +这是支持调节亮度/对比度/色相/等等的驱动(除非你使用旧的,缓慢的DirectShow DivX解码器,什么驱动它都支持),参见man page。</P> + +<P>为了使它工作,确信做如下检查:</P> + +<UL> + <LI>你必须使用XFree86 4.0.2或者更新的版本(以前的版本没有XVideo)</LI> + <LI>你的显卡确实支持硬件加速(现在的显卡都支持)</LI> + <LI>X加载了XVideo扩展,它是像这样的: + + <P><CODE> (II) Loading extension XVideo</CODE></P> + + <P>显示在/var/log/XFree86.0.log中</P> + + <P>注意: 这只是加载XFree86的扩展。在正常的安装中,这是总被加载的,这并不意味着<B>显卡的</B>XVideo支持被加载了!</P> + </LI> + <LI>你的显卡在Linux下有Xv支持。为了检查,运行'xvinfo',它是XFree86程序集的一部分。它应该显示一段很长的文字,类似于这样: + <PRE> + X_video Extension version 2.2 + screen #0 + Adaptor #0: "Savage Streams Engine" + number of ports: 1 + port base: 43 + operations supported: PutImage + supported visuals: + depth 16, visualID 0x22 + depth 16, visualID 0x23 + number of attributes: 5 + (...) + Number of image formats: 7 + id: 0x32595559 (YUY2) + guid: 59555932-0000-0010-8000-00aa00389b71 + bits per pixel: 16 + number of planes: 1 + type: YUV (packed) + id: 0x32315659 (YV12) + guid: 59563132-0000-0010-8000-00aa00389b71 + bits per pixel: 12 + number of planes: 3 + type: YUV (planar) + (...etc...) + </PRE> + <P>它必须支持YUY2 packed和YV12 planar象素格式,<B>MPlayer</B>才能利用它。</P> + </LI> + <LI>最后,检查<B>MPlayer</B>是否编译了'xv'支持。 + ./configure可以显示出来。</LI> +</UL> + + +<H5><A NAME="xv_3dfx">2.3.1.2.1 3dfx显卡</A></H5> + +<P>老的的3dfx驱动存在XVideo加速的问题,它不支持YUY2或者YV12,诸如此类。确定你的XFree86版本在4.2.0以上, +它在YV12和YUY2模式下工作很好。以前的版本,包括4.1.0,<B>会在YV12下崩溃</B>。如果你使用-vo xv时遇到奇怪的问题, +尝试使用SDL(它也有XVideo)看是否有帮助。细节请察看<A HREF="#sdl">SDL</A>部分。</P> + +<P><B>或者</B>,试试新的-vo tdfxfb驱动! 参见<A HREF="#tdfxfb">tdfxfb</A>部分。</P> + + +<H5><A NAME="xv_s3">2.3.1.2.2 S3显卡</A></H5> + +<P>S3 Savage3D应该能正常工作,不过对于Savage4,请使用XFree86 4.0.3或更新的版本(如果图象有问题,试试16bpp)。 +至于S3 Virge,虽然有xv支持,但是这种显卡实在太慢,因此你最好买了它。</P> + +<P><B>注意</B>:Savage显卡能显示YV12图像但是速度很慢(它需要做YV12->YUY2转化,因为Savage的硬件不能显示YV12)。 +因此当这个文档在什么地方说“这个有YV12输出,用这个,它快”的时候,并不完全是这样。试试 +<A HREF="http://www.mplayerhq.hu/MPlayer/contrib/Savage-driver/savage_drv.o.mmx2.bz2">这个驱动</A>, +它使用MMX2完成这个任务,比X自己的驱动快。</P> + + +<H5><A NAME="xv_nvidia">2.3.1.2.3 nVidia显卡</A></H5> + +<P>nVidia在Linux下不是很好的选择(nVidia认为,这<A HREF="users_against_developers.html#nvidia">并非真实情况</A>).. +你将不得不使用二进制的非开源的nVidia驱动,nVidia的网站可以找到。标准XFree86驱动没有这些显卡的XVideo支持, +因为nVidia没有公开源码/规格。</P> + +<P>据我所知最新的XFree86驱动包含了GeForce2和3的XVideo支持。</P> + +<P>Riva128显卡即使用nVidia的驱动也没有XVideo支持:(向nVidia抱怨去吧。</P> + + +<H5><A NAME="xv_ati">2.3.1.2.4 ATI显卡</A></H5> + +<UL> + <LI><A HREF="http://www.linuxvideo.org/gatos">GATOS驱动</A>(除非你有Rage128或者Radeon,否则你应该使用它)缺省打开VSYNC。 +这意味着解码速度(!)与显示器的刷新率是同步的。如果觉得播放速度缓慢,以某种方式禁用VSYNC,或者把刷新率调到到n*(电影的fps)Hz。</LI> + <LI>Radeon VE -- 目前只有XFree86的CVS里有这种显卡的驱动,4.1.0版没有。同时没有电视支持。当然, +使用<B>MPlayer</B>你能幸福地得到<B>加速</B>显示,有或没有<B>电视输出</B>,而且不需要任何库或者X。阅读<A HREF="#vidix">Vidix</A>一节。</LI> +</UL> + + +<H5><A NAME="xv_neomagic">2.3.1.2.5 NeoMagic显卡</A></H5> + +<P>这些显卡能在许多笔记本电脑里找到。不幸的是,X 4.2.0的驱动不能使用Xv,但是我们为你准备了一个经过修改,能够使用Xv的驱动。 +<A HREF="http://www.mplayerhq.hu/MPlayer/contrib/NeoMagic-driver/neomagic_drv.o.4.2.0.bz2">到这里下载</A>。 +这个驱动是由Stefan Seyfried提供的。</P> + +<P>像这样修改你的XF86Config使之能进行DVD大小的内容的回放:</P> + +<P>Section "Device"<BR> + <I>[...]</I><BR> + Driver "neomagic"<BR> + <B>Option "OverlayMem" "829440"</B><BR> + <I>[...]</I><BR> + EndSection</P> + + +<H5><A NAME="xv_trident">2.3.1.2.6 Trident显卡</A></H5> + +<P>如果你想要在Trident显卡上使用xv,它在4.1.0下不工作,尝试XFree最新的CVS或者等候XFree 4.2.0。最新的CVS加入了Cyberblade XP显卡的全屏xv支持。</P> + + +<H4><A NAME="dga">2.3.1.3 DGA</A></H4> + + +<H5><A NAME="dga_summary">2.3.1.3.1 总论</A></H5> + +<P>这篇文件试图花些篇幅来解释DGA大概是什么以及<B>MPlayer</B>的DGA视频输出驱动能做什么(以及不能做什么)。</P> + + +<H5><A NAME="dga_whatis">2.3.1.3.2 DGA是什么</A></H5> + +<P>DGA是Direct Graphics Access的简称,是一种使程序绕过X-服务器直接修改帧缓冲显存的方法。从技术角度说这是通过把帧缓冲显存映射到你的处理器的内存范围之内。 +只有你有超级用户权限的时候内核才允许这种操作。用root登录或者给<B>MPlayer</B>的执行文件设置SUID位(推荐使用!)可以做到这一点。</P> + +<P>DGA有两种版本: DGA1用于XFree 3.x.x和DGA2从XFree 4.0.1开始引入。</P> + +<P>DGA1只提供了前述的帧缓冲直接操作功能。你不得不使用XVidMode扩展来切换视频信号的分辨率。</P> + +<P>DGA2结合了XVidMode扩展的特性而且也允许切换显示的色彩深度。因此,虽然一般使用32位色X服务器,你也能切换到15位色深,反之亦然。</P> + +<P>然而DGA也有一些弊端。它似乎有些依赖于你使用的图形芯片和X服务器中控制该芯片的视频驱动。因此,它并不是对所有的系统都起作用...</P> + + +<H5><A NAME="dga_installation">2.3.1.3.3 为MPlayer安装DGA支持</A></H5> + +<P>首先确保X装载了DGA扩展,察看/var/log/XFree86.0.log:</P> + +<P> <CODE>(II) Loading extension XFree86-DGA</CODE></P> + +<P>可见,强烈推荐XFree86 4.0.x或更高版本,<B>MPlayer</B>的DGA驱动在./configure时会自动检测到,否则你可以用--enable-dga强行编译它。</P> + +<P>如果你的驱动不能切换到一个较小的分辨率,尝试使用选项-vm(只用于X 3.3.x),-fs,-bpp,-zoom找一个你的电影适合的视频模式。目前没有转换功能:(</P> + +<P>成为root。DGA需要root权限来直接写显存。如果你想用普通用户运行它,给<B>MPlayer</B>设置SUID root权限:</P> + +<P><CODE> + chown root /usr/local/bin/mplayer<BR> + chmod 750 /usr/local/bin/mplayer<BR> + chmod +s /usr/local/bin/mplayer</CODE></P> + +<P>它现在也能被普通用户使用了。</P> + +<BLOCKQUOTE> + <B>警告:安全风险</B><BR> + 这是一个<B>很大的</B>安全风险!永远不要在除了你之外还有人可以使用的服务器上这样做,因为他们能通过SUID root的<B>MPlayer</B>获得root权限。 +</BLOCKQUOTE> + +<P>现在使用<CODE>-vo dga</CODE>选项,开始使用(如此希望:))! + 你也应该尝试看看<CODE>-vo sdl:dga</CODE>选项能否正常工作。它快得多。</P> + + +<H5><A NAME="dga_resolution">2.3.1.3.4 切换分辨率</A></H5> + +<P>DGA驱动允许切换输出信号的分辨率。这样能避免使用(缓慢的)软件缩放同时又提供全屏图象。理想情况下,它将精确切换成视频数据的分辨率(除了为了保持长宽比), +但是X服务器仅允许切换到<CODE>/etc/X11/XF86Config</CODE>(XFree 4.0.X使用<CODE>/etc/X11/XF86Config-4</CODE>用于区别)中预定义的分辨率。 +它们被所谓的modelines定义并且依赖于你的视频硬件的能力。X服务器启动时扫描这个配制文件并且禁用那些不适用于你的硬件的modelines。你能通过X11的log文件找出 +哪些方式可用。它能在这里找到: +<CODE>/var/log/XFree86.0.log</CODE>。</P> + +<P>modeline定义分辨率的一些例子参见附录A。</P> + + +<H5><A NAME="dga_mplayer">2.3.1.3.5 DGA & MPlayer</A></H5> + +<P><B>MPlayer</B>在两个地方使用DGA:SDL驱动能使用它(-vo sdl:dga)以及在DGA驱动(-vo dga)中使用。上面说的内容对两者都有效; +在下列的几段中我将解释<B>MPlayer</B>中DGA驱动是如何工作的。</P> + + +<H5><A NAME="dga_features">2.3.1.3.6 DGA驱动的特性</A></H5> + +<P>DGA驱动通过命令行中的-vo dga选项调用。默认操作是转换成与原来的视频尽可能接近的分辨率。它将忽略-vm和-fs选项(开启视频模式切换和全屏方式) +-- 它总试图通过切换显示模式尽可能多的覆盖你的屏幕,这样阻碍你的CPU使用一个单一的附加的周期来放大图像。 +如果你不喜欢它选择的模式你能强迫它选择最接近于你通过-x和-y选项规定的分辨率的模式。使用-v选项,DGA驱动将在一大堆别的东西中打印出你 +当前XF86-Config文件支持的所有分辨率的列表。 +如果是DGA2你也能通过使用-bpp选项强迫它使用一定的色彩深度。有效的色深是15,16,24和32。这取决于你的硬件对这些色深是否本地支持, +还是通过某种(有可能很慢)的转化来完成的。</P> + +<P>如果你非常幸运,有足够显存的屏外缓冲区来存放整个图象,DGA驱动将使用双重缓冲,这能使电影播放更加平滑。它会告诉你双重缓冲是否被打开。</P> + +<P>双重缓冲的意思是在你的视频的当前帧被显示时,下一帧在屏外缓冲区中被绘制。当下一帧准备完毕时, +图形芯片被告知下一帧在显存中的位置并且直接从那里将要显示的数据读出来。在此期间其它在记忆中的缓冲器将再一次被装满新的视频数据。</P> + +<P>双重缓冲可以用-double选项开启也可以用-nodouble选项禁止。目前缺省选项是禁用双重缓冲。屏幕显示功能(OSD)在使用DGA驱动模式时必须打开双重缓冲功能。 +然而,使用双重缓冲可能导致较大的速度下降(在我的K6-II+ 525上它多占用20%的CPU时间!),下降程度取决于DGA操作你的硬件的方法。</P> + + +<H5><A NAME="dga_speed">2.3.1.3.7 速度问题</A></H5> + +<P>一般来说,DGA帧缓冲至少应该跟X11驱动一样快同时还有全屏图象的附加好处。对<B>MPlayer</B>打印出的百分比速度的评价应该小心, +比如X11驱动它们并不包括X-服务器真正绘制所用的时间。开一个终端连到你的机器的串口上运行top命令看看你的机器真正在干什么...</P> + +<P>一般来说,使用DGA相对“普通的”使用X11所产生的速度提高高度依赖于你的显卡,以及X-服务器中它的模块做了多少优化。</P> + +<P>如果你的系统较慢,最好使用15或者16bit色深,因为他们仅仅要求32bit显示的显存带宽的一半。</P> + +<P>即使你的显卡自身就支持32bit色深,使用24bit的色深也是个好主意,因为它被32/32方式少传输25%的数据。</P> + +<P>我曾见过一些AVI文件能在Pentium MMX 266上播放。AMD K6-2 CPU在400 MHZ以上的应该可以工作。</P> + + +<H5><A NAME="dga_bugs">2.3.1.3.8 已知的bug</A></H5> + +<P>嗯,据一些XFree的开发者说,DGA像头野兽。他们告诉你不要使用它。并非对任何芯片的驱动它的操作都是没有瑕疵的。</P> + +<UL> + <LI>在XFree 4.0.3的nv.o有一个bug导致奇怪的颜色。</LI> + <LI>ATI驱动在使用DGA完成之后要不只一次的切换显示模式。</LI> + <LI>一些驱动无法切换会正常的分辨率(用Ctrl-Alt-小键盘+,-来手工切换)。</LI> + <LI>一些驱动显示奇怪的颜色。</LI> + <LI>一些驱动错误报告他们映射到处理器地址空间中的显存数量,这样vo-dga将无法使用双重缓冲(SIS?)。</LI> + <LI>一些驱动好像根本找不到一个可用的模式。在这种情况下,DGA驱动将crash并报告100000x100000的无效模式之类的东西...</LI> + <LI>OSD只能在双重缓冲开启的时候才能工作。</LI> +</UL> + + +<H5><A NAME="dga_future">2.3.1.3.9 未来的工作</A></H5> + +<UL> + <LI>为OSD提供新的X11的渲染接口</LI> + <LI>我的TODO列表在什么地方????:-(((</LI> +</UL> + + +<H5><A NAME="dga_modelines">2.3.1.3.A 一些modelines </A></H5> + +<PRE> + Section "Modes" + Identifier "Modes[0]" + Modeline "800x600" 40 800 840 968 1056 600 601 605 628 + Modeline "712x600" 35.0 712 740 850 900 400 410 412 425 + Modeline "640x480" 25.175 640 664 760 800 480 491 493 525 + Modeline "400x300" 20 400 416 480 528 300 301 303 314 Doublescan + Modeline "352x288" 25.10 352 368 416 432 288 296 290 310 + Modeline "352x240" 15.750 352 368 416 432 240 244 246 262 Doublescan + Modeline "320x240" 12.588 320 336 384 400 240 245 246 262 Doublescan + EndSection +</PRE> + +<P>这些条目在我的Riva128芯片上工作的很好,使用nv.o的X服务器驱动模块。</P> + + +<H5><A NAME="dga_bug_reports">2.3.1.3.B 报告bug</A></H5> + +<P>如果你在使用DGA驱动时遇到麻烦请别介意,发一个bug报告给我(e-mail地址在下面)。请用-v选项启动<B>MPlayer</B>并且在bug报告中包括所有以vo-dga开始的输出行:</P> + +<P>请一并附带你使用的X11的版本,显卡和你的CPU类型。X11驱动模块(在XF86-Config中定义)也可能有帮助。谢谢!</P> + +<P><I>Acki (acki@acki-netz.de,www.acki-netz.de)</I></P> + + +<H4><A NAME="sdl">2.3.1.4 SDL</A></H4> + +<P>SDL(Simple Directmedia Layer)基本上是一种统一的视频/音频接口。使用它的程序只要知道SDL,而不需要了解SDL实际上使用的视频或音频驱动。 +例如使用SDL的Doom移植能在svgalib,aalib,X,fbdev,和其他东西上使用,你仅需要用环境变量SDL_VIDEODRIVER规定(例如)使用的视频驱动。嗯,至少在理论上。</P> + +<P>在<B>MPlayer</B>中,我们使用它的X11驱动的软件缩放功能,用于不支持XVideo的芯片/显卡,直到我们做出我们自己的(更快,更好)的软件缩放代码。 +同时我们使用它的aalib输出,但是现在我们自己的更合适的了。它的DGA模式比我们的好,直到最近。现在明白了? :)</P> + +<P>它对一些buggy的驱动/显卡也有帮助,例如视频跳跃(不是系统缓慢的问题),或者音频延迟。</P> + +<P>SDL视频输出支持在电影下面,(如果出现)的黑条上显示字幕。</P> + +<P><B>这里是一些关于SDL输出的控制选项:</B></P> + +<DL> + <DT><CODE>-vo sdl:name</CODE></DT> + <DD>规定使用的sdl视频驱动(例如aalib,dga,x11)</DD> + + <DT><CODE>-ao sdl:name</CODE></DT> + <DD>规定使用的sdl音频驱动(例如dsp,esd,arts)</DD> + + <DT><CODE>-noxv</CODE></DT> + <DD>禁用XVideo硬件加速</DD> + + <DT><CODE>-forcexv</CODE></DT> + <DD>尝试强制XVideo加速</DD> + +</DL> + +<TABLE BORDER=0> + <TR><TD COLSPAN=4><P><B>SDL控制键:</B></P></TD></TR> + <TR><TD></TD><TD><CODE>F</CODE></TD><TD></TD><TD>切换全屏/窗口方式</TD></TR> + <TR><TD></TD><TD><CODE>C</CODE></TD><TD></TD><TD>循环切换可用的全屏方式</TD></TR> + <TR><TD></TD><TD><CODE>W与S</CODE></TD><TD></TD><TD>*和/的映射(音量控制)</TD></TR> +</TABLE> + +<H4>已知的bug:</H4> + +<UL> + <LI>在sdl:aalib控制台驱动下按下的键将永远重复。(使用-vo aa!)它是SDL中的bug,我无法改变它(用SDL 1.2.1测试)。</LI> +</UL> + + +<H4><A NAME="svgalib">2.3.1.5 SVGAlib</A></H4> + +<H4>安装</H4> +<P>你必须安装svgalib和它的开发包来使<B>MPlayer</B>编译它的SVGAlib驱动(自动检测,但是也能强制使用), +别忘了编辑/etc/vga/libvga.config来配合你的显卡&监视器。</P> + +<H4>注意</H4> +<P>一定不要用-fs选项,因为它将导致使用软件缩放,速度会很慢,如果你确实需要,使用<CODE>-sws 4</CODE>选项, +质量会有点差,但是无论如何它更快。</P> + +<H4>EGA(4bpp)支持</H4> +<P>SVGAlib结合了EGAlib,使得<B>MPlayer</B>有可能用16种颜色播放任何电影,下列的配制中可以使用:</P> + +<UL> + <LI>EGA显卡和EGA显示器: 320x200x4bpp,640x200x4bpp,640x350x4bpp</LI> + <LI>EGA显卡和CGA显示器: 320x200x4bpp,640x200x4bpp</LI> +</UL> + +<P>bpp(每象素比特数)的值必须手工设为4:<BR> + <CODE>-bpp 4</CODE><BR> + 电影可能必须被按比例缩小到EGA适合的模式:<BR> + <CODE>-vop scale=640:350</CODE>或者<BR> + <CODE>-vop scale=320:200</CODE><BR> + 为做到这一点我们需要使用快速但低质量的例程:<BR> + <CODE>-sws 4</CODE><BR> + 也许自动纠正长宽比的功能需要关闭:<BR> + <CODE>-noaspect</CODE></P> + + +<H4><A NAME="fbdev">2.3.1.6 帧缓冲输出(FBdev)</A></H4> + +<P>是否编译FBdev目标是在./configure期间自动检测的。阅读内核源码中的帧缓冲的文档(Documentation/fb/*)来了解更多信息。</P> + +<P>如果你的显卡不支持VBE 2.0标准(较旧的ISA与PCI显卡,诸如S3 Trio64),仅支持VBE 1.2(或者更老的?): +嗯,VESAfb仍然是可用的,但是你将必须在启动Linux之前装载SciTech Display Doctor(从前叫UniVBE )。 +用DOS启动盘或随便什么。同时,别忘了注册你的UniVBE ;))</P> + +<P>FBdev输出有些除了以前说过的参数外的附加参数:</P> + +<DL> + <DT><CODE>-fb</CODE></DT> + <DD>规定使用的帧缓冲设备(/dev/fb0)</DD> + + <DT><CODE>-fbmode</CODE></DT> + <DD>使用的模式名(按照/etc/fb.modes文件)</DD> + + <DT><CODE>-fbmodeconfig</CODE></DT> + <DD>模式的配置文件方式(默认为/etc/fb.modes)</DD> + + <DT><CODE>-monitor_hfreq</CODE></DT> + <DT><CODE>-monitor_vfreq</CODE></DT> + <DT><CODE>-monitor_dotclock</CODE></DT> + <DD><STRONG>重要的</STRONG>参数,参见<CODE>example.conf<CODE></DD> +</DL> + +<P>如果你想要切换到某个具体模式,那么使用</P> + +<P><CODE> mplayer -vm -fbmode (NameOfMode) filename</CODE></P> + +<UL> + <LI><B>-vm</B>单独使用将从/etc/fb.modes中选出最适合的模式。也可以与-x和-y选项一起使用。-flip选项只有当电影的像素格式 +与视频模式的像素格式相同时才支持。注意bpp的值,fbdev驱动将尝试使用当前值,如果你设定-bpp选项,那么就是那个值。</LI> + <LI><B>-zoom</B>选项不支持(软件定标太慢了)。-fs选项不支持。你不能使用8bpp(或者更少)的模式。</LI> + <LI>你有可能想要关掉光标:<CODE>echo -e '\033[?25l'</CODE>或<CODE>setterm -cursor off</CODE><BR> + 和屏幕保护:<CODE>setterm -blank 0</CODE><BR> + 要重新开启光标:<CODE>echo -e '\033[?25h'</CODE>或<CODE>setterm -cursor on</CODE></LI> +</UL> + +<P>注意:使用VESA 帧缓冲时FBdev视频方式不能改变,也不要要求这个功能,因为它不是由于<B>MPlayer</B>自身的限制。</P> + + +<P><B><A NAME="mga_vid">2.3.1.7 Matrox 帧缓冲(mga_vid)</A></B></P> + +<P>这一段是关于Matrox G200/G400/G450/G550 BES (Back-End Scaler)的支持,mga_vid内核驱动。它现在是由我(A'rpi)开发的, +它有三重缓冲的硬件VSYNC支持。它在帧缓冲控制台下和X下都可以工作。</P> + +<P><B>警告</B>:在非Linux系统上,使用<A HREF="#vidix">VIDIX </A>实现mga_vid!</P> + + +<P><B>安装:</B></P> +<OL> + <LI>为了使用它,你首先必须编译mga_vid.o:</P> + <P><CODE>cd drivers<BR> + make</CODE></P></LI> + <LI>然后创建/dev/mga_vid设备: + <P><CODE> mknod /dev/mga_vid c 178 0</CODE></P> + <P>然后这样加载驱动</P> + <P><CODE>insmod mga_vid.o</CODE></P></LI> + <LI>你应该使用'dmesg'命令检查显存大小的检测结果。如果不对,那么使用mga_ram_size选项(先rmmod mga_vid),以MB为单位指定显卡的显存大小: + <P><CODE> insmod mga_vid.o mga_ram_size=16</CODE></P></LI> + <LI>为了使它在需要时自动地加载/卸载,首先在<CODE>/etc/modules.conf</CODE>的末尾加上下面这一行: + <P><CODE> alias char-major-178 mga_vid</CODE></P> + <P>然后把<CODE>mga_vid.o</CODE>模块复制到<CODE>/lib/modules/<kernel version>/somewhere</CODE>下的适当位置。</P> + <P>然后运行</P> + <P><CODE>depmod -a</CODE></P></LI> + <LI>你现在需要(重新)编译<B>MPlayer</B>,./configure将发现/dev/mga_vid并且编译'mga'驱动。如果你使用matroxfb控制台, + 在<B>MPlayer</B>中用'-vo mga'使用它,或者在XFree86 3.x.x或者4.x.x下的使用'-vo xmga'。</P> +</OL> + +<P>mga_vid驱动能与Xv协同工作。</P> + +<P>可以阅读<CODE>/dev/mga_vid</CODE>设备文件(例如<CODE>cat /dev/mga_vid</CODE>)来查找一些信息, +也可以通过写它来调整亮度:<CODE>echo "brightness=120" > /dev/mga_vid</CODE></P> + + +<H4><A NAME="tdfxfb">2.3.1.8 3dfx YUV支持(tdfxfb)</A></H4> + +<P>这个驱动使用内核的tdfx帧缓冲驱动来利用YUV加速播放电影。你需要一个支持tdfxfb的内核, +然后用<CODE>./configure --enable-tdfxfb</CODE>重新编译</P> + + +<H4><A NAME="opengl">2.3.1.9 OpenGL输出</A></H4> + +<P><B>MPlayer</B>支持使用OpenGL显示电影,但是如果你的平台/驱动支持xv,就象使用linux的PC机那样,就使用xv,OpenGL的效果与它相比相当坏。 +如果你只有没有xv支持的X11程序,OpenGL是可用的选择。</P> + +<P>不幸的是并非所有驱动都支持这个特性。Utah-GLX驱动(针对XFree86 3.3.6)对所有显卡都支持它。访问 +<A HREF="http://utah-glx.sourceforge.net">http://utah-glx.sourceforge.net</A>了解安装它的细节问题。</P> + +<P>XFree86(DRI)>= 4.0.3支持Matrox和Radeon显卡的OpenGL,4.2.0或更新版本支持Rage128。 +访问<A HREF="http://dri.sourceforge.net">http://dri.sourceforge.net</A>以寻找下载和安装指导。</P> + + +<H4><A NAME="aalib">2.3.1.11 AAlib -- 文本方式显示</A></H4> + +<P><B>AAlib </B>是一个用于在文本模式下显示图形的库,它使用强大的ASCII渲染器。有许多程序提供对它的支持,像Doom,Quake等等。 +<B>MPlayer</B>包含一个针对它的实用的驱动。如果./configure发现安装了aalib,aalib的libvo驱动将被编译。</P> + +<TABLE BORDER=0> + <TR><TD COLSPAN=4><P><B>你能在AA窗口中使用一些控制键来改变渲染参数:</B></P></TD></TR> + <TR><TD> </TD><TD><CODE>1</CODE></TD><TD> </TD><TD>减少对比度</TD></TR> + <TR><TD></TD><TD><CODE>2</CODE></TD><TD></TD><TD>增加对比度</TD></TR> + <TR><TD></TD><TD><CODE>3</CODE></TD><TD></TD><TD>减少亮度</TD></TR> + <TR><TD></TD><TD><CODE>4</CODE></TD><TD></TD><TD>增加亮度</TD></TR> + <TR><TD></TD><TD><CODE>5</CODE></TD><TD></TD><TD>打开/关闭快速渲染</TD></TR> + <TR><TD></TD><TD><CODE>6</CODE></TD><TD></TD><TD>设置抖动方式(不抖动, 误差分布算法, Floyd Steinberg算法)</TD></TR> + <TR><TD></TD><TD><CODE>7</CODE></TD><TD></TD><TD>反转图象</TD></TR> + <TR><TD></TD><TD><CODE>a</CODE></TD><TD></TD><TD>转换aa和<B>MPlayer</B>的控制键</TD></TR> +</TABLE> + +<P><B>下列的命令行选项能够使用:</B></P> +<DL> + <DT><CODE>-aaosdcolor=V</CODE></DT> + <DD>改变OSD颜色</DD> + + <DT><CODE>-aasubcolor=V</CODE></DT> + <DD>改变字幕颜色 + <P><I>V的值可以是:(0/正常,1/暗色,2/粗体,3/粗体字体,4/反转,5/特殊) </I></P></DD> +</DL> + +<P><B>AAlib自身也提供了大量的选项。这里是一些重要的:</B></P> +<DL> + <DT><CODE>-aadriver</CODE></DT> + <DD>设置推荐aa的驱动( X11,curses,Linux )</DD> + + <DT><CODE>-aaextended</CODE></DT> + <DD>使用所有的256个字符</DD> + + <DT><CODE>-aaeight</CODE></DT> + <DD>使用8比特的ASCII</DD> + + <DT><CODE>-aahelp</CODE></DT> + <DD>列出所有的aalib选项</DD> +</DL> + +<P>注意:渲染效果是十分消耗CPU的,特别是使用AA-on-X(在X上使用aalib),在标准的非帧缓冲控制台上的CPU消耗是最小的, +用SVGATextMode设置一个大的文本模式,然后再欣赏电影!(大力神显卡的第二个接口就不错:))(任何人能加强fbdev做hgafb? +的转化与抖动的效率将是不错的:)</P> + +<P>如果你的计算机速度不足以渲染所有帧就使用<CODE>-framedrop</CODE>选项</P> + +<P>在终端中播放电影时使用Linux驱动你将会得到更好的速度和画面质量,不要用curses(<CODE>-aadriver Linux</CODE>)。 +但是为此你需要<CODE>/dev/vcsa<terminal></CODE>的写权限。那是aalib不能自动检测的,但vo_aa会尝试搜索最佳模式, +进一步的调节问题参见<A HREF="http://aa-project.sourceforge.net/tune/">http://aa-project.sourceforge.net/tune/</A>。</P> + + +<H4><A NAME="vesa">2.3.1.12 VESA -- 输出到VESA BIOS</A></H4> + +<P>这个驱动被设计并引入作为一个<B>通用的驱动</B>用于任何有VESA VBE 2.0兼容的BIOS的显卡。这驱动的另一个优点是能试图迫使在其上进行电视输出。<BR> + <B>VESA BIOS EXTENSION(VBE)3.0版 日期:1998年九月16日</B>(第70页)说:</P> + +<BLOCKQUOTE> + <B>双重控制器设计</B><BR> + VBE 3.0支持双重控制器设计基于如下假设,由于两个控制器一般是同样的OEM提供的,被同一块显卡上的一个的BIOS ROM,所以可以对程序隐藏有两个 +控制器在作用的事实。这限制了同时的使用独立的控制器的功能,但是允许VBE 3.0发布前的程序能正常工作。VBE函数00h(返回控制器信息)返回经过合并的 +两个控制器的信息,包括经过合并的可供使用的方式的列表。当程序选择一个方式时,相应的控制器被激活。然后剩下的VBE函数都作用在激活的控制器上。 +</BLOCKQUOTE> + +<P>因此,你有可能通过这个驱动得到电视输出。<BR> + (我猜想电视至少经常地是使用独立的头或者独立的输出)。</P> + +<H4>优点:</H4> + +<UL> + <LI><B>即使Linux不能识别</B>你的视频硬件你或许还能看电影。</LI> + <LI>你不需要在你的Linux上安装任何图形相关的东西(像X11(或者叫XFree86),fbdev诸如此类)。这个驱动能从<B>文本方式</B>运行。</LI> + <LI>你有机会获得<B>可用的电视输出</B>。(至少已知ATI的显卡可以)。</LI> + <LI>这个驱动调用<B>int 10h</B>中断因此它不是模拟器 -- 它<B>实时</B>调用<B>真正的</B>BIOS中的<B>真正的</B>功能。(效果不错 -- 按vm86方式)。</LI> + <LI>你可以对它使用Vidix,这样能加速视频显示<B>同时</B>也加快电视输出!(ATI显卡推荐)</LI> +</UL> + +<H4>缺点:</H4> + +<UL> + <LI>它只能在<B>x86系统</B>上工作。</LI> + <LI>它只能由<B>root</B>使用。</LI> + <LI>它目前只有<B>Linux</B>可用。</LI> +</UL> + +<P>使用<B>GCC 2.96</B>就不要使用这个驱动!它将不能工作!</P> + +<P><B>这些命令行的选项目前可用于VESA:</B></P> +<DL> + <DT><CODE>-vo vesa:opts</CODE></DT> + <DD>当前能识别的: <B>dga</B>强迫dga方式,<B>nodga</B>禁用dga方式。注意:你能省略这些参数来开启<B>自动检测</B>dga方式。 + (在未来也将设定诸如刷新率,交错式,双重扫描式诸如此类的模式参数。例如: i43,85,d100)</DD> + + <DT><CODE>-screenw, -screenh, -bpp</CODE></DT> + <DD>强制使用用户自定义的模式</DD> + + <DT><CODE>-x, -y</CODE></DT> + <DD>设置用户自定义模式的预采数</DT> + + <DT><CODE>-zoom</CODE></DT> + <DD>使用用户自定义模式的预采数</DD> + + <DT><CODE>-fs</CODE></DT> + <DD>把图像缩放到全屏幕</DD> + + <DT><CODE>-fs -zoom</CODE></DT> + <DD>将用户自定义的预采数缩放到全屏幕</DD> + + <DT><CODE>-double</CODE></DT> + <DD>使用双重缓冲。(只用于DGA方式)。会比单一缓冲慢,但没有闪烁。</DD> +</DL> + +<H4>已知的问题和绕过办法:</H4> + +<UL> + <LI>如果你在你的Linux机器上安装了<B>NLS</B>并且从文本方式运行VESA驱动,那么<B>MPlayer</B>终止后你将看到<B>ROM字体</B> +而不是本地的字体。你可以重新加载本地的字体例如在Mandrake中使用<B><I>setsysfont</I></B>。</BR> + (<B>提示:</B>相同的工具也用于fbdev的地方化)。</LI> + <LI>一些<B>Linux显卡驱动</B>不更新在DOS内存中的活动的<B>BIOS模式</B>。因此如果你有这样问题 -- 总是只从<B>文本方式</B>使用VESA驱动。 +否则,文本方式(#03)总要被激活接着你将需要重起你的计算机。</LI> + <LI>通常在终止VESA驱动之后你将看到<B>黑屏</B>。为了把你的屏幕回复原状 -- 只要切换到其它控制台(通过按<B>Alt-Fx</B>)然后再用 +同样的方法切换回你以前的控制台。</LI> + <LI>为了得到<B>可用的电视输出</B>你需要在启动导入你的电脑之前将电视连接器插上,因为视频BIOS只在自举过程中进行一次初始化。</LI> +</UL> + + +<P><B><A NAME="x11">2.3.1.13 X11</A></B></P> + +<P>尽量避免使用它。输出到X11(使用共享内存扩展),完全没有硬件加速。支持(MMX/3DNow与SSE加速,但是仍然缓慢的)软件缩放, +使用选项<CODE>-fs -zoom</CODE>。大多数显卡有硬件缩放支持,使用<CODE>-vo xv</CODE>对他们输出,或者对于Matroxes使用<CODE>-vo xmga</CODE>。</P> + +<P>问题在于大多数显卡的驱动在第二个接口/电视接口上不支持硬件加速。在那些情况下,你将看到绿色和蓝色的彩色窗口而不是电影。 +这是这个驱动方便利用的地方,但是你需要强大的CPU来使用软件缩放。不要使用SDL驱动的软件输出+缩放,它的图象质量太差!</P> + +<P>软件缩放是十分缓慢的,你最好尝试用改变视频模式的方法代替它。它十分简单。参见<A HREF="#dga_modelines">DGA一节的modelines</A>, +并且将他们插入到你的XF86Config。</P> + +<UL> + <LI>如果你有XFree86 4.x.x -- 使用<CODE>-vm</CODE>选择。它将切换到适合你的电影的分辨率。如果你的XFree86不是:</LI> + <LI>使用XFree86 3.x.x -- 你必须使用<B>CTRL-ALT-+</B>和<B>-</B>控制键循环可用的分辨率。</LI> +</UL> + +<P>如果你调整不到你设定的模式,检查XFree86的输出。有些驱动不能使用低分辨率视频方式所需要的低的像素频率。</P> + + +<P><B><A NAME="vidix">2.3.1.14 VIDIX</A></B></P> + +<P>VIDIX是<B>VID</B>eo <B>I</B>nterface for *ni<B>X</B>的缩写。<BR> + VIDIX被设计和引入作为快速的用户空间驱动的接口提供类似mga_vid为了Matrox显卡提供的这样视频性能的。它也十分易于移植。</P> + +<P>这个接口被设计来作为一个将存在的视频加速接口(就是mga_vid,rage128_vid,radeon_vid,pm3_vid )统一到一个固定的系统的尝试。 +它给芯片提供BES(BackEnd scalers)或OV(Video Overlays)之类的高层接口。它不为那些图像服务器该做的事情提供底层接口。 +(我不想跟X11开发组在切换图像模式上竞争)。即这接口的主要目的是充分提高视频回放的速度。</P> + +<H4>用法</H4> + +<UL> + <LI>你能使用独立的视频输出驱动:<CODE>-vo xvidix</CODE><BR> + 这个驱动被设计为使用VIDIX技术的X11的前端。它要求X服务器而且仅仅只能在X服务器下工作。</LI> + <LI>你能在若干视频的输出驱动中使用VIDIX副驱动,诸如:<BR> + <CODE>-vo vesa:vidix</CODE>(<B>只用于Linux</B>)和<CODE>-vo fbdev:vidix</CODE></LI> +</UL> + +实际上什么视频输出驱动与<B>VIDIX</B>配合使用并不重要。 + +<H4>要求</H4> + +<UL> + <LI>视频显卡应该工作于图形方式(我所以写<B>应该</B>只是因为我在文本方式下测试了它 -- 它能工作但是输出效果很可怕 ;) 对它还是使用AAlib)。<BR> + <I>注意:每个人能通过注释掉vo_vesa驱动的模式切换部分的方式尝试这个技巧。</I></LI> + <LI><B>MPlayer</B>的视频输出驱动应该知道活动的视频方式和能够告诉达到VIDIX副驱动服务器的一些视频特性。</LI> +</UL> + +我希望可能<B>MPlayer</B>所有的视频输出驱动都能识别<CODE>:vidix</CODE>副驱动。 + +<H4>使用方式</H4> + +<P>当VIDIX被用作<B>副驱动</B>时(<CODE>-vo vesa:vidix</CODE>)视频方式的配置由视频输出设备执行(简单来说就是<B>vo_server</B>)。 +因此,你能对<B>MPlayer</B>使用与vo_server同样的命令行指令。此外,它能使用<CODE>-double</CODE>作为全局的参数。 +(我建议至少在使用ATI显卡时对VIDIX使用这个参数)。<BR> + 至于<CODE>-vo xvidix</CODE>:目前它能识别下列的选项: <CODE>-fs -zoom -x -y -double</CODE>。</P> + +<P>你还能在命令行中使用第三个副参数直接制定VIDIX的驱动:<BR> + <BR> + <code>mplayer -vo xvidix:mga_vid.so -fs -zoom -double + file.avi</code><BR> + or<BR> + <code>mplayer -vo vesa:vidix:radeon_vid.so -fs -zoom -double -bpp + 32 file.avi</code><BR> + <BR> + 但这有点危险,所以你不应该这么做。在这种情况下,被指定的驱动会被强制使用而其结果是无法预计的(它可以把你的计算机<B>锁死</B>)。 +只有在你绝对确信它能工作,而<B>MPlayer</B>没有自动选择它时,你才能这么做。请把情况报告给开发者。 +正确的使用方法是使用没有参数的VIDIX来使用驱动的自动检测。</P> + +<P>VIDIX是十分新的技术所以在你的系统(OS=abc CPU=xyz)上它极有可能不能正常工作。在这种情况下,你唯一的解决办法是移植它(主要libdha)。 +但它在X11能正常工作的那些系统的上有正常工作的希望。</P> + +<BLOCKQUOTE> + <B>警告:安全风险</B><BR> + 不幸的是你<B>必须</B>有<B>ROOT</B>权限才能使用VIDIX因为需要直接硬件写入。至少给<B>MPlayer</B>的可执行文件设置<B>SUID</B>位。</P> +</BLOCKQUOTE> + +<H4>视频均衡器</H4> + +<P>这是特别为了VIDIX植入的视频均衡器。你能通过man page里描述的<B>1-8</B>数字键或者命令行参数来使用它。<B>MPlayer</B>能识别下列的选项:</P> + +<DL> + <DT><CODE>-brightness</CODE></DT> + <DD>调整视频输出的<B>亮度</B>。它不等同于在显示器面板上或电视上的亮度调整。它把白屏的视频信号的RGB成分逐渐改变到黑屏</DD> + + <DT><CODE>-contrast</CODE></DT> + <DD>调整视频输出的<B>对比度</B>。工作方式跟调整亮度差不多</DD> + + <DT><CODE>-saturation</CODE></DT> + <DD>调整视频输出的<B>饱和度</B>。通过使用这个选项你可以获得灰度输出。</DD> + + <DT><CODE>-hue</CODE></DT> + <DD>调整视频输出的<B>色相</B>。通过使用这个选项你可以获得图像的彩色负片。</DD> + + <DT><CODE>-red_intensity</CODE></DT> + <DD>调整视频信号的<B>红色</B>部分的强度。</DD> + + <DT><CODE>-green_intensity</CODE></DT> + <DD>调整视频信号的<B>绿色</B>部分的强度。</DD> + <DT><CODE>-blue_intensity</CODE></DT> + <DD>调整视频信号的<B>蓝色</B>部分的强度。</DD> +</DL> + +<P>每一参数的取值可以从<B>-1000</B>到<B>+1000</B>。<BR> + 每一参数的默认值<B>0</B>。</P> + +<P><B>注意:</B>并非所有驱动都支持所有这些参数。目前只有<B>radeon_vid.so</B>完全支持视频均衡器。 + 其它驱动部分地仅仅部分地支持这些选择。</P> + +<P><B>例子:</B><BR> + <CODE>mplayer -vo vesa:vidix -brightness -300 -contrast 200 + filename.avi</CODE><BR> + or<BR> + <CODE>mplayer -vo xvidix -red_intensity -50 -saturation 400 -hue 300 + filename.vob</CODE></P> + + +<P><B><A NAME="zr">2.3.1.15 Zr</A></B></P> + +<P>这是用于那些MJPEG视频捕捉/回放显卡(经过DC10+和Buz的测试,对LML33,DC10应该也能工作)的显示驱动(<CODE>-vo zr</CODE>)。 +驱动通过把每帧图像编码成为jpeg格式和然后把它发送到显卡来工作。在jpeg编码时要使用<B>libavcodec</B>,而且必须使用。</P> +用特殊的<I>cinerama</I>模式,你可以通过两个投影仪和两块MJPEG卡用真正的宽银幕方式观看电影。根据分辨率和质量的设置,这个 +驱动可能要求极强的CPU处理能力,如果你的机器太慢的话记住使用<CODE>-framedrop</CODE>,注意:我的AMD K6-2 350MHz(加上 +<CODE>-framedrop</CODE>选项)足够看VCD尺寸的东西和经过缩小的电影 + +<P>这个驱动需要一个内核驱动,可以在<A HREF="http://mjpeg.sourceforge.net">http://mjpeg.sourceforge.net</A>找到, +你必须先让它工作。MJPEG卡的存在能被configure脚本自动检测到,如果自动检测失败,用这个命令强制检测 + +<PRE> + ./configure --enable-zr +</PRE> + +<P>驱动的输出可以用一些选项设置,在man page里面可以找到一份长长的可用选项的描述,一个比较短的选项列表可以运行这个命令获得 + +<PRE> + mplayer -zrhelp +</PRE> + + +<P>缩放和OSD (on screen display)这类功能这个驱动不能处理,但可以用视频滤镜来完成,例如你有一个分辨率是<CODE>512x272</CODE> +的电影,而你希望用你的DC10+用全屏幕观看,主要有三种可能的方法,你可以把电影宽度缩放到<CODE>768</CODE>,<CODE>384</CODE>, +或者<CODE>192</CODE>。考虑到运行速度和质量的原因,我会选择使用快速二次线型软件缩放滤镜把电影缩放到<CODE>384x204</CODE>。 +命令行是这样的 + +<PRE> + mplayer -vo zr -sws 0 -vop scale=384:204 movie.avi +</PRE> + +<P>画面的切割可以用<CODE>crop</CODE>滤镜也可以用驱动自己完成。假设电影太宽了,在你的机器上显示不了,那么你会想要用 +<CODE>-zrcrop</CODE>来切割电影的宽度,那么你应该输入下面的命令 + +<PRE> + mplayer -vo zr -zrcrop 720x320+80+0 benhur.avi +</PRE> + + 如果你想要使用<CODE>crop</CODE>滤镜,你可以运行 + +<PRE> + mplayer -vo zr -vop crop=720:320:80:0 benhur.avi +</PRE> + +<P>多个<CODE>-zrcrop</CODE>就会调用<I>cinerama</I>模式,你可以把电影投射到几个电视或者投影仪上来制造一个大银幕,设想你有 +两个投影仪,左边那个连到你的机器的<CODE>/dev/video1</CODE>而右边那个连到你的机器的<CODE>/dev/video0</CODE>上的DC10+上, +电影的分辨率是<CODE>704x288</CODE>,同时假设你希望右边的投影仪显示黑白效果而右边的投影仪显示的用质量<CODE>10</CODE>来显示jpeg帧 +那么你需要使用下列命令: + +<PRE> + mplayer -vo zr -zrdev /dev/video0 -zrcrop 352x288+352+0 -zrxdoff 0 -zrbw \ + -zrcrop 352x288+0+0 -zrdev /dev/video1 -zrquality 10 movie.avi +</PRE> + +<P>你发现在第二个<CODE>-zrcrop</CODE>之前出现的选项只作用于DC10+,而第二个<CODE>-zrcrop</CODE>之后的选项作用于你的机器。 +在<I>cinerama</I>中能使用的MJPEG卡最多为4块,所以你可以制作一片<CODE>2x2</CODE>的视频墙</P> + +<P>最后还有一个重要的注意事项:不要在回放期间在回放设备上启动或停止XawTV,它将导致你的计算机崩溃。然而,<B>首先</B>启动XawTV, +<B>然后</B>启动<B>MPlayer</B>,等<B>MPlayer</B>播放结束,<B>然后</B>停止XawTV是没有问题的。</P> + + +<H4><A NAME="dvb">2.3.1.16 DVB</A></H4> + +<P><B>MPlayer</B>支持Siemens,Technotrend,Galaxis或Hauppauge提供的使用Siemens DVB芯片的显卡。 +最新的DVB驱动在<A HREF="http://www.linuxtv.org">Linux TV site</A>。如果你想要软件解码你需要一个至少1GHz的CPU。</P> + +<P>Configure应该能检测到你的DVB显卡。如果它没有,使用下列命令强制使用 + +<PRE> + ./configure --enable-dvb +</PRE> + +<P>如果你在非标准的路径下有ost头文件,使用下列命令设置路径</P> + +<PRE> + ./configure --with-extraincdir=<DVB source directory>/ost/include +</PRE> + +<P>然后就可以按正常程序编译安装。</P> + +<H4>使用方法</H4> + +<P>硬件解码(播放标准的MPEG1/2文件)使用下列命令:</P> + +<PRE> + mplayer -ao mpegpes -vo mpegpes file.mpg|vob +</PRE> + +<P>MPEG1的软件解码或转化为其他格式使用下列命令:</P> + +<PRE> + mplayer -ao mpegpes -vo mpegpes -vop lavc yourfile.ext + mplayer -ao mpegpes -vo mpegpes -vop fame,expand yourfile.ext +</PRE> + +<P>注意到,DVB显卡只支持高度为288或576的PAL格式或者240或480的NTSC格式。你<B>必须</B>对其它的高度进行重新缩放, +通过在<CODE>-vop</CODE>选项中使用<CODE>scale=width:height</CODE>指定你想要宽度和高度。DVB显卡可以接受多种宽度, +像720,704,640,512,480,352等等,而且在水平方向上可以硬件缩放,所以大多数情况下你不需要作水平缩放。 +例如对于512x384(宽高比4:3)的DivX使用下列命令:</P> + +<PRE> + mplayer -ao mpegpes -vo mpegpes -vop lavc,scale=512:576 +</PRE> + +<P>如果你使用宽银幕电影而你把它放大到整个屏幕的高度,你可以使用<CODE>expand=w:h</CODE>插件来增加黑带。 +为了看640x384分辨率的DivX,使用下列命令:</P> + +<PRE> + mplayer -ao mpegpes -vo mpegpes -vop lavc,expand=640:576 file.avi +</PRE> + +<P>如果你的CPU对于播放720x576的DivX太慢,尝试横向缩放:</P> + +<PRE> + mplayer -ao mpegpes -vo mpegpes -vop lavc,scale=352:576 file.avi +</PRE> + +<P>如果速度没有提高,尝试竖直缩放:</P> + +<PRE> + mplayer -ao mpegpes -vo mpegpes -vop lavc,scale=352:288 file.avi +</PRE> + +<P>因为OSD和字幕使用OSD插件的扩展特性。因此,不要使用<CODE>expand=w:h</CODE>或者<CODE>expand=w:h:x:y</CODE>, +使用<CODE>expand=w:h:x:y:1</CODE>(第5个参数<CODE>:1</CODE>将开启OSD渲染)。你也许想要把图象向上移动一点来给 +字幕更大的黑色区域。如果你也想要移动字幕,因为他们可能在你电视屏幕的外面,使用<CODE>-subpos <0-100></CODE>来 +调整它(<CODE>-subpos 80</CODE>是个不错的选择)。</P> + +<P>为了在PAL电视上播放非25fps的电影或者因为CPU太慢,加上<CODE>-framedrop</CODE>选项。</P> + +<P>为了保持DivX文件的宽高比并获得最理想的缩放参数(硬件水平缩放和软件垂直缩放并且保持正确宽高比),使用最新的dvbscale插件:</P> + +<PRE> +for 3:4 TV: -vop lavc,expand=-1:576:-1:-1:1,scale=-1:0,dvbscale +for 16:9 TV: -vop lavc,expand=-1:576:-1:-1:1,scale=-1:0,dvbscale=1024 +</PRE> + +<H4>将来</H4> + +<P>如果你有使用问题或想要了解特性通告或者参加这个问题的讨论,加入我们的<A HREF="http://mplayerhq.hu/mailman/listinfo/mplayer-dvb">MPlayer-DVB</A>的邮件列表。 +请记住列表的语言是英语。</P> + +<P>在未来你可以期待使用DVB显卡的自带OSD特性显示OSD和字幕,还有更流畅的非25fps电影回放和实时的MPEG2和MPEG4转换(部分的解压)。</P> + + +<H4><A NAME="dxr3">2.3.1.17 DXR3</A></H4> + +<P><B>MPlayer</B>支持Creative DXR3和Sigma Designs Hollywood Plus卡的硬件加速回放。这些卡都使用SigmaDesigns的 +em8300 MPEG解码芯片</P> + +<P>首先,你将需要正确地安装DXR3/H+的驱动,版本至少0.12.0或者更新的。你能在<A HREF="http://dxr3.sourceforge.net/"> +DXR3 & Hollywood Plus for Linux</A>的站点找到驱动和安装指导。Configure应该自动检测到你的显卡,编译应该没有任何问题。</P> + +<H4>用法</H4> + +<DL> + <DT><CODE>-vo dxr3:noprebuf:<device></CODE></DT> + <DD><CODE>noprebuf</CODE>设定关闭预缓冲。预缓冲是em8300的一个特性,是它可以同时处理一帧以上的视频。这表示当你开启 +预缓冲(默认的)运行时,<B>MPlayer</B>将试图保持视频缓冲区里面总是填满数据的。如果你是用的一台比较慢的机器<B>MPlayer</B> +大概会占用接近100%的CPU。这在你播放纯MPEG流(例如DVD,SVCD之类)的时候尤其明显,因为<B>MPlayer</B>不需要把它重新编码成 +MPEG所以他会以很高的速度填充缓冲区。<BR> + 预缓冲不是在所有的机器上都能够工作(特别是在Athlon的机器上它会被自动关闭)。如果你遇到视频/音频同步的问题就使用<CODE>noprebuf</CODE> +当不用预缓冲运行时em8300对CPU的占用率十分敏感,所以建议你打开<B>MPlayer</B>的<CODE>-framedrop</CODE>选项来防止进一步 +的不同步<BR> + <CODE><device></CODE> = 使用的设备号如果你有超过一块em8300显卡。 + <BR> + 任何这些选择都可以被省略,但是他们必须按顺序指定,例如<CODE>dxr3:fame</CODE>能正常工作,<CODE>dxr3:1</CODE>能正常工作, +但是<CODE>dxr3:1:avcodec</CODE>将无法工作。</DD> + + <DT><CODE>-ao oss:/dev/em8300_ma-X</CODE></DT> + <DD>音频输出,在其中<CODE>X</CODE>是设备号(为0如果只有一块显卡)。</DD> + + <DT><CODE>-aop list=resample:fout=xxxxx</CODE></DT> + <DD>em8300不能工作在采样率低于44100Hz的情况。如果采样率在44100Hz之下,在44100Hz和48000Hz中选择最接近的一个。 +例如对使用22050Hz的电影,因为44100Hz/2 = 22050,所以使用44100Hz,如果是24000Hz就使用48000Hz,因为48000Hz/2 = 24000如此等等。 +这对于数字音频输出不起作用(<CODE>-ac hwac3</CODE>)。</TD></TR> + + <DT><CODE>-vop lace/fame</CODE></DT> + <DD>要在em8300上观看非MPEG的内容(例如DivX或者RealVideo)你必须设置一个libavcodec(lavc)或者libfame(fame)之类的MPEG1视频滤镜 +目前lavc有更好的速度还有更高的图像质量,除非你使用时遇到问题,建议你使用他。<CODE>-vop lavc/fame</CODE>的进一步的信息可以 +参考man page。 + + <DT><CODE>-ac hwac3</CODE></DT> + <DD>em8300支持使用芯片的数字音量输出来播放AC3音频(环绕音效)。阅读<A HREF="codecs.html#hardware_ac3">硬件AC3</A>来了解AC3的 +更进一步的信息</DD> +</DL> + +<H4>Overlay</H4> + +<P>为了使用overlay请在启动<B>MPlayer</B>之前先运行em8300包中的dxr3view。当鼠标光标在窗口上时你能通过按<CODE>T</CODE>键来设置 +dxr3view中的各种选项。</P> + +<H4>MPEG1,MPEG2,VCD和DVD注意事项</H4> + +<P>MPEG1/2格式应该能被<B>MPlayer</B>自动发现而且它将使用DXR3的硬件加速来播放它。否则没有,你可以使用<CODE>-vc mpegpes</CODE>强制硬件加速。 +同时,如果你计划使用任何后处理你必须使用滤镜<CODE>-vc mpeg12</CODE>。</P> + +<P>在一些情况下,使用硬件解码(<CODE>-vc mpegpes</CODE>)时字幕可能与A/V流不同步。这是个已知的bug。em8300也不适于处理比较大的字幕, +可能会有1到2秒的停顿,在这种情况下,唯一的处理方法是使用<CODE>-vc mpeg12</CODE>来播放带有字幕的DVD。当用<CODE>-vc mpeg12</CODE> +选项运行时<B>MPlayer</B>会把视频重新编码成MPEG(即使它已经是MPEGE了)。这表示它需要更多的CPU,同时你可能会损失一些画面质量。</P> + + +<H4><A NAME="tv-out">2.3.1.A 电视输出支持</A></H4> + + +<H5><A NAME="tv-out_matrox">2.3.1.A.1 Matrox G400显卡</A></H5> + +<P>在Linux下你有2种方法使G400的电视输出工作:</P> + +<P><B>注意:</B>对于Matrox G450/G550的电视输出方法看下一节! + +<UL> + <LI><B>XFree86</B>:使用能在<A HREF="http://www.matrox.com">Matrox的站点</A>获得的驱动和HAL模块。这将在电视上实现X。 +<BR><B>这种方法不给你加速回放</B>,不像Windoze! 第二个输出头只有YUV帧缓冲,<I>BES</I>(Back End Scaler,在G200与G400与G450与 +G550显卡上的YUV缩放)无法用于它!windows的驱动以某种方式解决了这个问题,有可能是通过使用3D引擎来缩放,并用YUV帧缓冲显示图像。 +如果你确实想要使用X,使用<CODE>-vo x11 -fs -zoom</CODE>选项,但这将<B>十分缓慢</B>,而且会开启<B>Macrovision</B>版权保护 +(你能使用<A HREF="http://avifile.sourceforge.net/mgamacro.pl">这个</A>perl脚本绕过Macrovision。</LI> + <LI><B>帧缓冲</B>:在2.4的内核中可以使用<B>matroxfb模块</B>而2.2的内核中没有电视输出的特性,所以对它是没有用的。 +你必须在编译时开启所有与matroxfb相关的特性(除了MultiHead之外),并且把他们全部编译成<B>模块</B>! 你还需要开启I2C功能。 + <OL> + <LI> + 进入<CODE>TVout/matroxset</CODE>然后运行<CODE>make</CODE>。把<CODE>matroxset</CODE>安装到你的PATH中的某个地方。</LI> + <LI> + 如果你没有装<CODE>fbset</CODE>,进入<CODE>TVout/fbset</CODE>然后运行<CODE>make</CODE>。把<CODE>fbset</CODE>安装到你的PATH中的某个地方。</LI> + <LI> + 然后进入到<B>MPlayer</B>源码目录中的<CODE>TVout/</CODE>子目录,以root执行<CODE>./modules</CODE>。 +你的文本模式的控制台将进入到帧缓冲模式(没有方法改回来!)。</LI> + <LI>下一步,修改并运行<CODE>./matroxtv</CODE>脚本。这将给你提供一个十分简单的菜单。按<B>2</B>和<B>ENTER</B>。现在你的显示器和电视上应该有一样的图像。 +如果电视(默认PAL)图画有些奇怪的条纹,脚本不能够正确地设置分辨率(使用缺省的640x512)。试试菜单里的其他分辨率或者/和试试fbset。</LI> + </OL> + + <P>Yoh。接着的任务是使tty1上的光标(或者别的什么)消失,和关闭屏幕抑制显示。执行下列的命令:</P> + + <P><CODE>echo -e '\033[?25l'</CODE>或者<CODE>setterm -cursor off<BR>setterm -blank 0</CODE></P> + + <P>你可能想把上述内容脚本,同时也清屏.. 让光标出现的命令是:<BR><CODE>echo -e '\033[?25h'</CODE>或者<CODE>setterm -cursor on</CODE></P> + + <P>Yeah kewl。用<CODE>mplayer -vo mga -fs -screenw 640 -screenh 512 <filename></CODE>来播放电影<BR> + (如果你正在使用X,用CTRL-ALT-F1之类的快捷键换成matroxfb!)<BR> + 分辨率换成640x512如果你用的不是这个分辨率。<BR> + <B>享受超快超多特性的Matrox电视输出(比Xv还要好)!</B></P> + </LI> +</UL> + +<H5><A NAME="tv-out_matrox_g450">2.3.1.A.2 Matrox G450/G550 cards</A></H5> + +<P>这些显卡的电视输出支持最近刚被引入,而且还没有进入内核的主流。据我所知目前不能使用<B>mga_vid</B> +因为G450/G550的驱动只能工作在一种配置下面:第一个CRTC芯片(有更多特性)接第一个display(显示器),第二个 +CRTC(没有<B>BES</B> -- BES的解释看上面G400的部分)接电视上,所以你目前只能使用<B>MPlayer</B>的 +<I>fbdev</I>的输出设备。</P> + +<P>目前第一个CRTC不能传送到第二个头。内核的matroxfb驱动的作者 -- Petr Vandrovec -- 可能正在努力支持 +它,使用把第一个CRTC的输出同时显示在两个头上的方法,像目前G400推荐的一样,看上面的部分。</P> + +<P>需要的内核补丁和howto的细节可以从<A HREF="http://www3.sympatico.ca/dan.eriksen/matrox_tvout"> +http://www3.sympatico.ca/dan.eriksen/matrox_tvout</A>下载。</P> + +<H5><A NAME="tv-out_ati">2.3.1.A.2 ATI显卡</A></H5> + +<H5>引言</H5> +<P>ATI目前不想对他的任何一种电视输出芯片提供Linux下的支持,主要是由于他们的授权的Macrovision技术。</P> + +<H5>ATI显卡在Linux上电视输出的支持情况</H5> + +<UL> + <LI><B>ATI Mach64 </B>:<A HREF="http://gatos.sf.net">gatos</A>支持。</LI> + <LI><B>ASIC Radeon VIVO </B>:<A HREF="http://gatos.sf.net">gatos</A>支持。</LI> + <LI><B>Radeon</B>和<B>Rage128</B>:<B>MPlayer</B>支持!查阅<a href="#vesa">VESA驱动</a>和<A HREF="#vidix">VIDIX</A>两节。</LI> +</UL> + +<P>在其它显卡上,只能使用<a href="#vesa">VESA驱动</a>,没有VIDIX可用。需要强大的CPU。</P> + +<P>你唯一需要做的事情 -- <B>在启动你的电脑之前插上电视连接器的插头</B>因为视频BIOS只在自举期间初始化一次。</P> + + +<H5><A NAME="tv-out_voodoo">2.3.1.A.3 Voodoo 3</A></H5> + +<P>查阅<A HREF="http://www.iki.fi/too/tvout-voodoo3-3000-xfree">这个网址</A>。</P> + +</BODY> +</HTML>