1
0
mirror of https://github.com/mpv-player/mpv synced 2025-02-18 05:37:04 +00:00
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@7598 b3059339-0415-0410-9bf9-f77b7e298cf2
This commit is contained in:
jaf 2002-10-05 10:19:07 +00:00
parent 0825666195
commit 65d1d8d948
12 changed files with 5270 additions and 0 deletions

View File

@ -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>
&nbsp;&nbsp;&nbsp;&nbsp;<A HREF="http://mplayerhq.hu/mailman/listinfo/mplayer-users">http://mplayerhq.hu/mailman/listinfo/mplayer-users</A><BR>
同时把你的bug发送到<BR>
&nbsp;&nbsp;&nbsp;&nbsp;<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>硬件 &amp; 驱动:</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>显卡驱动类型 &amp; 版本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>声卡类型 &amp; 驱动,例如:。
<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>&nbsp;&nbsp;&nbsp;&nbsp;mplayer -v [options] [filename] &amp;&gt; mplayer.log</CODE></P>
<P>如果你的问题是具体对于一个或更多的文件的,那么请上传捣乱的文件:</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;<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>&nbsp;&nbsp;&nbsp;&nbsp;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>&nbsp;&nbsp;&nbsp;&nbsp;<CODE>gdb mplayer --core=core -batch --command=command_file &gt; mplayer.bug</CODE></P>
<H4>如何保存一个可再现的崩溃的信息</H4>
开启调试代码重新编译<B>MPlayer</B>
<P><CODE>&nbsp;&nbsp;&nbsp;&nbsp;./configure --enable-debug=3<BR>
&nbsp;&nbsp;&nbsp;&nbsp;make</CODE></P>
然后用gdb运行<B>MPlayer</B>
<P><CODE>&nbsp;&nbsp;&nbsp;&nbsp;gdb mplayer</CODE></P>
现在你在gdb内。输入
<P><CODE>&nbsp;&nbsp;&nbsp;&nbsp;run -v [options-to-mplayer] filename</code></P>
然后再现你的崩溃。一旦你成功了gdb将回到命令行你需要输入
<P><CODE>&nbsp;&nbsp;&nbsp;&nbsp;bt<BR>
&nbsp;&nbsp;&nbsp;&nbsp;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>

82
DOCS/Chinese/cd-dvd.html Normal file
View File

@ -0,0 +1,82 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML>
<HEAD>
<TITLE>CDDVDVCD -- 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>&nbsp;&nbsp;&nbsp;&nbsp;<CODE>hdparm -E [speed] [cdrom device]</CODE></P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;<CODE>setcd -x [speed] [cdrom device]</CODE></P>
<P>你也可以试试</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;<CODE>echo current_speed:4 &gt; /proc/ide/[cdrom device]/settings</CODE></P>
<P>但这样你需要root权限。下面这个命令也有用处</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;<CODE>echo file_readahead:2000000 &gt; /proc/ide/[cdrom device]/settings</CODE></P>
<P>这把文件预读取设置为2MB对于刮伤的CD-ROM有好处。推荐你同时也用hdparm调整你的CD-ROM光驱</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;<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 &lt;track&gt; [-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>

354
DOCS/Chinese/codecs.html Normal file
View File

@ -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的本地的解码器;-)OpenDivXDivX4DivX5M$ MPEG4 v1v2和其它的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>MJPEGAVIDVCR2ASV2和其它硬件格式</LI>
<LI>VIVO 1.02.0I263和其它h263(+)的变种</LI>
<LI>FLI/FLC</LI>
<LI>libavcodec的RealVideo 1.0解码器和使用RealPlayer库的RealVideo 2.03.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>&nbsp;&nbsp;&nbsp;&nbsp;<A HREF="http://avifile.sourceforge.net">http://avifile.sourceforge.net</A><BR>
&nbsp;&nbsp;&nbsp;&nbsp;<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方式
(YUY2UYVY)使用<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 3DivX 4DivX 5Windows 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>&nbsp;&nbsp;&nbsp;&nbsp;<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.03.04.0(fourcc RV20RV30RV40) -- 解码由<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平台上的LinuxFreeBSDNetBSD和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>alawmsgsmpcm和其它简单的老的音频格式</LI>
<LI>VIVO音频(g723Vivo Siren)的</LI>
<LI>RealAudioDNET(低比特率的AC3)Cook</LI>
</UL>
<H4><A NAME="software_ac3">2.2.2.1 软件AC3解码</A></H4>
<P>这是含有AC3音频的文件的默认解码器。</P>
<P>AC3解码器能为了24或者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>&nbsp;&nbsp;&nbsp;&nbsp;<CODE>UNKNOWN video codec: HFYU (0x55594648)</CODE></P>
<P>它意味着你的AVI在编码时使用了HFYU fourcc(HFYU = HuffYUV codecDIV3 = DivX Low Motion等等...)
的编码格式。现在你知道了你必须查明Windows为了播放这个文件装载了哪一个DLL。在我们的情况下
<CODE>system.ini</CODE>在这样的一行上包含这个信息:</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;<CODE>VIDC.HFYU=huffyuv.dll</CODE></P>
<P>因此,你需要<CODE>huffyuv.dll</CODE>文件。注意音频解码器通过MSACM前缀指定</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;<CODE>msacm.l3acm=L3codeca.acm</CODE></P>
<P>这是MP3编码格式。现在你有了所有必要的信息(fourcc解码器文件AVI样本),把你的解码器支持要求通过邮件提交,
并把相关文件上载到我们的FTP站点</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;<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 -&gt; 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-CodecMPlayer目前不支持</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 -&gt; Properties -&gt; Advanced可以获得解码器名。如果没有你真不走运。猜猜看吧(例如搜索TrueMotion)。
<LI>如果找到GUID你将看见FriendlyName和CLSID域。写出16字节CLSID这就是我们需要的GUID。
</OL>
<P><B>注意:</B>如果搜索失败,试试选上所有的复选框。你可能找到错误的内容,不过说不定你会走运...</P>
<P>现在你有所有必要的信息(fourccGUID解码器文件AVI样本)把你的解码器支持要求通过邮件提交并把相关文件上载到我们的FTP站点</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;<CODE>ftp://ftp.mplayerhq.hu/MPlayer/incoming/[codecname]/</CODE></P>
</BODY>
</HTML>

5
DOCS/Chinese/default.css Normal file
View File

@ -0,0 +1,5 @@
body {
font-family : Arial, Helvetica, sans-serif;
font-size : 12px;
background : white;
}

File diff suppressed because it is too large Load Diff

274
DOCS/Chinese/encoding.html Normal file
View File

@ -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 &lt; 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>12或者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>&nbsp;&nbsp;&nbsp;&nbsp;rm frameno.avi</CODE> -- 删掉这个文件它可能来自以前的3-pass编码(它会干扰当前这个)<BR>
<CODE>&nbsp;&nbsp;&nbsp;&nbsp;mencoder -dvd 2 -lavcopts
-vcodec=mpeg4:more_options -o movie.avi -pass 1<BR>
&nbsp;&nbsp;&nbsp;&nbsp;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 &lt;file/DVD&gt; -ovc frameno -o frameno.avi</CODE></P>
<P>将创建一个只有音频的avi文件<B></B>包含要求的音频流。不要忘记<CODE>-lameopts</CODE>,如果需要的话设置它。如果你对一部长的电影进行编码,
<B>MEncoder</B>在这个pass结束之后将对于650Mb700Mb和800Mb的目标大小打印推荐的比特率值。</P></LI>
<LI>第二次pass
<P><CODE>mencoder &lt;file/DVD&gt; -oac copy -pass 1
-ovc divx4 -divx4opts br=&lt;bitrate&gt;</CODE></P>
<P>又称为DivX4视频编码的第一次pass。可以选择指定在上一步结束时<B>MEncoder</B>打印的视频比特率。</P></LI>
<LI>第三次pass
<P><CODE>mencoder &lt;file/DVD&gt; -oac copy -pass 2
-ovc divx4 -divx4opts br=&lt;bitrate&gt;</CODE></P>
<P>又称为DivX4视频编码的第二次pass。可以选择指定在上一步结束时<B>MEncoder</B>打印的视频比特率。在这次pass中<CODE>frameno.avi</CODE>
中的音频将被插入到目的文件中..这就全部搞定了!</P></LI>
</OL>
<H4>3-pass编码的例子</H4>
<P><CODE>&nbsp;&nbsp;&nbsp;&nbsp;rm frameno.avi</CODE> -- 移去这个文件它可能来自以前的3-pass编码(它会干扰当前这个)<BR>
<CODE>&nbsp;&nbsp;&nbsp;&nbsp;mencoder -dvd 2 -ovc frameno
-o frameno.avi<BR>
&nbsp;&nbsp;&nbsp;&nbsp;mencoder -dvd 2
-lavcopts vcodec=mpeg4:more_options -oac copy -o movie.avi -pass 1<BR>
&nbsp;&nbsp;&nbsp;&nbsp;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>&nbsp;&nbsp;&nbsp;&nbsp;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>选项) 直接了当。可以把一个外部音频文件(MP3Vorbis)合波到输出流中。
使用<CODE>-audiofile &lt;filename&gt;</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>&nbsp;&nbsp;&nbsp;&nbsp;mencoder -dvd 2 -o title2.avi -ovc lavc
-lavcopts vcodec=mjpeg</CODE></P>
<H4><A NAME="image_files">2.4.2.6 从多个图象文件(JPEGPNG或TGA)的输入编码</A></H4>
<P><B>MEncoder</B>具有从一个或多个JPEGPNG或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>接着把解码后的图象喂给所选的的视频压缩器(DivX4Xvidffmpeg 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>
&nbsp;&nbsp;<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>
&nbsp;&nbsp;<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>
&nbsp;&nbsp;<CODE>mencoder \*.jpg -mf on:w=800:h=600:fps=25 -ovc copy
-o output.avi</CODE></P>
<P><I>用当前目录中的所有PNG文件创建一个非压缩的文件</I><BR>
&nbsp;&nbsp;<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>
&nbsp;&nbsp;<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>
&nbsp;&nbsp;<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>
&nbsp;&nbsp;<CODE>rm subtitles.idx subtitles.sub</CODE><BR>
&nbsp;&nbsp;<CODE>mencoder -dvd 1 -vobsubout subtitles -vobsuboutindex 0
-sid 2 -o frameno.avi -ovc frameno</CODE><BR>
&nbsp;&nbsp;<CODE>mencoder -dvd 1 -oac copy -ovc divx4 -pass 1</CODE><BR>
&nbsp;&nbsp;<CODE>mencoder -dvd 1 -oac copy -ovc divx4 -pass 2 -vobsubout
subtitles -vobsuboutindex 1 -sid 5</CODE></P>
<P><I>从一个MPEG文件中复制法语字幕</I><BR>
&nbsp;&nbsp;<CODE>rm subtitles.idx subtitles.sub</CODE><BR>
&nbsp;&nbsp;<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>

586
DOCS/Chinese/faq.html Normal file
View File

@ -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>&nbsp;</DD>
<DT>QConfigure结束时出现这样的文字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>&nbsp;</DD>
<DT>Q"No such file or directory"是什么意思?</DT>
<DD>A有可能真的没有这样文件或目录。</DD>
<DD>&nbsp;</DD>
<DT>Qgcc2.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>&nbsp;</DD>
<DT>Q好极了那么我使用Red Hat/Mandrake的gcc 3.0.1,我没问题!</DT>
<DD>A因为那些编译器同样有问题。为了了解当前的编译器对MPlayer的支持状况参见<A HREF="documentation.html#installation">安装</A>一节。</DD>
<DD>&nbsp;</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>&nbsp;</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>&nbsp;</DD>
<DT>QSDL输出不能工作或者编译。问题在...</DT>
<DD>ASDL 1.2.x经过测试能够工作另外SDL 1.1.7+可能能工作。任何以前的版本肯定<B>不能</B>工作。因此如果你选择使用这样的版本,是你自己的责任。</DD>
<DD>&nbsp;</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>&nbsp;</DD>
<DT>Q不能编译找不到uint64_t inttypes.h之类的东西...</DT>
<DD>A把etc/inttypes.h复制到<B>MPlayer</B>目录下(<CODE>cp etc/inttypes.h .</CODE>)然后再试一次...</DD>
<DD>&nbsp;</DD>
<DT>Q我在Pentium III上运行Linux但是<CODE>./configure </CODE>没有找到SSE...</DT>
<DD>A只有2.4.x的内核支持SSE(或者试试2.2.19或更新的版本,但准备好出问题)。</DD>
<DD>&nbsp;</DD>
<DT>Q我有G200与G400我如何编译使用mga_vid驱动</DT>
<DD>A阅读<A HREF="video.html#mga_vid">mga_vid文档</A></DD>
<DD>&nbsp;</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>&nbsp;</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>
&nbsp;&nbsp;&nbsp;&nbsp;<CODE>$ ln -sf /usr/X11R6 /usr/X11</CODE><BR>
&nbsp;&nbsp;&nbsp;&nbsp;<CODE>$ ln -sf /usr/X11R6/include/X11 /usr/include/X11</CODE><BR>
你的发行版可能不是<A HREF="http://www.pathname.com/fhs/">文件系统层次标准</A></DD>
<DD>&nbsp;</DD>
<DT>Q我不能编译SVGAlib。我使用2.3/2.4的内核...</DT>
<DD>A你必须编辑SVGAlib的Makefile.cfg把<CODE>BACKGROUND = y</CODE>注释掉。</DD>
<DD>&nbsp;</DD>
<DT>Q我的MPlayer编译了libdvdcss/libdivxdecore的支持但是当我试图起动它时它说<BR>
<CODE>&gt; 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>&nbsp;</DD>
<DT>QHmm奇怪。我加载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>&nbsp;</DD>
<DT>Q编译<B>MEncoder</B>过程中在连接时出现segfaults</DT>
<DD>A这是连接程序的问题。把binutils升级应该有用(2.11.92.*或者更新版本应该不错)。由于它不是我们的问题,
请一定<B>不要</B>报告!</DD>
<DD>&nbsp;</DD>
<DT>QMPlayer在pthread check时因为segmentation fault而崩溃</DT>
<DD>Achmod 644 /usr/lib/libc.so</DD>
<DD>&nbsp;</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是的。有些视频输出的驱动像xvdga或者(x)mga是唯一的所以你将不能够运行超过一个使用这样的视频输出驱动的<B>MPlayer</B>实例。
音频驱动也在不是很严重的程度上存在这种问题。并非所有的驱动都允许在同样的设备上播放多重流。</DD>
<DD>&nbsp;</DD>
<DT>Q在左上角中有一个计时器。我怎么能去掉它</DT>
<DD>A<CODE>o</CODE>或者使用<CODE>-osdlevel</CODE>选项。</DD>
<DD>&nbsp;</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>&nbsp;</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>&nbsp;</DD>
<DT>Q我不想要他们出现怎么办</DT>
<DD>A使用<CODE>-quiet</CODE>选项并阅读man page。</DD>
<DD>&nbsp;</DD>
<DT>Q为什么有些文件的视频输出的cpu占用是零(0%)</DT>
<DD>A1它不是零但它是由解码器调用的不能被单独测量。你应该试着先用<CODE>-vo null</CODE>播放文件然后用<CODE>-vo ...</CODE>播放,
检查它们的不同来查看视频速度。</DD>
<DD>A2你使用了直接渲染那是由解码器自己渲染显存。在这种情况下解码占用的百分比也包含了显示占用的百分比。</DD>
<DD>&nbsp;</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>&nbsp;</DD>
<DT>Q有关于MPlayer的邮件列表吗</DT>
<DD>A有的。看我们的主页的<A HREF="http://www.mplayerhq.hu/homepage/info.html">信息页</A>的底部来订阅。</DD>
<DD>&nbsp;</DD>
<DT>Q当我试图播放我最喜爱的视频时我发现一个讨厌的bug我应该报告谁</DT>
<DD>A请阅读<A HREF="bugreports.html">bug报告指导</A>并遵照上面的指令做。</DD>
<DD>&nbsp;</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>&nbsp;</DD>
<DT>QUmm"IdegCounter"是什么东东?</DT>
<DD>A匈牙利语和英语的结合。匈牙利语"Ideg"是神经质的意思发音类似于“ydaegh”。它最初用来度量A'rpi神经质
在一些CVS的代码(umm)“神秘的”消失之后;)</DD>
<DD>&nbsp;</DD>
<DT>Q"Faszom(C)ounter"又是什么?</DT>
<DD>A“Fasz”是你不会想要知道的匈牙利词汇其他的跟MPlayer开发者们的邪恶的脑袋有关。</DD>
<DD>&nbsp;</DD>
<DT>QLIRC不工作因为...</DT>
<DD>A你明确你使用的是<CODE>mplayer</CODE>而不是<CODE>mplayer-lirc</CODE>吗? 注意,<CODE>mplayer-lirc</CODE>
使用了很长时间包括0.60的发行版,但是它最近又变成<CODE>mplayer</CODE>了。</DD>
<DD>&nbsp;</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>&nbsp;</DD>
<DT>Qonscreen display(OSD)不停的闪烁!</DT>
<DD>A你使用单缓冲的vo驱动(x11,xv)。对于xv使用<CODE>-double</CODE>选项。也试试<CODE>-vop expand</CODE></DD>
<DD>&nbsp;</DD>
<DT>Qlibavcodec这种东东到底是什么</DT>
<DD>A参见<A HREF="codecs.html#libavcodec">libavcodec</A>一节。</DD>
<DD>&nbsp;</DD>
<DT>Q但是Configure告诉我"Checking for libavcodec ... no"</DT>
<DD>A你需要从FFmpeg的CVS中获得libavcodec。阅读<A HREF="codecs.html#libavcodec">libavcodec一节</A>的指令。</DD>
<DD>&nbsp;</DD>
<DT>QIcewm的任务条不断的挡住全屏幕的电影</DT>
<DD>A这不应该再发生了但如果它确实仍然发生使用<CODE>-icelayer</CODE>选项并向
<A HREF="http://mplayerhq.hu/pipermail/mplayer-users/">mplayer-users</A>邮件列表报告。</DD>
<DD>&nbsp;</DD>
<DT>Q我不能访问GUI菜单。我按下右键但我不能访问任何菜单项</DT>
<DD>A你使用的是FVWM吗 试试下列方法:<BR>
Start -&gt; Settings -&gt; Configuration -&gt; Base Configuration<BR>
把"Use Applications position hints"设为"Yes"。</DD>
<DD>&nbsp;</DD>
<DT>Q我能在后台中运行MPlayer吗</DT>
<DD>A用法<CODE>mplayer &lt;options&gt; &lt;filename&gt; &lt; /dev/null &amp;</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>&nbsp;</DD>
<DT>Q...avifile/aviplay能工作但MPlayer不能。</DT>
<DD>A<B>MPlayer</B>不是avifile。它们之间唯一的共同之处Win32 DLL装载器。codecs(DLL)集,同步,信号分离等等完全不同
所以不应该被比较。如果什么东西能用aviplay播放并不意味着<B>MPlayer</B>能工作,反之亦然。</DD>
<DD>&nbsp;</DD>
<DT>Q播放AVI文件时音频不同步。</DT>
<DD>A试试<CODE>-bps</CODE><CODE>-nobps</CODE>选项。如果还没有改善,阅读<A HREF="bugreports.html">
这个</A>并把文件上载到FTP上。</DD>
<DD>&nbsp;</DD>
<DT>QMPlayer在使用l3codeca.acm的时候因为一些错误而退出。</DT>
<DD>A检查<CODE>ldd /usr/local/bin/mplayer</CODE>的输出。如果它包含<BR>
&nbsp;&nbsp;&nbsp;&nbsp;<CODE>libc.so.6 =&gt; /lib/libc.so.6 (0x4???????)</CODE><BR>
"?"可以是任意数字表示没有问题,错误不在这里。如果它是:<BR>
&nbsp;&nbsp;&nbsp;&nbsp;<CODE>libc.so.6 =&gt; /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>&nbsp;</DD>
<DT>Q我的电脑播放分辨率640x300而且是立体声的mp3的M$ DivX AVI文件时非常慢。当我使用-nosound选项时一切正常(但没有声音)。</DT>
<DD>A你的机器太慢或者你的声卡驱动坏了。查阅文档看你是否能提高性能。</DD>
<DD>&nbsp;</DD>
<DT>QMPlayer由于"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>&nbsp;</DD>
<DT>Q我有个关于[your window manager]跟xv/xmga/sdl/x11模式下全屏的问题...</DT>
<DD>A读取我们的<A HREF="bugreports.html">bug报告指导</A>并送一个正确的bug报告给我们</DD>
<DD>&nbsp;</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>&nbsp;</DD>
<DT>Q当KDE下的运行MPlayer我只看到一个黑色的屏幕什么都没有。在大约一分钟之后才开始播放视频。</DT>
<DD>AKDE的arts守护进程阻塞了声卡设备。一直等到视频开始或者在控制中心中禁用arts。如果你想使用arts的音频
将音频输出指定为我们本地的arts音频驱动<CODE>-ao arts</CODE>)。如果它失败或者没有被编译进来尝试SDL
(<CODE>-ao sdl</CODE>)并且确保你的SDL能处理arts的音频。还有另一个选择是用artsdsp运行<B>MPlayer</B></DD>
<DD>&nbsp;</DD>
<DT>Q我有一个AVI文件当用<CODE>-vc odivx</CODE>播放时时,出现灰色屏幕,用<CODE>-vc divx4</CODE>时,出现绿色屏幕。</DT>
<DD>A这不是DivX文件而是M$ MPEG4v3。更新你的codecs.conf。</DD>
<DD>&nbsp;</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>&nbsp;</DD>
<DT>Q我有个MJPEG文件能用其它播放器播放但是MPlayer只显示一个黑色的图象。</DT>
<DD>A<CODE>codecs.conf</CODE>中禁用Windows DLL或者使用<CODE>-vc ffmjpeg</CODE>选项(为此你需要为MPlayer编译libavcodec支持)。</DD>
<DD>&nbsp;</DD>
<DT>Q当我试图从我的电视选台器截取时它能工作但是颜色很奇怪。用其它程序没问题。</DT>
<DD>A你的卡片有可能错误报告了它的色彩空间容量。试试YUY2而不是缺省的YV12(见<A HREF="documentation.html#tv">电视输入文档</A>)。</DD>
<DD>&nbsp;</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>&nbsp;</DD>
<DT>Q我的同步有问题。一些AVI我能正常播放另外一些却是以双倍速度播放</DT>
<DD>A你的声卡/驱动buggy。很有可能它的固定在44100Hz而你试图播放22050Hz的音频的文件。试试resample插件。</DD>
<DD>&nbsp;</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>&nbsp;</DD>
<DT>Q我用我的笔记本播放文件时得到十分奇怪的CPU百分值(太大了)。</DT>
<DD>A这是你的笔记本的电源管理/节能系统(BIOS不是内核)的影响。起动你的笔记本<B>之前</B>插上外部电源。</DD>
<DD>&nbsp;</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 -&gt; NOSOUND
Audio: no sound!!!
Start playing...
</PRE>
</DT>
<DD>A你是运行的KDE或者GNOME并且起动了arts或者esd音频守护进程吗 试试禁用音频守护进程,或者使用<CODE>-ao arts</CODE>
选项让<B>MPlayer</B>使用arts。</DD>
<DD>&nbsp;</DD>
<DT>QDGA驱动器怎么样了 我找不到它!</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>&nbsp;</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>
&nbsp;&nbsp;&nbsp;&nbsp;<CODE>chown root /usr/local/bin/mplayer</CODE><BR>
&nbsp;&nbsp;&nbsp;&nbsp;<CODE>chmod 755 /usr/local/bin/mplayer</CODE><BR>
&nbsp;&nbsp;&nbsp;&nbsp;<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>&nbsp;</DD>
<DT>Q当使用Xvideo时我的Voodoo 3/Banshee报告说<BR>
<CODE>X Error of failed request: BadAccess (attempt to access private
resource denied)<BR>
&nbsp;&nbsp;Major opcode of failed request: 147 (MIT-SHM)<BR>
&nbsp;&nbsp;Minor opcode of failed request: 1 (X_ShmAttach)<BR>
&nbsp;&nbsp;Serial number of failed request: 26<BR>
&nbsp;&nbsp;Current serial number in output stream:27</CODE></DT>
<DD>AXFree86 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>&nbsp;</DD>
<DT>QOpenGL(<CODE>-vo gl</CODE>)输出不工作(锁死/黑色窗口/X11出错/...)。</DT>
<DD>A你的OpenGL驱动不支持动态材质更换(glTexSubImage)。已知的是它在nVidia的二进制的家伙上不工作。同时也知道它在Utah-GLX/DRI
和Matrox G400显卡上能工作。Radeon显卡加DRI也行。其它显卡加DRI不行。它同样不能在3DFX显卡上工作因为256x256材质大小限制。</DD>
<DD>&nbsp;</DD>
<DT>Q我有一块nVidia TNT/TNT2显卡而我的电影的下面总有一个颜色奇怪的带子 这个是什么故障?</DT>
<DD>A这是nVidia二进制X驱动的一个bug。这些bug仅出现在TNT/TNT2显卡上我们什么也干不了。要解决问题升级到最新版本的nVidia二进制的驱动。
如果仍然不行对nVidia抱怨去吧</DD>
<DD>&nbsp;</DD>
<DT>Q我使用nVidia XYZ显卡当我单击显示GUI的显示窗口来触发GUI面板时在我单击的地方出现一个黑色方块。我安装了最新的驱动。</DT>
<DD>A没错nVidia修正了上一个的错误(上面)并且引进了新的bug。让我们祝贺他们。更新<A HREF="users_against_developers.html#nvidia">
nVidia</A>说,这已经修正了。</DD>
<DD>&nbsp;</DD>
<DT>Q当我使用GUI时如果使用SDL视频输出会创建第二个视频窗口。</DT>
<DD>A知道目前还没有使GUI能使用SDL。</DD>
<DD>&nbsp;</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) &gt;= c_adt-&gt;nr_of_vobs' failed.</CODE></DT>
<DD>A这是已知的libdvdread 0.9.1/0.9.2的bug。使用<B>libmpdvdkit</B>就在MPlayer的源代码中并且缺省使用</DD>
<DD>&nbsp;</DD>
<DT>Q我能在我的Solaris下的可爱的SPARC上编译libdvdread和libdvdcss吗</DT>
<DD>A天知道...据说它能工作所以请测试它并且提供反馈。也参阅libdvdread的文件及其主页。我们不是libdvdread的作者。使用<B>libmpdvdkit</B>
就在MPlayer的源代码中并且缺省使用。</DD>
<DD>&nbsp;</DD>
<DT>Q字幕怎么样 MPlayer能显示他们吗</DT>
<DD>A是。参见文档的<A HREF="cd-dvd.html#dvd">DVD chapter</A>部分。</DD>
<DD>&nbsp;</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>&nbsp;</DD>
<DT>Q我一定需要(setuid) root/setuid fibmap_mplayer来播放DVD吗</DT>
<DD>A只用于老式的DVD支持。然而你必须有适当的DVD设备项目的权限(在<CODE>/dev/</CODE>里)。</DD>
<DD>&nbsp;</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>&nbsp;</DD>
<DT>Q可以单独播放/编码选择的chapter吗</DT>
<DD>A可以试试<CODE>-chapter</CODE>选项。</DD>
<DD>&nbsp;</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>&nbsp;</DD>
<DT>Q我想要+/- 1帧来搜索而不是10秒。</DT>
<DD>A这不会被我们实现。它曾被实现过但是它弄乱了A/V同步。如果你愿意就实现它并且发送补丁。不要要求它。</DD>
<DD>&nbsp;</DD>
<DT>Q哪里有Windows版本</DT>
<DD>A它还没有发行并且将来也不会。看看Windows的情况(开源的ASF分析器开源的ASF编码器等等)然后你就知道为什么了。
我们不想进监狱。顺便说一下,你可以自己编译它,在<A HREF="documentation.html#cygwin">Cygwin</A>下。</DD>
<DD>&nbsp;</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>&nbsp;</DD>
<DT>Q我怎么创建VCD</DT>
<DD>A试试<CODE>TOOLS</CODE>目录下的<CODE>mencvcd</CODE>脚本。使用它你能把DVD或者其它电影编码成为VCD或者
SVCD格式甚至直接把它们刻到CD上。</DD>
<DD>&nbsp;</DD>
<DT>Q我的电视选台器工作我能用MPlayer听到声音观看视频但是MEncoder不把音频编码</DT>
<DD>ALinux的电视音频编码目前还没有实现我们正在努力。目前它只在BSD上工作。</DD>
<DD>&nbsp;</DD>
<DT>Q我不能把DVD字幕编码成AVI</DT>
<DD>A你必须正确设定<CODE>-sid</CODE>选项!</DD>
<DD>&nbsp;</DD>
<DT>QMEncoder启动时出现segfaults</DT>
<DD>A升级DivX4Linux。</DD>
<DD>&nbsp;</DD>
<DT>Q我如何仅对一张DVD中选定的chapter进行编码</DT>
<DD>A正确使用<CODE>-chapter</CODE>选项,像这样:
<CODE>-chapter 5-7</CODE></DD>
<DD>&nbsp;</DD>
<DT>Q我试图在VFAT文件系统上处理2GB+的文件。能行吗?</DT>
<DD>AVFAT不支持2GB+的文件。</DD>
<DD>&nbsp;</DD>
<DT>Q为什么MEncoder显示的推荐比特率都是负的</DT>
<DD>A因为你编码的音频的比特率太大在任何CD上不能用于电影。检查你是否正确安装了libmp3lame。</DD>
</DL>
</BODY>
</HTML>

185
DOCS/Chinese/formats.html Normal file
View File

@ -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>的例子有MPEG1MPEG2DivXIndeo53ivx。<BR>
文件<B>格式</B>的例子有MPGAVIASF。</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>

768
DOCS/Chinese/skin.html Normal file
View File

@ -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">附录AGUI消息</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 &lt;mayday@freemail.hu&gt;</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)可以是BMPPNG或者非压缩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>
描述。后者一个纯文本文件规定图像中每一字符的xy坐标和大小(图象文件和他的字体描述文件<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>&lt;filename&gt;.&lt;ext&gt;</code>文件,
<code>&lt;ext&gt;</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>' .&nbsp;.&nbsp;. '<code>end</code>'块中的项目的列表。
<dl>
<dt><a name="main.base">
<b><code>base = image, X, Y</code></b>
</a></dt>
<dd>
指定用于主窗口的背景图象。窗口将显示在屏幕上的<code>XY</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>' .&nbsp;.&nbsp;. '<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>'.&nbsp;.&nbsp;. '<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>XY</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>定义ABC三个字符。
<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>

230
DOCS/Chinese/sound.html Normal file
View File

@ -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>&nbsp; &nbsp;</TD><TD VALIGN=top>oss</TD><TD>&nbsp;&nbsp;</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&amp;release_id=59602">sourceforge.net</A></TD></TR>
<TR><TD COLSPAN=3><B>Aureal Vortex 2 </B></TD></TR>
<TR><TD>&nbsp;&nbsp;&nbsp;&nbsp;</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>&nbsp;&nbsp;<CODE>mplayer media.avi -aop list=resample,format</CODE></P>
<P>将让声音先通过重新采样插件然后再经过格式化插件。</P>
<P>插件也有改变他们行为的开关。这些开关在下面将详细地解释。如果开关被省略,插件将按照默认设置运行。
这是一个关于如何组合使用指定参数的插件的例子:</P>
<P>&nbsp;&nbsp;<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单位是&lt;Hz&gt;</P>
<P>用法:<BR>
&nbsp;&nbsp;<CODE>mplayer media.avi -aop list=resample:fout=&lt;required
frequency in Hz, like 44100&gt;</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>
&nbsp;&nbsp;<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>
&nbsp;&nbsp;<CODE>mplayer media.avi -aop
list=format:format=&lt;required output format&gt;</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>
&nbsp;&nbsp;<CODE>mplayer media.avi -aop
list=volume:volume=&lt;0-255&gt;</CODE></P>
<P>这插件也有压缩器或称为“软控制”的功能。
压缩用于声音的动态范围十分高或者如果扬声器的动态范围十分低的的情况。注意这个特性将造成扭曲并且应该
是最后一种被考虑的手段。</P>
<P>Usage:<BR>
&nbsp;&nbsp;<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>
&nbsp;&nbsp;<CODE>mplayer media.avi -aop list=extrastereo</CODE><BR>
&nbsp;&nbsp;<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>
&nbsp;&nbsp;<CODE>mplayer media.avi -aop list=volnorm</CODE><BR>
<H5><A NAME="surround">2.3.2.2.8 环绕</A></H5>
<P>谁应该在什么时候写点什么。</P>
</BODY>
</HTML>

View File

@ -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&amp;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&amp;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>

1016
DOCS/Chinese/video.html Normal file

File diff suppressed because it is too large Load Diff