1
0
mirror of https://github.com/mpv-player/mpv synced 2025-04-17 04:40:09 +00:00

sync by <hephooey@fastmail.fm>

git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@9081 b3059339-0415-0410-9bf9-f77b7e298cf2
This commit is contained in:
diego 2003-01-24 21:35:40 +00:00
parent 73efd100f6
commit f9cfd51b30
11 changed files with 2073 additions and 1424 deletions

View File

@ -2,65 +2,73 @@
<HTML>
<HEAD>
<TITLE>bug报告 -- MPlayer -- Linux的电影播放器</TITLE>
<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">
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=gbk">
</HEAD>
<BODY>
<H1><A NAME="B">附录B -- 如何报告bug</A></H1>
<H1><A NAME="appendix_b">附录B -- 如何报告bug</A></H1>
<P>好的bug报告对任何软件项目的发展都是十分有价值的贡献。但是就象写好的软件一样好的问题报告也需要一些工作。请明白大多数开发者忙的要死并且会收到
多的变态的电子邮件。所以尽管你的反馈对改进<B>MPlayer</B>至关重要而且非常值得赞赏,希望你理解你必须提供我们需要的<B>所有</B>信息并且严格遵循这个
多的变态的电子邮件。所以尽管你的反馈对改进MPlayer至关重要而且非常值得赞赏希望你理解你必须提供我们需要的<B>所有</B>信息并且严格遵循这个
文件中的指导进行。</P>
<H2>如何修正bug</H2>
<H2><A NAME="fix">B.1 如何修复bug</A></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>如果你觉得你有足够的技巧欢迎你尝试自己修正bug。还是你已经这么干了?请阅读<A HREF="tech/patches.txt">这个简短的文件</A>了解怎样让你的代码
包括到MPlayer的代码中。如果你有问题可以从加入<A HREF="http://mplayerhq.hu/mailman/listinfo/mplayer-dev-eng">mplayer-dev-eng</A>
邮件列表的人那里获得帮助。</P>
<H2>如何报告bug</H2>
<H2><A NAME="report">B.2 如何报告bug</A></H2>
<P>首先,请先尝试<B>MPlayer</B>最新的CVS版本因为你的bug在那里可能已经被修正了。发展过程进展的相当快官方发行版的大部分问题在几天甚至几小时之内
<P>首先请先尝试MPlayer最新的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>和文件的其他部分。如果你的问题我们没有提到或者
README中找到。如果这样做没有改进那么请查阅<A HREF="documentation.html#known_bugs">已知的bug</A>和文件的其他部分。如果你的问题我们没有提到或者
按照我们提供的步骤没有解决那么请报告bug。</P>
<P>请不要私下向单独的开发者报告bug。这是一项社区工作所以可能有若干人都对它感兴趣。有时其它用户已经遇到过你的麻烦并且知道如何绕过这个问题
即使它是<B>MPlayer</B>代码中的bug。</P>
<P>请不要私下单独向开发者报告bug。这是一项社区工作所以可能有若干人都对它感兴趣。有时其它用户已经遇到过你的麻烦并且知道如何绕过这个问题
即使它是MPlayer代码中的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>有篇文采飞扬的关于如何在公共论坛上提问的极好的指导是<A HREF="http://www.tuxedo.org/~esr/">Eric S. Raymond</A>写的<A
HREF="http://www.tuxedo.org/~esr/faqs/smart-questions.html">How To Ask Questions The Smart Way</A>。还有另一篇<A
HREF="http://www.chiark.greenend.org.uk/~sgtatham/">Simon Tatham</A>写的<A
HREF="http://www.chiark.greenend.org.uk/~sgtatham/bugs.html">如何有效的报告Bugs</A>
按照那些指示做是没有问题的。但是请明白我们大家都在我们的自由时间自愿地回复邮件列表。我们十分忙碌并且
不能保证你的问题一定能得到解决甚至得到回复。</P>
<H3>向哪里报告错误?</H3>
<H2><A NAME="where">B.3 向哪里报告错误?</A></H2>
<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>
<P>这个列表使用的语言是<B>英语</B>。请遵循标准的<A HREF="http://www.ietf.org/rfc/rfc1855.txt">网络礼节指导</A>并且<B>不要发送HTML邮件</B>
到任何我们的邮件列表。你将被忽略或者封掉。如果你不知道什么是HTML邮件以及它为什么邪恶看看这篇<A
HREF="http://expita.com/nomime.html">写的不错的文档</A>。它解释了所有细节和关掉HTML的指令。也请注意到我们不会个别地CC(抄送)给人因此
最好通过订阅来保证你会收到答案。</P>
<H3>报告什么?</H3>
<H2><A NAME ="what">B.4 报告什么?</A></H2>
<H4>系统信息:</H4>
<P>你可能需要在你的bug报告中包括log配置或者样本文件。如果它们中间有什么特别大的最好把它们以压缩格式(最好是gzip或bzip2)
上载到我们的<A HREF="ftp://mplayerhq.hu/MPlayer/incoming/">FTP服务器</A>上。我们的邮件列表上一条消息大小限制是80k
如果你有比这更大的东西请压缩或上载它。</P>
<H3><A NAME="system">B.4.1 系统信息</A></H3>
<UL>
<LI>你的Linux发行版或者操作系统比如
<LI>你的Linux发行版或者操作系统比如
<UL>
<LI>Red Hat7.1</LI>
<LI>Slackware 7.0 + devel packs from 7.1 ...</LI>
@ -77,11 +85,17 @@ How To Ask Questions The Smart Way</A>
ld -v </CODE></LI>
<LI>binutils版本<BR>
<CODE>as --version</CODE></LI>
<LI>如果你有全屏模式方面的问题:
<LI>如果是全屏模式的问题:
<UL>
<LI>窗口管理器类型和版本</LI>
</UL>
</LI>
<LI>如果是关于XVIDIX的问题:
<UL>
<LI>X色深<BR>
<CODE>xdpyinfo | grep "depth of root"</CODE></LI>
</UL>
</LI>
<LI>如果是buggy的GUI
<UL>
<LI>GTK版本</LI>
@ -93,7 +107,7 @@ How To Ask Questions The Smart Way</A>
</UL>
<H4>硬件 &amp; 驱动:</H4>
<H3><A NAME="hardware">B.4.2 硬件和驱动</A></H3>
<UL>
<LI>CPU信息(仅用于Linux)<BR>
@ -119,34 +133,43 @@ How To Ask Questions The Smart Way</A>
<LI>GUS PnP with ALSA OSS emulation</LI>
</UL>
</LI>
<LI>如果不放心的话对linux系统再附上<CODE>lspci -vv</CODE>的输出。</LI>
<LI>如果不放心的话对linux系统可以再附上<CODE>lspci -vv</CODE>的输出。</LI>
</UL>
<H4>对于编译问题/错误</H4>
<H3><A NAME="compilation">B.4.3 编译问题</A></H3>
包括这些文件:
附上下列文件:
<UL>
<LI>configure.log</LI>
<LI>config.h</LI>
<LI>config.mak</LI>
<LI>libvo/config.mak</LI>
</UL>
如果编译失败发生在下面的目录,附上这些文件:
<H4>对于回放问题</H4>
<UL>
<LI><CODE>Gui/config.mak</CODE></LI>
<LI><CODE>libvo/config.mak</CODE></LI>
<LI><CODE>libao2/config.mak</CODE></LI>
</UL>
<P>请包括<B>MPlayer</B>的冗长水平为1的输出但是记住当你把它粘贴到你的邮件中时<B>不要删减输出内容</B>。开发者们需要所有的信息来正确的分析问题。
<H3><A NAME="configure">B.4.4 配置问题</A></H3>
附上<CODE>configure.log</CODE>.
<H3><A NAME="playback">B.4.5 播放的问题</A></H3>
<P>请包括MPlayer的冗长水平为1的输出但是记住当你把它粘贴到你的邮件中时<B>不要删减输出内容</B>。开发者们需要所有的信息来正确的分析问题。
你可以像这样把输出导入到一个文件中:</P>
<P><CODE>&nbsp;&nbsp;&nbsp;&nbsp;mplayer -v [options] [filename] &amp;&gt; mplayer.log</CODE></P>
<P><CODE>&nbsp;&nbsp;&nbsp;&nbsp;mplayer -v [options] [filename] &gt; mplayer.log 2&gt;&amp;1</CODE></P>
<P>如果你的问题是具体对于一个或更多的文件的,那么请上传捣乱的文件:</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的输出。
<P>再上传一个小的同样文件名的文本文件加上.txt的扩展名。在其中描述对于这个特别的文件你遇到的问题加上你的电子邮件地址还有MPlayer冗长水平为1的输出。
通常文件的前1-5MB足以重现问题但为了以防万一我们要求你运行</P>
<P><CODE>&nbsp;&nbsp;&nbsp;&nbsp;dd if=yourfile of=smallfile bs=1024k count=5</CODE></P>
@ -156,38 +179,21 @@ How To Ask Questions The Smart Way</A>
那么发送<STRONG>准确的</STRONG>URL就足够了。</P>
<H4>对于崩溃</H4>
<H3><A NAME="crash">B.4.6 崩溃</A></H3>
<P>你应该在<CODE>gdb</CODE>里面运行MPlayer并把完整的输出发送给我们或者你有一个崩溃产生的core dump你可以从<CODE>Core</CODE>文件中提取
有用的信息,下面教你怎么做:</P>
<P>如果你的崩溃有一个core dump那么继续阅读下一段否则跳过它。</P>
<H4><A NAME="debug">B.4.6.1 如何保存一个可重复的崩溃的信息</A></H4>
<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>
开启调试代码重新编译MPlayer
<P><CODE>&nbsp;&nbsp;&nbsp;&nbsp;./configure --enable-debug=3<BR>
&nbsp;&nbsp;&nbsp;&nbsp;make</CODE></P>
然后用gdb运行<B>MPlayer</B>
然后用gdb运行MPlayer
<P><CODE>&nbsp;&nbsp;&nbsp;&nbsp;gdb mplayer</CODE></P>
@ -198,22 +204,27 @@ How To Ask Questions The Smart Way</A>
然后再现你的崩溃。一旦你成功了gdb将回到命令行你需要输入
<P><CODE>&nbsp;&nbsp;&nbsp;&nbsp;bt<BR>
&nbsp;&nbsp;&nbsp;&nbsp;disass $eip-32 $eip+32</CODE></P>
&nbsp;&nbsp;&nbsp;&nbsp;disass $pc-32 $pc+32<BR>
&nbsp;&nbsp;&nbsp;&nbsp;info all-registers</CODE></P>
然后把完整的输出发给我们。
<H4><A NAME="core">B.4.6.2 如何从一个core dump中提取出有意义的信息</A></H4>
<P>请建立下面的命令文件:</P>
<P><CODE>disass $pc-32 $pc+32<BR>
info all-registers</CODE></P>
<P>然后直接在你的命令行下执行下列命令:</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;<CODE>gdb mplayer --core=core -batch --command=command_file &gt; mplayer.bug</CODE></P>
<H3>一般的注意事项</H3>
<H2><A NAME="advusers">B.5 我知道我在干什么...</A></H2>
<P>如果有什么东西特别大(比如log)最好把它压缩(最好是gzip或者bzip)之后上载到FTP server上并且在你的bug报告中只要包含路径和文件名。</P>
<H2>我知道我在干什么...</H2>
<P>如果你按照上述步骤建立了一个正确的bug报告而且你充满信心它是<B>MPlayer</B>中的bug而不是因为编译错误或者文件损坏的问题你已经阅读了文档并且
<P>如果你按照上述步骤建立了一个正确的bug报告而且你充满信心它是MPlayer中的bug而不是因为编译错误或者文件损坏的问题你已经阅读了文档并且
找不到解决方案此外你的声卡驱动正常那么你可能想要订阅mplayer-advusers列表并把你的bug报告发到那里以便得到更快更好的答案。<BR><BR>
请听从我们的劝告,如果你在那里问新手级的问题或者问用户手册中已经回答过的问题,你将被忽略或者被骂而不会得到答案。<BR>
因此,不要骂我们并且仅仅当你确实知道你在干什么并且觉得你已经是高级<B>MPlayer</B>用户或者是开发者再订阅 -advusers。如果你符合这些标准找出如何
因此不要骂我们并且仅仅当你确实知道你在干什么并且觉得你已经是高级MPlayer用户或者是开发者再订阅 -advusers。如果你符合这些标准找出如何
订阅应该不难...</P>
</BODY>

View File

@ -2,15 +2,15 @@
<HTML>
<HEAD>
<TITLE>CDDVDVCD -- MPlayer -- Linux的电影播放器</TITLE>
<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">
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=gbk">
</HEAD>
<BODY>
<H2><A NAME="drives">4.1 CDDVD光驱</A></H2>
<H2><A NAME="drives">4.1 CD/DVD光驱</A></H2>
<P>Linux文件摘录</P>
@ -35,7 +35,8 @@
<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>这把文件预读取设置为2MB对于刮伤的CD-ROM有好处。如果你把这个值设置的太大你的光驱会不停的转
显著的降低效率。建议你同时也用hdparm调整你的CD-ROM光驱</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;<CODE>hdparm -d1 -a8 -u1 (cdrom device)</CODE></P>
@ -43,40 +44,133 @@
<P>为了优化你的CD-ROM请参考"<CODE>/proc/ide/[cdrom device]/settings</CODE>"。</P>
<P>SCSI驱动器没有一个统一的设置参数的方法(你知道这样一种方法?告诉我们!) 有一种工具可以用于<A
HREF="http://das.ist.org/~georg/">Plextor的SCSI驱动器</A></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>
<P>FreeBSD:</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;Speed: <CODE>cdcontrol [-f device] speed [speed]</CODE></P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;DMA: <CODE>sysctl hw.ata.atapi_dma=1</CODE></P>
<H2><A NAME="dvd">4.2 DVD播放</A></H2>
<P>可用选项的完整列表请查阅man page。</P>
<H4>新式的DVD支持(mpdvdkit2)</H4>
<P>MPlayer使用<CODE>libdvdread</CODE><CODE>libdvdcss</CODE>进行DVD解密和回放。这两个库包含在MPlayer源码树的<CODE>libmpdvdkit/</CODE>
子目录中你不需要单独安装他们。我们选择这种解决方案是因为我们必须修正一个libdvdread的bug并且给libdvdcss添加一个<B>cracked CSS keys caching support</B>的补丁。
这带来极大的速度提升,因为不用在每次播放之前都破解密钥。破解的密钥储存在<CODE>~/.mplayer/DVDKeys</CODE>目录里面。</P>
这带来极大的速度提升,因为不用在每次播放之前都破解密钥。</P>
<P><B>MPlayer</B>也能使用系统的<CODE>libdvdread</CODE><CODE>libdvdcss</CODE>库,但这种解决方法<B></B>被推荐因为它会导致bug库的不兼容并且降低速度。</P>
<P>MPlayer也能使用系统的<CODE>libdvdread</CODE><CODE>libdvdcss</CODE>库,但这种解决方法<B></B>推荐因为它会导致bug库的不兼容并且降低速度。</P>
<P>使用<CODE>dvdnav</CODE>DVD导航的支持正在开发但目前还没有完成。</P>
<H4>DVD导航菜单支持(dvdnav)</H4>
<H4>旧式DVD支持 -- 可选</H4>
<P>通过<CODE>dvdnav</CODE>支持DVD导航菜单的工作已经开始但它可能永远不会完成而且现在无人维护。谁知道它可能还能编译过去。</P>
<P>如果你想从硬盘上播放编码的VOB是有用。为此要编译并安装<B>libcss</B>0.0.1(不要更新的)(如果<B>MPlayer</B>检测不到它,使用<CODE>-csslib /path/to/libcss.so</CODE>选项)。</P>
<H4>老式DVD支持 -- 可选</H4>
<P>如果你想从硬盘上播放编码的VOB是有用。为此要编译并安装<B>libcss</B>0.0.1(不要更新的)(如果MPlayer检测不到它使用<CODE>-csslib /path/to/libcss.so</CODE>选项)。为了使用它你必须是root使用一个suid root了的MPlayer二进制程序或者让MPlayer调用suid-root了的fibmap_mplayer外壳程序。</P>
<H4>DVD结构</H4>
<P>DVD盘每个扇区有2048字节附带ECC/CRC。它们经常在一个音轨上使用一个UDF文件结构包含各种文件(小的.IFO和.BUK文件和大的
(1GB) .VOB文件)。它们是真正的文件可以在一个mount了的未加密的DVD的文件系统上被复制/播放。</P>
<P>.IFO文件包含电影的导航信息(chapter/title/angle map, 语言表等等)需要它来读取和解释.VOB文件的内容(电影)。.BUK文件是它们的备份。
它们到处使用<B>扇区</B>所以你需要使用碟片上扇区的未经处理的地址类实现DVD导航菜单和内容解密。</P>
<P>整个的老式DVD支持使用<CODE>libcss</CODE>所以需要一个mount了的DVD文件系统和直接的基于扇区的设备访问。不幸的是(在Linux下)你必须
是root才能得到一个文件的扇区地址。你有以下几种选择</P>
<UL>
<LI>成为root或者使用一个suid-root的mplayer二进制程序。</LI>
<LI>让MPlayer调用suid-root的fibmap_mplayer外壳程序来访问DVD(使用通过<CODE>libcss</CODE>的老式DVD播放方式)。</LI>
<LI>根本不使用内核的文件系统驱动而是在用户空间重新实现它。<CODE>libdvdread</CODE> 0.9.x和<CODE>libmpdvdkit</CODE>
就是这么做的(新式DVD支持)。内核的UDF文件系统驱动是不需要的因为它们有自己内建的UDF文件系统驱动。同样DVD不需要mount
因为只需要使用直接的基于扇区的访问。</LI>
</UL>
<P>有时<CODE>/dev/dvd</CODE>用户不能读取,所以<CODE>libdvdread</CODE>的作者设计了一个模拟层把扇区地址变换为文件名
+偏移量用来在一个mount了的文件系统甚至硬盘上模拟直接访问。</P>
<P><CODE>libdvdread</CODE>甚至可以通过mountpoint而不是设备名通过访问<CODE>/proc/mounts</CODE>查找设备名来进行直接访问,
这是为Solaris设计的那里设备名是动态分配的。</P>
<P>默认的DVD设备是<CODE>/dev/dvd</CODE>。如果你的设置不同,作一个符号链接,或者在命令行中用<CODE>-dvd-device</CODE>选项
指定一个正确的设备。</P>
<H4>DVD授权</H4>
<P>新式DVD支持的授权和解密的方法是通过一个打了补丁的<CODE>libdvdcss</CODE>(见上面)来完成的。可以通过指定环境
变量<CODE>DVDCSS_METHOD</CODE>来设置解密方法,可以设置的值为<CODE>key</CODE>, <CODE>disk</CODE>或者<CODE>title</CODE></P>
<P>如果什么都没有指定它将会尝试下列方法(默认: key, title request)</P>
<OL>
<LI><B>bus key:</B> 这个密钥在授权(一长串的ioctls和各种密钥的交换加密的东西的混合)的过程中确定,然后在通过没有保护的
总线之前用它加密title和disk keys(防止窃听)。需要bus key来获得加密的disk key并对其进行预解密.</LI>
<LI><B>cached key:</B> MPlayer寻找已经破解的title keys存放在<CODE>~/.mplayer/DVDKeys</CODE>目录下(很快;).</LI>
<LI><B>key:</B> 如果没有可用的cached keyMPlayer尝试使用播放器密钥来对disk key进行解密。</LI>
<LI><B>disk:</B> 如果密钥方法失败(比如:没有自带的播放器密钥)MPlayer将会使用一种暴力算法来破解disk key。
这个过程非常消耗CPU而且需要64 MB内存(16M的32Bit的整个hash表)来存储临时数据。这种方法总能起作用(很慢)。</LI>
<LI><B>title request:</B> 有了disk key以后MPlayer需要加密的title keys它被用<CODE>ioctl()</CODE>储存在<I>隐藏扇区</I>里。
RPC-2驱动器的地区保护在这一步实现所以在这样的驱动器上可能会失败。如果成功的话将使用bus和disk key对title keys进行解密。</LI>
<LI><B>title:</B> 这个方法在title request方法失败时使用不依赖于与DVD驱动器的任何密钥交换。它使用一种加密破解的方法
直接猜测title key(通过寻找已解密的VOB内容中的一种重复格式然后猜测加密部分的前几个字节是这种格式的延续)。
这种方法也被成为"已知明文攻击"或者"DeCSSPlus"。很少的情况下,因为碟片上没有足够的加密数据来进行统计攻击或者因为密钥交换
发生在一个title的中间这种方法会失败。这种方法是解密一个储存在硬盘上的DVD或者在一个RPC2驱动器上读取一个地区错误的DVD
的唯一方法(很慢)。</LI>
</OL>
<P>RPC-1 DVD驱动器只保护软件设定的区域。RPC-2驱动器有一个硬件保护只允许5个改变。如果你有一个RPC-2 DVD驱动器
可能需要/推荐将固件升级到RPC-1。固件升级可以在这里<A HREF="http://www.firmware-flash.com">firmware page</A>找到。
如果没有可用于你的设备的固件升级,使用<A
HREF="http://www.linuxtv.org/download/dvd/dvd_disc_20000215.tar.gz">区域设定工具</A>来设置你的
DVD驱动器的地区(在Linux下)。<B>警告:</B> 你只有5次设置地区的机会。</P>
<P>可用选项的完全列表请阅读man page。</P>
<H2><A NAME="vcd">4.3 VCD回放</A></H2>
<P>可用选项的完整列表请阅读man page。播放一个标准的Video CD(VCD)的语法如下:</P>
<P>播放标准的Video CDs</P>
<P><CODE>mplayer -vcd &lt;track&gt; [-cdrom-device device]</CODE></P>
<P><CODE>mplayer -vcd &lt;track&gt; [-cdrom-device &lt;device&gt;]</CODE></P>
<P>例子:<BR>
<CODE>mplayer --vcd 1<BR>
mplayer --fs --vcd 2 --dev / hdc </CODE></P>
<P>示例:<CODE>mplayer -vcd 2 -cdrom-device /dev/hdc</CODE></P>
<P>默认的VCD设备是<CODE>/dev/cdrom</CODE>。如果你的设置不同,作一个符号链接,或者在命令行中用<CODE>-cdrom-device</CODE>选项
指定一个正确的设备。</P>
<P><B>注意:</B>至少对于Plextor和一些Toshiba的SCSI CD-ROM驱动器在读取VCD的时候慢的恐怖。这是因为CDROMREADRAW ioctl在这些
驱动器上没有完全实现。如果你有SCSI编程方面的支持<A HREF="tech/patches.txt">帮助我们</A>实现普遍的SCSI设备的VCD支持。</P>
<H4>VCD结构</H4>
<P>VCD碟片由一个或多个音轨组成</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>
<LI>第一个轨道是一个小的2048字节/扇区的数据轨有一个iso9660文件系统通常包含Windows VCD播放程序可能还有其他信息
(图像,文字等等)。</LI>
<LI>第二和之后的轨道是未处理的2324字节/扇区的MPEG(电影)轨每个扇区包含一个MPEG PS数据包而没有文件系统。音频CD的轨道也类似。
这些轨道是<B>无法被mount的</B>(你曾经mount一个音频CD然后播放过吗)。大部分电影都在这个轨道,所以你应该先试试
<CODE>-vcd 2</CODE></LI>
<LI>有些VCD碟片没有第一个轨道(单轨道而根本没有文件系统)。它们也可以播放但是不能mount。</LI>
</UL>
<H4>关于.DAT文件</H4>
<P>在mount了的VCD的第一轨上看到的~600 MB的文件不是一个真正的文件这是所谓的ISO通道用来使Windows能够处理这样的
轨道(Windows根本不允许程序直接访问未处理的设备)。在Linux下你不能复制或者播放这些文件(它们里面是些垃圾)。在Windows下
这是可以的因为它的iso9660驱动能模拟在这个文件中读取未处理的音轨。要播放一个.DAT文件你需要Linux版的PowerDVD中的
内核驱动。它有一个经过修改的iso9660文件系统(<CODE>vcdfs/isofs-2.4.X.o</CODE>)驱动,可以通过这个.DAT影子文件模拟
读取未处理音轨。如果你用它们的驱动来mount你可以复制甚至用mplayer直接播放.DAT文件。但如果用Linux内核的标准的
iso9660驱动是<B>不会有用的</B>!应该使用<CODE>-vcd</CODE>选项。另一种复制VCD的方法是新的<A
HREF="http://www.elis.rug.ac.be/~ronsse/cdfs/">cdfs</A>内核驱动(不是官方内核的一部分)它能够把CD的<I>sessions</I>
显示成镜像文件,或者<A HREF="http://cdrdao.sourceforge.net/">cdrdao</A>一个bit-by-bit的CD抓取/复制程序。</P>
</BODY>
</HTML>

View File

@ -2,27 +2,28 @@
<HTML>
<HEAD>
<TITLE>码格式 -- MPlayer -- Linux的电影播放器</TITLE>
<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">
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=gbk">
</HEAD>
<BODY>
<H2><A NAME="codecs">2.2 支持的编码格式 </A></H2>
<H2><A NAME="codecs">2.2 支持的编解码器</A></H2>
<H3><A NAME="video_codecs">2.2.1 视频编码格式</A></H3>
<H3><A NAME="video_codecs">2.2.1 视频编解码器</A></H3>
<P><A HREF="http://www.mplayerhq.hu/DOCS/codecs-status.html">码格式状态表格</A>来了解完整的,每日更新的列表。</P>
<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>Windows Media Video 7(WMV1)的本地的解码器和Windows Media Video 8(WMV2)的Win32 DLL解码器它们两个都用于.wmv文件</LI>
<LI><B>本地的Sorenson(SVQ1)解码器</B></LI>
<LI><B>Win32/QT Sorenson 3 (SVQ3) decoder</B></LI>
<LI>3ivx解码器</LI>
<LI>Cinepak和Intel Indeo解码器(3.1,3.2,4.1,5.0)</LI>
<LI>MJPEGAVIDVCR2ASV2和其它硬件格式</LI>
@ -38,32 +39,21 @@
<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>这部分包含关于<A HREF="http://www.projectmayo.com">Mayo工程</A>的DivX4和DivX5编解码器的信息他们的第一个可用的alpha版本是
OpenDivX 4.0 alpha 47和48。 对它们的支持以前包括在MPlayer中,并且是默认编译的。 我们也使用其后处理代码来有选择地提高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>这个解码器的新一代产品称为DivX4它甚至能解码以声名狼籍的DivX编解码器制作的电影 此外它比本地的Win32 DivX DLL快得多比但是比libavcodec慢。
因此,<B>不鼓励</B>把它当解码器用。 然而,它对编码有用。 这个编解码器的缺点之一是它目前不开放源代码。</P>
<P>DivX4Linux有两种工作方式</P>
<DL>
<DT><CODE>-vc odivx</CODE></DT>
<DD>以OpenDivX方式使用解码器。在这种情况下它在自己的缓冲中产生YV12图象然后由<B>MPlayer</B>通过libvo做色彩空间转换。(<B>推荐,快!</B>)</DD>
<DD>以OpenDivX方式使用解码器。在这种情况下它在自己的缓冲中产生YV12图象然后由MPlayer通过libvo做色彩空间转换。(<B>推荐,快!</B>)</DD>
<DT><CODE>-vc divx4</CODE></DT>
<DD>使用解码器的色彩空间转换。以这种方式你也能使用YUY2与UYVY。(<B></B>)</DD>
<DD>使用解码器的色彩空间转换。以这种方式你也能使用YUY2与UYVY。(<B>很慢</B>)</DD>
</DL>
<P><CODE>-vc odivx</CODE>方式通常更快因为它以YV12(planar YUV 4:2:0)格式传输图象数据这样占用少的多的总线带宽。对于packed YUV方式
@ -71,22 +61,54 @@ OpenDivX 4.0 alpha 47
<P><B>注意:</B>如果你的<CODE>-vo</CODE>驱动支持直接渲染,那么<CODE>-vc divx4</CODE>可以是很快甚至最快的解决方案。</P>
<P>这个编解码器可以在<A HREF="http://avifile.sourceforge.net">avifile</A>下载解压之后以root权限运行<CODE>./install.sh</CODE>
另外别忘了把<CODE>/usr/local/lib</CODE>添加到你的<CODE>/etc/ld.so.conf</CODE>中然后运行<CODE>ldconfig</CODE></P>
<P>想得到核心库的CVS版本可以这样做</P>
<OL>
<LI><CODE>cvs -d:pserver:anonymous@cvs.projectmayo.com:/cvsroot login</CODE></LI>
<LI><CODE>cvs -d:pserver:anonymous@cvs.projectmayo.com:/cvsroot co divxcore</CODE></LI>
<LI>核心库分为解码库和编码库必须分别编译。对于解码库,直接输入:
<PRE>
cd divxcore/decore/build/linux
make
cp libdivxdecore.so /usr/local/lib
ln -s /usr/local/lib/libdivxdecore.so /usr/local/lib/libdivxdecore.so.0
cp ../../src/decore.h /usr/local/include
</PRE>
</LI>
<LI>对于编码库没有可用的Linux的Makefile而且MMX优化代码只能用于Windows但你仍然可以用这个<A
HREF="ftp://ftp.mplayerhq.hu/MPlayer/contrib/divx-mf/Makefile">Makefile</A>来编译它
<PRE>
cd ../../../encore/build
mkdir linux
cd linux
cp path/Makefile .
make
cp libdivxencore.so /usr/local/lib
ln -s /usr/local/lib/libdivxdecore.so /usr/local/lib/libdivxdecore.so.0
cp ../../src/encore.h /usr/local/include
</PRE>
</LI>
</OL>
<P>如果正常安装了DivX4/DivX5MPlayer会自动检测到它只要正常编译就可以。如果没有检测到你肯定没有正确安装或者配置它。</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>解码器包,能够以兼容方式解码以
<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>
同时提供比Win32解码器或DivX.com的DivX4/5库更高的速度</P>
<P>它包含很多不错的解码器尤其重要的是MPEG4的几个变种DivX 3DivX 4DivX 5Windows Media Video 7 (WMV1)</P>
<P>它包含很多不错的解码器尤其重要的是MPEG4的几个变种DivX 3DivX 4DivX 5Windows Media Video 7(WMV1)。另外一个有趣的东西是WMA解码器。</P>
<P>如果你使用<B>MPlayer</B>发行版在你的源码包里就有libavcodec正常编译。如果你使用CVS的<B>MPlayer</B>
那么你必须从FFmpeg的CVS树中提取libavcodec因为FFmpeg 0.4.5<B>不能</B>用于<B>MPlayer</B>。你应该这样来完成:</P>
<P>如果你使用MPlayer发行版在你的源码包里就有libavcodec正常编译即可。如果你使用CVS的MPlayer
那么你必须从FFmpeg的CVS树中提取libavcodec因为FFmpeg 0.4.5<B>不能</B>用于MPlayer。你应该这样来完成</P>
OL>
<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树的根部。应该看起来象这样
<LI><CODE>libavcodec</CODE>目录从FFmpeg的源代码里移到MPlayer的CVS树的根目录下。看起来应该象这样:
<P>&nbsp;&nbsp;&nbsp;&nbsp;<CODE>main/libavcodec</CODE></P>
符号链接是<B></B>够的,你必须复制或移动它!</LI>
<LI>编译。Configure应该在编译之前发现可能的问题。</LI>
@ -104,68 +126,64 @@ OL>
XAnim的作者到目前为止没有就解码器有关的问题对着任何人采取法律行动。
</P>
<P><B>MPlayer</B>可以使用XAnim的解码器解码。按照下列指令来开启它</P>
<P>MPlayer可以使用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><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>XAnim的视频解码器族号码是10因此你可以使用<CODE>-vfm 10</CODE>选项让MPlayer尽可能的使用他们。</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>
<P>MPlayer能播放Vivo(1.0和2.0)视频。对于1.0的文件最适合的解码器是FFmpeg的H263解码器你可以用<CODE>-vc ffh263</CODE>选项
(默认的)来使用它。对于2.0个文件,使用<A
HREF="http://www.mplayerhq.hu/MPlayer/samples/drivers32/ivvideo.dll">ivvideo.dll</A>这个Win32 DLL文件将它安装在<CODE>/usr/lib/win32</CODE>或者你放Win32解码器的那个什么地方。</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>
<P>MPEG1和MPEG2用本地的多平台的<B>libmpeg2</B>库解码其源代码被包括在MPlayer中。对于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>
<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>
<P>MPlayer默认将使用自己的开源的多平台的Cinepak解码器。它支持YUV输出所以只要硬件驱动允许它将使用硬件缩放。</P>
<H4><A NAME="realvideo">2.2.1.8 RealVideo</A></H4>
<B>MPlayer</B>支持所有版本的RealVideo的解码
MPlayer支持所有版本的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>
<P>推荐下载并安装RealPlayer8或者RealONE因为MPlayer能使用他们的库来解码RealVideo 2.0或者RealVideo 3.0的视频文件。
MPlayer的配置脚本应该在一个完全安装的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工程
<P><B>XViD</B>OpenDivX编解码器的开发分支。故事发生在Mayo工程把OpenDivX变成封闭源码的DivX4的时候那些从事于OpenDivX的非Mayo工程
的人们感到愤怒于是开始了XViD。所以两个项目有相同的起源。</P>
<H4>优点:</H4>
@ -194,42 +212,52 @@ ivvideo.dll</A>
<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>
<LI>加上<CODE>--with-xvidcore=/path/to/libcore.a</CODE>选项重新编译MPlayer。</LI>
</OL>
<H4><A NAME="sorenson">2.2.1.10 Sorenson </A></H4>
<P><B>Sorenson </B>是苹果开发的视频编码格式。目前我们能用本地解码器解码第一个版本(SVQ1)。</P>
<H4>优点:</H4>
<P><B>Sorenson</B>是Sorenson Media开发的一个视频编解码器族授权给苹果公司在它们的QuickTime播放器中使用。
我们目前可以使用下列解码器解码所有的Sorenson视频文件</P>
<UL>
<LI>甚至很老的Macintosh机器也能够解码它。</LI>
<LI>Sorenson 1(fourcc <I>SVQ1</I>) - 由<B>本地编解码器</B>解码。<BR>
实际上有两个SVQ1的(几乎等价的)解码器一个在MPlayer中还有一个在libavcodec。你可以通过<CODE>-vc svq1</CODE>
<CODE>-vc ffsvq1</CODE>选项调用它们中的任意一个。有些文件可能只能在其中一个上工作,而另一个就行,所以
两个解码器都试试。</LI>
<LI>Sorenson 3(fourcc <I>SVQ3</I>) - 由<B>Win32的QuickTime库</B>解码。</LI>
</UL>
<H4>缺点:</H4>
<H4>编译支持QuickTime库的MPlayer</H4>
<UL>
<LI>SVQ3仍然没有完成逆向工程。</LI>
</UL>
<P><B>注意:</B>目前只支持32位的Intel平台。</P>
<P>Sorenson解码器是默认编译使用的。</P>
<OL>
<LI>下载MPlayer CVS</LI>
<LI>用下面参数编译MPlayer<BR>
<CODE>$ ./configure --enable-qtx-codecs</CODE></LI>
<LI>在这里下载QuickTime DLL包<A HREF="http://www.mplayerhq.hu/MPlayer/releases/codecs/">http://www.mplayerhq.hu/MPlayer/releases/codecs/</A></LI>
<LI>把QuickTime DLL包解压到你的Win32编解码器目录(默认:<CODE>/usr/lib/win32</CODE>)</LI>
</OL>
<H3><A NAME="audio_codecs">2.2.2 音频编码格式 </A></H3>
<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 2(MP2), 和layer 3(MP3)(<B>本地</B>代码经过MMX/SSE/3DNow!优化)</LI>
<LI>MPEG layer 1音频(<B>本地</B>代码使用libavcodec)</LI>
<LI>Windows Media Audio v1, v2 (<B>本地</B>代码使用libavcodec)</LI>
<LI>Windows Media Audio 9(WMAv3)(使用DMO DLL)</LI>
<LI>AC3杜比音频(<B>本地</B>代码经过MMX/SSE/3DNow!优化)</LI>
<LI>Ogg Vorbis音频编码格式(<B>本地</B>库)</LI>
<LI>AC3声卡硬件处理</LI>
<LI>Ogg Vorbis音频编解码器(<B>本地</B>库)</LI>
<LI>RealAudio: DNET(低比特率的AC3), Cook, Sipro和ATRAC3</LI>
<LI>QuickTime: Qualcomm和QDesign音频编解码器</LI>
<LI>Voxware音频(使用DirectShow DLL)</LI>
<LI>alawmsgsmpcm和其它简单的老的音频格式</LI>
<LI>VIVO音频(g723Vivo Siren)的</LI>
<LI>RealAudioDNET(低比特率的AC3)Cook</LI>
<LI>VIVO音频(g723Vivo Siren)</LI>
<LI>alaw和ulaw各种gsmadpcm和pcm格式还有别的简单老的编解码器</LI>
</UL>
@ -238,7 +266,7 @@ ivvideo.dll</A>
<P>这是含有AC3音频的文件的默认解码器。</P>
<P>AC3解码器能为了24或者6个扬声器创建音频混合输出。当配置为6个扬声器时这个解码器向声卡驱动提供所有AC3通道的单独的输出
允许彻底的“环绕立体声”感受而不需要使用需要hwac3解码器的外部AC3解码器。</P>
允许彻底的“环绕音效”感受而不需要使用需要hwac3解码器的外部AC3解码器。</P>
<P>使用<CODE>-channels</CODE>选项可以选择输出的通道数。使用<CODE>-channels 2</CODE>获得立体声的降混频。
对于4通道的降混频(左前,右前,左环绕和右环绕),使用<CODE>-channels 4</CODE>。在这种情况下,中心通道的任何输出将与前通道均匀混合。
@ -273,7 +301,7 @@ ivvideo.dll</A>
<H4><A NAME="realaudio">2.2.2.5 RealAudio</A></H4>
<B>MPlayer</B>支持解码几乎所有版本的RealAudio
MPlayer支持解码几乎所有版本的RealAudio
<UL>
<LI>RealAudio DNET -- 解码由<B>liba52</B>支持</LI>
@ -283,14 +311,24 @@ ivvideo.dll</A>
<P>至于如何安装RealPlayer库参见<A HREF="formats.html#real">RealMedia文件格式</A>部分。</P>
<H4><A NAME="qdesign">2.2.2.6 QDesign编解码器</A></H4>
<P>QDesign音频流(fourcc: <I>QDMC</I>, <I>QDM2</I>)出现在MOV/QT文件中。两个版本的编码格式都可以用QuickTime的库解码。
安装步骤参见<A HREF="#sorenson">Sorenson视频编解码器</A>部分。</P>
<H4><A NAME="qclp">2.2.2.7 Qualcomm编解码器</A></H4>
<P>Qualcomm音频流(fourcc: <I>Qclp</I>)出现在MOV/QT文件中。它可以用QuickTime库解码。
安装步骤参见<A HREF="#sorenson">Sorenson视频编解码器</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>
<H4><A NAME="importing_vfw">2.2.3.1 VFW编解码器</A></H4>
<P>VFW(Video for Windows)是Windows的老的视频API。它的解码器以.DLL或者(很少的).DRV为扩展名。
如果<B>MPlayer</B>无法播放你的AVI并显示这种信息</P>
如果MPlayer无法播放你的AVI并显示这种信息</P>
<P>&nbsp;&nbsp;&nbsp;&nbsp;<CODE>UNKNOWN video codec: HFYU (0x55594648)</CODE></P>
@ -316,19 +354,19 @@ ivvideo.dll</A>
<P>DirectShow是较新的视频API比它的前辈更恶劣。对于DirectShow事情变的困难了</P>
<UL>
<LI><CODE>system.ini</CODE>不再包含需要的信息,它们被储存在注册表里,此外
<LI>我们需要解码器的的GUID。
<LI><CODE>system.ini</CODE>不再包含需要的信息,它们被储存在注册表里,此外</LI>
<LI>我们需要解码器的的GUID。</LI>
</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>项里指定的文件
<LI>从DirecX SDK或者<A HREF="http://doom9.org">Doom9</A>中取得GraphEdit</LI>
<LI>运行<CODE>graphedit.exe</CODE></LI>
<LI>从菜单中选择Graph -&gt; Insert Filters</LI>
<LI>展开<CODE>DirectShow Filters</CODE>项目</LI>
<LI>选择正确的解码器名称然后展开项目。/LI>
<LI><CODE>DisplayName</CODE>一项中看反斜杠后面花括号里面的文字并把它记下来(小短横分隔开的五块就是GUID)</LI>
<LI>解码器的二进制文件是<CODE>Filename</CODE>项里指定的文件</LI>
</OL>
<P><B>注意:</B>如果没有<CODE>Filename</CODE>项而<CODE>DisplayName</CODE>中包含类似<CODE>device:dmo</CODE>的东西,
@ -336,12 +374,12 @@ ivvideo.dll</A>
<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>运行<CODE>regedit</CODE></LI>
<LI><CODE>Ctrl-f</CODE>禁用头两个复选框填写解码器的fourcc(例如TM20)。</LI>
<LI>你应该看见一个包含路径和文件名的域(例如<CODE>C:\WINDOWS\SYSTEM\TM20DEC.AX</CODE>)。</LI>
<LI>现在你找到了文件我们需要GUID。尝试再次搜索但现在搜索解码器的名称fourcc。用媒体播放器播放文件时
察看File -&gt; Properties -&gt; Advanced可以获得解码器名。如果没有你真不走运。猜猜看吧(例如搜索TrueMotion)。
<LI>如果找到GUID你将看见FriendlyName和CLSID域。写出16字节CLSID这就是我们需要的GUID。
察看File -&gt; Properties -&gt; Advanced可以获得解码器名。如果没有你真不走运。猜猜看吧(例如搜索TrueMotion)。</LI>
<LI>如果找到GUID你将看见FriendlyName和CLSID域。写出16字节CLSID这就是我们需要的GUID。</LI>
</OL>
<P><B>注意:</B>如果搜索失败,试试选上所有的复选框。你可能找到错误的内容,不过说不定你会走运...</P>

File diff suppressed because it is too large Load Diff

View File

@ -2,173 +2,104 @@
<HTML>
<HEAD>
<TITLE>编码 -- MEncoder -- Linux的电影编码器</TITLE>
<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">
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=gbk">
</HEAD>
<BODY>
<H2><A NAME="encoding">2.4 用MEncoder编码</A></H2>
<H1><A NAME="encoding">7. 用MEncoder编码</A></H1>
<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>
<P>MEncoder的全部可用选项和示例请看man page。一些实用的例子和对一些编码参数的详尽的解释请看从<A
HREF="http://mplayerhq.hu/mailman/listinfo/mplayer-users">mplayer-users</A>邮件列表中搜集来的<A
HREF="tech/encoding-tips.txt">编码技巧</A>。搜索<A HREF="http://mplayerhq.hu/pipermail/mplayer-users/">邮件
文档</A>可以找到用MEncoder编码的各方面以及所遇到问题的丰富的讨论。</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>
<H4><A NAME="2pass">7.1 2或者3-pass的MPEG-4("DivX")编码</A></H4>
<P><U><B>2-pass编码</B></U>名称来自这种方法实际把文件编码<I>两次</I>的事实。第一次编码(又称为<I>pass</I>)创建一些临时性的几兆的文件(*.log)
先不要删除他们(你可以把AVI删了)。在第二次pass中,将使用临时文件的比特率数据创建输出文件,最后产生的文件将有好得多的图象质量。如果这是你第一次听到这个,
先不要删除他们(你可以把AVI删了)。在第二次编码中,将使用临时文件的比特率数据创建输出文件,最后产生的文件将有好得多的图象质量。如果这是你第一次听到这个,
你应该在网上查阅一些可用的指南。</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>这个例子演示如何把DVD编码成为2-pass的MPEG-4("DIVX")的AVI。只需要两个命令<BR>
<CODE>&nbsp;&nbsp;&nbsp;&nbsp;rm frameno.avi</CODE> -- 删掉这个文件它可能来自以前的3-pass编码(它会干扰当前编码)<BR>
<CODE>&nbsp;&nbsp;&nbsp;&nbsp;mencoder -dvd 2 -ovc lavc -lavcopts
vcodec=mpeg4:vpass=1 -oac copy -o movie.avi<BR>
&nbsp;&nbsp;&nbsp;&nbsp;mencoder -dvd 2 -ovc lavc -lavcopts
vcodec=mpeg4:vpass=2 -oac copy -o movie.avi</CODE></P>
<P><U><B>3-pass编码</B></U>这是2-pass编码的扩展对音频的编码使用一个单独的pass。这种方法提供推荐视频比特率的估计以使之能够适合CD的容量。同时
不同于2-pass方式音频仅仅被编码一次。示例</P>
<P><U><B>3-pass编码</B></U>这是2-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>第一次编码:
<P><CODE>mencoder &lt;file/DVD&gt; -ovc frameno -oac mp3lame -lameopts vbr=3 -o frameno.avi</CODE></P> <P>将创建一个只有音频的avi文件<B></B>包含要求的音频流。不要忘记<CODE>-lameopts</CODE>,如果需要的话设置它。如果你对一部长的电影进行编码,
MEncoder在这个pass结束之后将对于650Mb700Mb和800Mb的目标大小打印推荐的比特率值。</P></LI>
<LI>第二次编码:
<P><CODE>mencoder &lt;file/DVD&gt; -oac copy
-ovc lavc -lavcopts vcodec=mpeg4:vpass=1:vbitrate=&lt;bitrate&gt;</CODE></P>
<P>这是第一次视频编码。可以选择指定在上一步结束时MEncoder打印的视频比特率。</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><CODE>mencoder &lt;file/DVD&gt; -oac copy
-ovc lavc -lavcopts vcodec=mpeg4:vpass=2:vbitrate=&lt;bitrate&gt;</CODE></P>
<P>这是第二次视频编码。指定跟上一次编码一样的比特率除非你真的知道自己在干什么。在这次编码中,用<CODE>frameno.avi</CODE>
中的音频将被插入到目的文件中..这就全部搞定了!</P></LI>
</OL>
<H4>3-pass编码的例子</H4>
<P><CODE>&nbsp;&nbsp;&nbsp;&nbsp;rm frameno.avi</CODE> -- 移去这个文件它可能来自以前的3-pass编码(它会干扰当前这个)<BR>
<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>
-o frameno.avi -oac mp3lame -lameopts vbr=3<BR>
&nbsp;&nbsp;&nbsp;&nbsp;mencoder -dvd 2 -ovc lavc
-lavcopts vcodec=mpeg4:vpass=1 -oac copy -o movie.avi<BR>
&nbsp;&nbsp;&nbsp;&nbsp;mencoder -dvd 2 -ovc lavc
-lavcopts vcodec=mpeg4:vpass=2 -oac copy -o movie.avi</CODE></P>
<H4><A NAME="rescaling">2.4.2.2 重新缩放电影</A></H4>
<H2><A NAME="rescaling">7.2 电影再缩放</A></H2>
<P>把电影图象的尺寸重新设置的需要经常出现。原因可能很多例如减小输出文件的大小把SVCD编码为到DivX。提取的DVD多半需要重新缩放例如一个4:3的
DVD应该是640x480当你希望它合适1张CD并且同时还有不错的质量的时候。SVCD是480x480的尺寸而他们的头部包含播放器应该使用的长宽比(例如:
480x480 + 4:3 = 640x480)。
然而当编码成为AVI(DivX)文件时你必须了解AVI的头部不存储这个值。这样唯一的解决方法是重新缩放。</P>
<P>把电影图象的尺寸重新设置的需要经常出现。原因可能很多例如减小输出文件的大小网络带宽等等很多人甚至再把DVD或SVCD编码为到DivX
的AVI的时候也重新缩放<B>这是错误的</B>。在这么做之前,请先阅读<A HREF="#aspect">保持屏幕高宽比</A>部分。</P>
<P>缩放过程由<I>'scale'</I>视频滤镜处理:<CODE>-vop scale=X:Y</CODE>。其质量由<CODE>-sws</CODE>选项控制。如果它没有指定,
<B>MEncoder</B>将使用0快速二次线性。</P>
<P>缩放过程由<I>'scale'</I>视频滤镜处理:<CODE>-vop scale=widht:height</CODE>。其质量由<CODE>-sws</CODE>选项控制。如果它没有指定,
MEncoder将使用0快速二次线性缩放。</P>
<P>用法:<BR>
<H5>用法:</H5>
<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>
<H2><A NAME="copying">7.3 流复制</A></H2>
<P><B>MEncoder</B>能用两种方式处理输入流:<B>编码</B>或者<B>复制</B>他们。这部分是关于<B>复制</B>的。</P>
<P>MEncoder能用两种方式处理输入流<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>
比如把FLI或者VIVO或者MPEG1的视频放(不是转化)到AVI文件中。当然只有MPlayer能播放这样的文件)。而且可能在现实生活中没有任何价值。
合理使用:比如视频流复制可以用于只有音频流需要被编码的情况(比如从非压缩的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>
<H2><A NAME="fixing">7.4 修复索引或者交错损坏的AVI </A></H2>
<P>最容易的事情。我们简单地复制视频和音频流,并用<B>MEncoder</B>产生索引。当然这不能修复视频和/或者音频流中可能的错误。
<P>最容易的事情。我们简单地复制视频和音频流并用MEncoder产生索引。当然这不能修复视频和/或者音频流中可能的错误。
这同样也可以修复交错损坏的文件,
使它们不再需要<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>
<H2><A NAME="libavcodec">7.5 用libavcodec编解码器族编码</A></H2>
<P><A HREF="codecs.html#libavcodec">libavcodec</A>提供简单编码许多有趣的视频和音频格式(目前其音频编码器还不支持)的方法。
你能编码下列的编码格式:</P>
@ -184,30 +115,29 @@ DVDӦ
<LI>mpeg1video -- MPEG1视频)</LI>
</UL>
<P>第一个列包含应该传给<CODE>vcodec</CODE>置的编码格式的名称,比如:<CODE>-lavcopts vcodec=msmpeg4</CODE></P>
<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>
-lavcopts vcodec=mjpeg -oac copy</CODE></P>
<H4><A NAME="image_files">2.4.2.6 从多个图象文件(JPEGPNG或TGA)的输入编码</A></H4>
<H2><A NAME="image_files">7.6 用输入的多幅图象文件(JPEGPNG或TGA)进行编码</A></H2>
<P><B>MEncoder</B>具有从一个或多个JPEGPNG或TGA文件创建电影的能力。通过简单的framecopy它能创建MJPEG(Motion JPEG)
<P>MEncoder具有从一个或多个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>MEncoder使用<CODE>libjpeg</CODE><I>解码</I>输入图像(当解码PNG时将使用<B>libpng</B>)。</LI>
<LI><B>MEncoder</B>接着把解码后的图象喂给所选的的视频压缩器(DivX4Xvidffmpeg msmpeg4等等)。注意因为PNG解码器
目前只能输出RGB格式所以不能用于要求YUV输入的编码格式像DivX4或者ffmpeg的msmpeg4之类。</LI>
<LI>MEncoder接着把解码后的图象喂给所选的的视频压缩器(DivX4Xvidffmpeg msmpeg4等等)。</LI>
</OL>
<H4>例子</H4>
<P><CODE>-mf</CODE>选项的解释能在全局<A HREF="#options">选项</A>部分和manpage中找到。</P>
<P><CODE>-mf</CODE>选项的解释能在man page中找到。</P>
<P><I>用当前目录中的所有JPEG文件创建DivX4文件</I><BR>
&nbsp;&nbsp;<CODE>mencoder \*.jpg -mf on:w=800:h=600:fps=25 -ovc divx4 -o
@ -234,10 +164,10 @@ MPNG(Motion PNG )
-o output.avi</CODE></P>
<H4><A NAME="vobsub">2.4.2.7 DVD字幕提取为Vobsub文件</A></H4>
<H2><A NAME="vobsub">7.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>MEncoder有把DVD字幕提取到Vobsub格式的文件的能力。包括以<CODE>.idx</CODE><CODE>.sub</CODE>结尾的一对
文件而且通常打包在一个单一的<CODE>.rar</CODE>文档中。MPlayer能使用<CODE>-vobsub</CODE><CODE>-vobsubid</CODE>
选项播放它们。</P>
<P>你使用<CODE>-vobsubout</CODE>选项规定输出文件的基名称(就是不包括<CODE>.idx</CODE>或者<CODE>.sub</CODE>的后缀)和
@ -265,10 +195,26 @@ MPNG(Motion PNG )
&nbsp;&nbsp;<CODE>mencoder movie.mpg -ifo movie.ifo -vobsubout subtitles
-vobsuboutindex 0 -vobsuboutid fr -sid 1</CODE></P>
<H2><A NAME="aspect">7.8 保持屏幕高宽比</A></H2>
<H3><A NAME="options">2.4.3 可用的选项</A></H3>
<P>DVD和SVCD(也就是MPEG1/2)文件通常包含屏幕高宽比的值,它描述播放器如何正确缩放视频流,保证人不会长鸡蛋脑袋
(ex.: 480x480 + 4:3 = 640x480)。但当编码成AVI(DivX)文件时你必须清醒的认识到AVI的文件头中没有储存这个数据。重新缩放电影
是令人厌恶的而且消耗时间。必须有一个更好的特性!</P>
<P><B>MEncoder</B>可用的选项和例子的完全列表请参见manpage。</P>
<P>下面就是。</P>
<P>MPEG4有一个特性视频流可以包含它所需要的屏幕高宽比没错就跟MPEG1/2文件(DVD, SVCD)一样。遗憾的是除了MPlayer
之外<U>没有</U>视频播放器支持这个特性。</P>
<P>这个特性只能用于<B>libavcodec</B><CODE>mpeg4</CODE>编解码器。牢牢记住这一点尽管MPlayer能正确播放所创建的文件。
别的播放器还会使用错误的屏幕高宽比。</P>
<P>你应该认真的把电影上下的黑边切掉。看man page了解<CODE>cropdetect</CODE><CODE>crop</CODE>滤镜的使用。</P>
<H5>用法:</H5>
<P><CODE>$ mencoder sample-svcd.mpg -ovc lavc -lavcopts
vcodec=mpeg4:aspect=16.0/9.0 -vop crop=714:548:0:14 -oac copy -o output.avi</CODE></P>
</BODY>
</HTML>

View File

@ -2,9 +2,9 @@
<HTML>
<HEAD>
<TITLE>FAQ -- MPlayer -- Linux的电影播放器</TITLE>
<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">
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=gbk">
<STYLE TYPE="text/css">
dt {
font-weight : bold;
@ -22,7 +22,7 @@
<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="#dvd">5.5 DVD</A></LI>
<LI><A HREF="#features">5.6 特性要求</A></LI>
<LI><A HREF="#encoding">5.7 编码</A></LI>
</UL>
@ -41,7 +41,7 @@
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>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>
@ -62,7 +62,7 @@
<DD>&nbsp;</DD>
<DT>Q好极了那么我使用Red Hat/Mandrake的gcc 3.0.1,我没问题!</DT>
<DD>A因为那些编译器同样有问题。为了了解当前的编译器对MPlayer的支持状况参见<A HREF="documentation.html#installation">安装</A>一节</DD>
<DD>A因为那些编译器同样有问题。为了了解当前的编译器对MPlayer的支持状况参见<A HREF="documentation.html#installation">安装</A>部分</DD>
<DD>&nbsp;</DD>
<DT>Q我试图编译MPlayer但是我得到这样的输出
@ -126,7 +126,7 @@
<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>A把etc/inttypes.h复制到MPlayer目录下(<CODE>cp etc/inttypes.h .</CODE>)然后再试一次...</DD>
<DD>&nbsp;</DD>
<DT>Q我在Pentium III上运行Linux但是<CODE>./configure </CODE>没有找到SSE...</DT>
@ -137,7 +137,7 @@
<DD>A阅读<A HREF="video.html#mga_vid">mga_vid文档</A></DD>
<DD>&nbsp;</DD>
<DT>Q<B>MPlayer</B>有rpm/deb/...之类的安装包吗?</DT>
<DT>QMPlayer有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>
@ -165,10 +165,10 @@
<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>
modutils和MPlayer。</DD>
<DD>&nbsp;</DD>
<DT>Q编译<B>MEncoder</B>过程中在连接时出现segfaults</DT>
<DT>Q编译MEncoder过程中在连接时出现segfaults</DT>
<DD>A这是连接程序的问题。把binutils升级应该有用(2.11.92.*或者更新版本应该不错)。由于它不是我们的问题,
请一定<B>不要</B>报告!</DD>
<DD>&nbsp;</DD>
@ -177,7 +177,7 @@ modutils
<DD>Achmod 644 /usr/lib/libc.so</DD>
<DD>&nbsp;</DD>
<DT>Q我想在Minix上编译<B>MPlayer</B></DT>
<DT>Q我想在Minix上编译MPlayer</DT>
<DD>A我也想。:)</DD>
</DL>
@ -187,8 +187,22 @@ modutils
<DL>
<DT>Q我能同时运行多个<B>MPlayer</B>实例吗?</DT>
<DD>A是的。有些视频输出的驱动像xvdga或者(x)mga是唯一的所以你将不能够运行超过一个使用这样的视频输出驱动的<B>MPlayer</B>实例。
<DT>Q: 我怎么给MPlayer制作正确的补丁</DT>
<DD>A: 我们做了一个<A HREF="tech/patches.txt">短小的文件</A>描述了所有必要的细节。照上面的步骤做。</DD>
<DD>&nbsp;</DD>
<DT>Q: 我怎么支持MPlayer的开发工作</DT>
<DD>A: 我们非常乐于接受你的硬件和软件的<A HREF="http://www.mplayerhq.hu/homepage/donations.html">捐赠</A>
它们能帮助我们持续的改进MPlayer。</DD>
<DD>&nbsp;</DD>
<DT>Q: 我怎么成为MPlayer的开发者</DT>
<DD>A: 我们总是欢迎写程序的和写文档的。先阅读<A HREF="tech/">技术文档</A>来有个大致了解。然后你应该订阅<A
HREF="http://mplayerhq.hu/mailman/listinfo/mplayer-dev-eng">mplayer-dev-eng</A>邮件列表并开始编程。</DD>
<DD>&nbsp;</DD>
<DT>Q我能同时运行多个MPlayer实例吗</DT>
<DD>A是的。有些视频输出的驱动像xvdga或者(x)mga是唯一的所以你将不能够运行超过一个使用这样的视频输出驱动的MPlayer实例。
音频驱动也在不是很严重的程度上存在这种问题。并非所有的驱动都允许在同样的设备上播放多重流。</DD>
<DD>&nbsp;</DD>
@ -198,8 +212,8 @@ modutils
<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>
你必须指定<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>
@ -233,8 +247,8 @@ modutils
<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>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>
@ -242,12 +256,12 @@ modutils
<DD>&nbsp;</DD>
<DT>Q当我试图播放我最喜爱的视频时我发现一个讨厌的bug我应该报告谁</DT>
<DD>A请阅读<A HREF="bugreports.html">bug报告指导</A>遵照上面的指令做。</DD>
<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>
<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>
@ -260,7 +274,7 @@ modutils
<DD>&nbsp;</DD>
<DT>QLIRC不工作因为...</DT>
<DD>A你明确你使用的是<CODE>mplayer</CODE>而不是<CODE>mplayer-lirc</CODE>吗? 注意,<CODE>mplayer-lirc</CODE>
<DD>A你明确你使用的是<CODE>mplayer</CODE>而不是<CODE>mplayer-lirc</CODE>吗? 注意,<CODE>mplayer_lirc</CODE>
使用了很长时间包括0.60的发行版,但是它最近又变成<CODE>mplayer</CODE>了。</DD>
<DD>&nbsp;</DD>
@ -278,12 +292,12 @@ modutils
<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>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>
<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>
@ -298,7 +312,7 @@ modutils
</DL>
<H2><A NAME="playback">5.3 放问题</A></H2>
<H2><A NAME="playback">5.3 放问题</A></H2>
<DL>
@ -309,13 +323,13 @@ modutils
compile time!)
</PRE>
</DT>
<DD>A可能文件的音频使用了一个不是<B>MPlayer</B>本地支持的解码器。按照README或者<A HREF="documentation.html#installation">
安装</A>一节中的指示安装Win32解码器包。</DD>
<DD>A可能文件的音频使用了一个不是MPlayer本地支持的解码器。按照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>AMPlayer不是avifile。它们之间唯一的共同之处Win32 DLL装载器。codecs(DLL)集,同步,信号分离等等完全不同
所以不应该被比较。如果什么东西能用aviplay播放并不意味着MPlayer能工作反之亦然。</DD>
<DD>&nbsp;</DD>
<DT>Q播放AVI文件时音频不同步。</DT>
@ -330,7 +344,7 @@ modutils
&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>
或者使用MPlayer的<CODE>-afm 1</CODE>选项禁用l3codeca.acm。</DD>
<DD>&nbsp;</DD>
<DT>Q我的电脑播放分辨率640x300而且是立体声的mp3的M$ DivX AVI文件时非常慢。当我使用-nosound选项时一切正常(但没有声音)。</DT>
@ -338,8 +352,8 @@ modutils
<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>A尝试在你用来编译MPlayer的机器上运行它。或者重新编译打开运行时CPU检测功能(<CODE>./configure --enable-runtime-cpudetection</CODE>)。
如果没有使用上面提到的特性不要在与编译它不同的CPU上使用MPlayer。</DD>
<DD>&nbsp;</DD>
<DT>Q我有个关于[your window manager]跟xv/xmga/sdl/x11模式下全屏的问题...</DT>
@ -352,9 +366,9 @@ modutils
<DD>&nbsp;</DD>
<DT>Q当KDE下的运行MPlayer我只看到一个黑色的屏幕什么都没有。在大约一分钟之后才开始播放视频。</DT>
<DD>AKDE的arts守护进程阻塞声卡设备。一直等到视频开始或者在控制中心中禁用arts。如果你想使用arts的音频
<DD>AKDE的arts守护进程阻塞声卡设备。你可以一直等到视频开始或者在控制中心中禁用arts。如果你想使用arts的音频
将音频输出指定为我们本地的arts音频驱动<CODE>-ao arts</CODE>)。如果它失败或者没有被编译进来尝试SDL
(<CODE>-ao sdl</CODE>)并且确保你的SDL能处理arts的音频。还有另一个选择是用artsdsp运行<B>MPlayer</B></DD>
(<CODE>-ao sdl</CODE>)并且确保你的SDL能处理arts的音频。还有另一个选择是用artsdsp运行MPlayer。</DD>
<DD>&nbsp;</DD>
<DT>Q我有一个AVI文件当用<CODE>-vc odivx</CODE>播放时时,出现灰色屏幕,用<CODE>-vc divx4</CODE>时,出现绿色屏幕。</DT>
@ -365,10 +379,10 @@ modutils
<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>你的CPU<B>和/或者</B>显卡<B>和/或者</B>总线太慢。在这种情况下MPlayer会显示信息(并且掉帧数会迅速增加)。</LI>
<LI>如果它是AVI文件也许它的交错有问题。试试<CODE>-ni</CODE>选项。</LI>
<LI>你的声卡驱动太buggy或者你对ALSA 0.5使用了<CODE>-ao oss</CODE>
参见<A HREF="sound.html">声卡一节</A></LI>
参见<A HREF="sound.html">声卡部分</A></LI>
<LI>AVI的文件头有问题试试<CODE>-nobps</CODE>选项,和/或者<CODE>-mc 0</CODE></LI>
</UL></DD>
<DD>&nbsp;</DD>
@ -383,11 +397,11 @@ modutils
<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>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>A你的声卡/驱动buggy。很有可能它的固定在44100Hz而你试图播放22050Hz的音频的文件。试试resample音频滤镜</DD>
<DD>&nbsp;</DD>
<DT>Q我播放所有WMV (或者其它.. )文件时都只有一个绿色/灰色的窗口和声音! MPlayer报告<BR>
@ -396,7 +410,8 @@ modutils
<DD>&nbsp;</DD>
<DT>Q我用我的笔记本播放文件时得到十分奇怪的CPU百分值(太大了)。</DT>
<DD>A这是你的笔记本的电源管理/节能系统(BIOS不是内核)的影响。起动你的笔记本<B>之前</B>插上外部电源。</DD>
<DD>A这是你的笔记本的电源管理/节能系统(BIOS不是内核)的影响。起动你的笔记本<B>之前</B>插上外部电源。你也可以试试<A
HREF="http://www.brodo.de/cpufreq/">cpufreq</A>(一个Linux下的SpeedStep界面)对你是否有帮助。</DD>
<DD>&nbsp;</DD>
<DT>Q当我以root权限在我的笔记本上运行MPlayer时音频与视频完全不同步。当我作为普通用户运行它时它工作正常。</DT>
@ -405,7 +420,7 @@ modutils
</DL>
<H2><A NAME="driver">5.4 视频与音频驱动问题(vo/ao) </A></H2>
<H2><A NAME="driver">5.4 视频与音频驱动问题(vo/ao)</A></H2>
<DL>
@ -418,11 +433,11 @@ modutils
Start playing...
</PRE>
</DT>
<DD>A你是运行的KDE或者GNOME并且起动了arts或者esd音频守护进程吗? 试试禁用音频守护进程,或者使用<CODE>-ao arts</CODE>
选项让<B>MPlayer</B>使用arts</DD>
<DD>A你是运行的KDE或者GNOME并且起动了ARTS或者ESD音频守护进程吗? 试试禁用音频守护进程,或者使用<CODE>-ao arts</CODE>
<CODE>-ao esd</CODE>选项让MPlayer使用ARTS或ESD</DD>
<DD>&nbsp;</DD>
<DT>QDGA驱动怎么了? 我找不到它!</DT>
<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>
@ -430,14 +445,14 @@ modutils
<DT>Q很好<CODE>-vo help</CODE>显示有DGA驱动但是它抱怨权限。帮帮我</DT>
<DD>A它只能以root权限工作 这是DGA的限制。你应该成为root(<CODE>su -</CODE>),然后再试一次。另一个解决方法是为
<B>MPlayer</B>SUID root但是这种方法<B>不被推荐!</B><BR>
MPlayerSUID 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>
MPlayer获得root权限。<B>你被警告过了。</B>
</BLOCKQUOTE>
</DD>
<DD>&nbsp;</DD>
@ -449,9 +464,10 @@ modutils
&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>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>
@ -465,12 +481,12 @@ bugfix #621 of the XFree86 4.1.0 CVS log</A>
<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>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>A知道目前GUI能使用SDL。</DD>
<DD>&nbsp;</DD>
<DT>Q啊世界真是残酷... SDL只有<CODE>x11</CODE>输出,而不是<CODE>xv</CODE></DT>
@ -480,23 +496,29 @@ nVidia</A>˵
</DL>
<H2><A NAME="dvd">5.5 DVD</A></H2>
<H2><A NAME="dvd">5.5 DVD</A></H2>
<DL>
<DT>Q: 有没有DVD导航菜单</DT>
<DD>A: MPlayer中的dvdnav支持目前坏了但正常的播放可以工作。如果你想要华丽的菜单你需要使用别的播放器比如<A
HREF="http://xine.sourceforge.net">xine</A>或者<A HREF="http://www.dtek.chalmers.se/groups/dvd/">Ogle</A>
如果你确实在意DVD导航送一个<A HREF="tech/patches.txt">补丁</A>.</DD>
<DD>&nbsp;</DD>
<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>A这是已知的libdvdread 0.9.1/0.9.2的bug。使用<B>libmpdvdkit2</B>就在MPlayer的源代码中并且缺省使用</DD>
<DD>&nbsp;</DD>
<DT>Q我能在我的Solaris下的可爱的SPARC上编译libdvdread和libdvdcss吗</DT>
<DD>A天知道...据说它能工作所以请测试它并且提供反馈。也参阅libdvdread的文件及其主页。我们不是libdvdread的作者。使用<B>libmpdvdkit</B>
<DD>A天知道...据说它能工作所以请测试它并且提供反馈。也参阅libdvdread的文件及其主页。我们不是libdvdread的作者。使用<B>libmpdvdkit2</B>
就在MPlayer的源代码中并且缺省使用。</DD>
<DD>&nbsp;</DD>
<DT>Q字幕怎么样 MPlayer能显示他们吗</DT>
<DD>A是。参见文档的<A HREF="cd-dvd.html#dvd">DVD chapter</A>部分。</DD>
<DD>A是。参见文档的<A HREF="cd-dvd.html#dvd">DVD</A>部分。</DD>
<DD>&nbsp;</DD>
<DT>Q我怎么设置我的DVD光驱的地区代码 我没有Windows</DT>
@ -504,21 +526,21 @@ nVidia</A>˵
<DD>&nbsp;</DD>
<DT>Q我一定需要(setuid) root/setuid fibmap_mplayer来播放DVD吗</DT>
<DD>A只用于老式的DVD支持。然而你必须有适当的DVD设备项目的权限(在<CODE>/dev/</CODE>里)。</DD>
<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>A你不需要。使用<B>libmpdvdkit2</B>就在MPlayer的源代码中并且缺省使用。这些包能从<A
HREF="http://www.dtek.chalmers.se/groups/dvd">Ogle的站点</A>得到。</DD>
<DD>&nbsp;</DD>
<DT>Q可以单独播放/编码选的chapter吗</DT>
<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>
<DD>A使用<CODE>-cache</CODE>选项(在man page中介绍)并尝试用hdparm工具为了DVD光驱开启DMA(在文档<A
HREF="cd-dvd.html#cd">CD部分</A>介绍)。</DD>
</DL>
@ -532,11 +554,11 @@ nVidia</A>˵
<DD>&nbsp;</DD>
<DT>Q我想要+/- 1帧来搜索而不是10秒。</DT>
<DD>A这不会被我们实现。它曾被实现过但是它弄乱了A/V同步。如果你愿意就实现它并且发送补丁。不要要求它。</DD>
<DD>A这不会被实现。它曾被实现过但是它弄乱了A/V同步。如果你愿意就实现它并且发送补丁。不要要求它。</DD>
<DD>&nbsp;</DD>
<DT>Q哪里有Windows版本</DT>
<DD>A没有发行并且将来也不会。看看Windows的情况(开源的ASF分析器开源的ASF编码器等等)然后你就知道为什么了。
<DD>A它没有发行并且将来也不会。看看Windows的情况(开源的ASF分析器开源的ASF编码器等等)然后你就知道为什么了。
我们不想进监狱。顺便说一下,你可以自己编译它,在<A HREF="documentation.html#cygwin">Cygwin</A>下。</DD>
<DD>&nbsp;</DD>
@ -548,14 +570,24 @@ nVidia</A>˵
<DL>
<DT>Q我怎么编码</DT>
<DD>A读取<B>MEncoder</B><A HREF="encoding.html"></A></DD>
<DD>A读取MEncoder的<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>A试试<CODE>TOOLS</CODE>目录下的<CODE>mencvcd</CODE>脚本。使用它你能把DVD或者其它电影编码成为VCD或者SVCD格式
甚至直接把它们刻到CD上。</DD>
<DD>&nbsp;</DD>
<DT>Q: 我怎么合并两个视频文件?</DT>
<DD>A: 这在mplayer-users上面是永不完结的话题。检索<A
HREF="http://mplayerhq.hu/cgi-bin/htsearch?restrict=/mplayer-users/">邮件文档</A>来寻找完整的答案。
这是个复杂的问题而且你的操作可能因为你想要合并的文件种类有很大分别。MPEG可以直接连接成一个文件。
对于AVI有两个可用的工具<A HREF="http://fixounet.free.fr/avidemux/">avidemux</A>和avimerge(<A
HREF="http://www.theorie.physik.uni-goettingen.de/~ostreich/transcode/">transcode</A>工具集的一部分)
可能可以完成这个工作。如果两个文件使用同样的分辨率和编解码器你也可用试试MEncoder。尝试<BR>
&nbsp;&nbsp;&nbsp;&nbsp;<CODE>cat file1 file2 &gt; file3</CODE><BR>
&nbsp;&nbsp;&nbsp;&nbsp;<CODE>mencoder -ovc copy -oac copy -o out.avi -forceidx file3.avi</CODE></DD>
<DD>&nbsp;</DD>
<DT>Q我的电视选台器工作我能用MPlayer听到声音观看视频但是MEncoder不把音频编码</DT>
<DD>ALinux的电视音频编码目前还没有实现我们正在努力。目前它只在BSD上工作。</DD>
<DD>&nbsp;</DD>

View File

@ -2,9 +2,9 @@
<HTML>
<HEAD>
<TITLE>格式 -- MPlayer -- Linux的电影播放器</TITLE>
<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">
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=gbk">
</HEAD>
<BODY>
@ -21,8 +21,8 @@
<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>
或者你可以把MPEG1视频放到AVI文件中。<A HREF="http://ffmpeg.sourceforge.net">FFmpeg</A><A
HREF="encoding.html">MEncoder</A>就能制作这样的文件。</P>
@ -36,7 +36,7 @@
<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>
DAT文件不能直接播放也不能作为普通的文件从VCD上复制下来。你必须使用<CODE>-vcd</CODE>选项来播放Video CD。</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>
@ -53,84 +53,83 @@ DAT
<P>由微软设计,<B>AVI(Audio Video Interleaved)</B>是一种普遍的多用途格式目前被大多数DivX和DivX4视频所使用。
它有许多已知的弊端和缺点(比如在流播放时)。它支持1个视频流和0到99个音频流。文件大小限制是2GB但是现在存在一种扩展格式
称为<B>OpenDMS</B>允许更大的文件。微软目前强烈反对使用它并鼓励使用ASF与WMV。不过没有什么人在乎</P>
称为<B>OpenDMS</B>允许更大的文件。微软目前强烈反对使用它并鼓励使用ASF与WMV。不是所有人都在乎这一点</P>
<P>有一个hack允许AVI文件包含Ogg Vorbis音频流的但这使他们与标准的AVI不兼容。<B>MPlayer</B>支持播放这种文件。
搜索功能也被植入,但由于编码糟糕的文件的混乱的文件头使这项功能被严重限制了。遗憾地是,目前唯一能建立这种文件的编码器,
<P>有一个hack允许AVI文件包含Ogg Vorbis音频流的但这使他们与标准的AVI不兼容。MPlayer支持播放这种文件。
搜索功能也被植入,但由于编码低劣的文件的混乱的文件头使这项功能被严重限制了。遗憾地是,目前唯一能建立这种文件的编码器,
NanDub就存在这个问题。</P>
<P><B>注意:</B>DV照相机建立的未经加工的DV流被DV grabbing utilities转换成两种不同类型的AVI文件。所以AVI将或者包含
<B>MPlayer</B>可以播放的分离的音频与视频流或者是未经加工的DV流它的支持正在开发中的。</P>
MPlayer可以播放的分离的音频与视频流或者是未经加工的DV流它的支持正在开发中的。</P>
<P>有两种类型的AVI文件</P>
<UL>
<LI><B>交错的:</B>音频和视频内容是交错的。这是标准使用方法。被推荐且多半都使用。一些工具以错误的同步方式建立交错的AVI。
<B>MPlayer</B>认为这些文件是交错的这会导致A/V不同步在搜索时最为明显。这些文件应该被当作非交错的文件来播放
MPlayer认为这些文件是交错的这会导致A/V不同步在搜索时最为明显。这些文件应该被当作非交错的文件来播放
(使用<CODE>-ni</CODE>选项)。</LI>
<LI><B>非交错的:</B>首先是整个视频流然后是整个音频流。因此这需要大量的搜索使用网络或者CD-ROM播放变的困难。</LI>
</UL>
<P><B>MPlayer</B>支持两种AVI文件的计时方式</P>
<P>MPlayer支持两种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>
<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音频时会创建坏的文件。目前已知的
这样它们无法播放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>
<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>
Windows媒体编码器)使用并且是保密的. v2.0被公开并申请专利:)。当然,他们是不同的,完全没有任何兼容性(这只是又一个法律游戏)。
MPlayer>只支持v1.0格式因为没有任何人见过v2.0格式的文件:)。注意ASF文件现在常以.WMA或者.WMV的扩展名出现。</P>
<H4><A NAME="mov">2.1.1.4 QuickTimeMOV文件</A></H4>
<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>
<P><B>注意:</B>大多数新的QuickTime文件使用<B>Sorenson</B>视频和QDesign Music音频。参见我们的<A
HREF="codecs.html#sorenson">Sorenson</A>解码器部分</P>
<H4><A NAME="vivo">2.1.1.5 VIVO文件</A></H4>
<P><B>MPlayer</B>乐于解码VIVO文件格式。这个格式的最大缺陷在于它没有索引块也没有一个固定的包大小或者同步字节和大多数文件
<P>MPlayer乐于解码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>
<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>
<P><B>FLI</B>被Autodesk Animator使用的一种很老的文件格式但是它是网上小动画普遍使用的一种文件格式。MPlayer
能读取并解码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>
<P>是的MPlayer能读取(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>
<P><A HREF="http://mars.tuwien.ac.at/~roman/nuppelvideo">NuppelVideo</A>是电视截取工具(据我所知:)。MPlayer
能读取它的.NUV文件(只能是NuppelVideo 5.0)。那些文件能包含未压缩的YV12压缩的YV12+RTJpeg压缩的YV12+lzo和压缩的YV12 RTJpeg+lzo帧。
<B>MPlayer</B>能解码所有这些格式(并且用<B>MEncoder</B>把它们<B>编码</B>成DivX/etc!)。搜索功能能工作。</P>
MPlayer能解码所有这些格式(并且用MPlayer把它们<B>编码</B>成DivX/etc!)。搜索功能能工作。</P>
<H4><A NAME="yuv4mpeg">2.1.1.9 yuv4mpeg文件</A></H4>
@ -141,7 +140,7 @@ RealAudio</A>
<H4><A NAME="film">2.1.1.10 FILM文件</A></H4>
<P>这种格式用于老的世嘉土星CD-ROM游戏。</P>
<P>这种格式用于老的世嘉土星CD-Rom游戏。</P>
<H4><A NAME="roq">2.1.1.11 RoQ文件</A></H4>
@ -149,29 +148,42 @@ RealAudio</A>
<P>RoQ文件是用于ID的一些游戏例如Quake III和Return to Castle Wolfenstein的多媒体文件。</P>
<H4><A NAME="ogg">2.1.1.12 OGG文件</A></H4>
<H4><A NAME="ogg">2.1.1.12 OGG/OGM文件</A></H4>
<P>这是<A HREF="http://www.xiph.org">Xiphophorus</A>的一个新的文件格式。它能包含任何视频或者音频编码格式,
CBR或者VBR。要想播放它你需要在编译<B>MPlayer</B>之前安装<CODE>libogg</CODE><CODE>libvorbis</CODE></P>
CBR或者VBR。要想播放它你需要在编译MPlayer之前安装<CODE>libogg</CODE><CODE>libvorbis</CODE></P>
<H4><A NAME="sdp">2.1.1.13 SDP文件</A></H4>
<P><A HREF="ftp://ftp.rfc-editor.org/in-notes/rfc2327.txt">SDP</A>是一个IETF标准格式用来描述视频和/或者音频的RTP流。
(需要"<A HREF="http://www.live.com/mplayer/">LIVE.COM Streaming Media</A>"库)。</P>
<H4><A NAME="pva">2.1.1.14 PVA文件</A></H4>
<P>PVA是DVB电视附带的Windows下面的软件(比如MultiDecWinTV)使用的类似MPEG的格式。</P>
<P>PVA规格的描述可以在下面地址下载<A
HREF="http://www.technotrend.de/download/av_format_v1.pdf">http://www.technotrend.de/download/av_format_v1.pdf</A></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>
<P>MPlayer是一个<B>电影</B>播放器而不是<B>媒体</B>播放器,虽然它能播放一些音频文件(他们将在下面的
部分中列出)。不推荐这种使用MPlayer的方法你最好使用<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中描述的
<P>你可能在播放有些MP3文件时遇到问题MPlayer将它们错误的检测为MPEG文件并且不能正常播放或者完全不能播放。
如果要修正这个问题就必须放弃对有些被破坏的MPEG文件的支持所以在可以预见的将来仍然会是这样。man page中描述的
<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>
<H4><A NAME="ogg_vorbis">2.1.2.3 OGG/OGM文件(Vorbis)</A></H4>
<P>要求正确的安装<CODE>libogg</CODE><CODE>libvorbis</CODE></P>
@ -181,5 +193,22 @@ CBR
<H4><A NAME="mp4">2.1.2.5 MP4文件</A></H4>
<H4><A NAME="cdda">2.1.2.6 CD音频</A></H4>
<P>MPlayer可以使用<B>cdparanoia</B>(的库)播放CDDA(音频CD)。在这部分没有包含cdparanoia的特性的列表。</P>
<P>看man page了解如何通过<CODE>-cdda</CODE>选项向cdparanoia传递参数。</P>
<H4><A NAME="xmms">2.1.2.7 XMMS</A></H4>
<P>MPlayer可以使用XMMS的输入插件来播放各种格式。现在有用于SNES game tunes, SID tunes(from Commodore 64), 很多Amiga
格式, .xm, .it, VQF, musepack, Bonk, shorten和大量别的插件。你可以在<A
HREF="http://www.xmms.org/plugins_input.html">XMMS的输入插件页</A>找到它们。</P>
<P>要使用这个特性你必须安装了XMMS并在编译MPlayer的时候使用<CODE>./configure --enable-xmms</CODE>
如果这样不起作用,你可能需要用<CODE>--with-xmmsplugindir</CODE><CODE>--withxmmslibdir</CODE>
开关显式指定XMMS的插件和库的路径。</P>
</BODY>
</HTML>

View File

@ -1,8 +1,8 @@
<!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>
<meta http-equiv="Content-Type" content="text/html; charset=gbk">
<title>制作Skin -- MPlayer -- Linux的电影播放器</title>
<link rel="stylesheet" type="text/css" href="default.css">
<style type="text/css">
em.note {color: green;
@ -14,47 +14,9 @@ em.warn {color: red;
<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的格式。这里所包含的信息可能不对因为
<h1>附录D - MPlayer skin的格式</h1>
本文件的目的是描述MPlayer的skin的格式。这里所包含的信息可能不对因为
<ol type="a">
<li>GUI不是我写的</li>
@ -73,12 +35,12 @@ em.warn {color: red;
</p>
<h2><a name="overview">2 综述</a></h2>
<h2><a name="overview">D.1 综述</a></h2>
这虽然与skin的格式扯不上什么关系但是你应该了解<b>MPlayer</b><b>没有</b>内建的皮肤,
这虽然与skin的格式扯不上什么关系但是你应该了解MPlayer有<b>没有</b>内建的皮肤,
因此<b>为了能够使用GUI必须安装至少一种皮肤。</b>
<h3><a name="dirs">2.1 目录</a></h3>
<h3><a name="dirs">D.1.1 目录</a></h3>
skin的搜索目录(按顺序)是:
<pre>
@ -88,7 +50,7 @@ skin
</pre>
<p>
注意,第一个路径倚赖于<b>MPlayer</b>的安装配置(见<code>configure</code>脚本
注意第一个路径倚赖于MPlayer的安装配置(见<code>configure</code>脚本
<code>--prefix</code><code>--datadir</code>的参数)。
</p>
@ -98,32 +60,32 @@ skin
</pre>
<h3><a name="images">2.2 图象格式</a></h3>
<h3><a name="images">D.1.2 图像格式</a></h3>
象必须是真彩的(24或者32bpp)可以是BMPPNG或者非压缩TGA格式。最理想的格式是PNG因为它的压缩得很好。
像必须是真彩的(24或者32bpp)PNG图片
<p>
在主窗口(见下面)中你能使用包含“透明色”的图:用颜色#FF00FF(<font color="#FF00FF">深红</font>)
填充的区域在<b>MPlayer</b>看来是完全透明的。这意味着你甚至能改变窗口外形如果你的X服务器有XShape扩展。
在主窗口(见下面)中你能使用包含“透明色”的图:用颜色#FF00FF(<font color="#FF00FF">深红</font>)
填充的区域在MPlayer看来是完全透明的。这意味着你甚至能改变窗口外形如果你的X服务器有XShape扩展。
</p>
<h3><a name="components">2.3 皮肤组成部分</a></h3>
<h3><a name="components">D.1.3 Skin的组成部分</a></h3>
Skin的格式是十分自由的(不是像Winamp/XMMS的那种固定格式的皮肤),所以能不能做出些东西取决于你。
<p>
目前有三个要被修饰的窗口:<a href="#mainwin">主窗口</a><a href="#subwindow">副窗口</a>
目前有三个要被修饰的窗口:<a href="#mainwin">主窗口</a><a href="#subwindow">副窗口</a>,<a href="#mainwin">播放条</a>
<a href="#skinmenu">Skin菜单</a>(右键单击弹出)。
</p>
<ul>
<li>
<b>主窗口</b>是你控制<b>MPlayer</b>的地方。窗口的背景是图象。各种项目可以(而且必须)被放置在这里:
<b>主窗口</b>和/或者<b>播放条</b>是你控制MPlayer的地方。窗口的背景是图像。各种项目可以(而且必须)被放置在这里:
<em>按钮</em><em>滑动条</em><em>标签</em>。对于每一个项目,你都必须指定其位置和大小。
<p>
一个<b>按钮</b>有三种状态(按下,释放,禁止),所以按钮图必须垂直地划分成三部分。
一个<b>按钮</b>有三种状态(按下,释放,禁止),所以按钮图必须垂直地划分成三部分。
细节参见<a href="#main.button">按钮</a>项目。
</p>
@ -133,58 +95,59 @@ Skin
</p>
<p>
<b>标签</b>有一点特殊:字符需要从图象文件中绘制,而图象中的字符用<a href="#fonts">字体描述文件</a>
描述。后者一个纯文本文件规定图像中每一字符的xy坐标和大小(图文件和他的字体描述文件<em>共同</em>
<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>一节中说明的使用透明色。
<b>注意:</b>所有图像都能像<a href="#images">图像格式</a>一节中说明的使用透明色。如果X Server不支持
XShape扩展透明的部分将显示为黑色。如果你想使用这个特性主窗口背景图像的宽度应该能被8整除。
</em>
</p>
</li>
<li>
<b>subwindow</b>是电影显示的地方。如果没有载入电影它将显示一个指定的图(空的窗口太无聊了:-))
<b>subwindow</b>是电影显示的地方。如果没有载入电影它将显示一个指定的图(空的窗口太无聊了:-))
<em class=note><b>注意:</b>在这里<b>不允许</b>使用透明色。</em>
</li>
<li>
<b>skin菜单</b>仅仅是提供一个通过菜单控制<b>MPlayer</b>的方法。菜单需要两个图象:一个是基础图象
用来显示菜单的正常状态,另一个用来显示被选择的项目。当菜单弹出时,显示第一个图。如果你把鼠标在
菜单条目上移动,当前选择的项目从第二个图中复制并覆盖到当前鼠标指针下面的菜单项目上。
(第二个图从来不作为整体来显示)。
<b>skin菜单</b>仅仅是提供一个通过菜单控制MPlayer的方法。菜单需要两个图像一个是基础图像
用来显示菜单的正常状态,另一个用来显示被选择的项目。当菜单弹出时,显示第一个图。如果你把鼠标在
菜单条目上移动,当前选择的项目从第二个图中复制并覆盖到当前鼠标指针下面的菜单项目上。
(第二个图从来不作为整体来显示)。
<p>
一个菜单选项用图中的位置和大小定义(细节参见<a href="#skinmenu">skin菜单</a>)。
一个菜单选项用图中的位置和大小定义(细节参见<a href="#skinmenu">skin菜单</a>)。
</p>
</li>
</ul>
<p>
还有一件重要的事情没有提到:为了使按钮,滑动条和菜单项工作,<b>MPlayer</b>必须知道如果他们被点击
还有一件重要的事情没有提到为了使按钮滑动条和菜单项工作MPlayer必须知道如果他们被点击
的话应该做什么。这是利用<a href="#guimsg">消息</a>(事件)机制完成的。对于这些项目,你必须定义当
他们被点击时将会产生的消息。
</p>
<h3><a name="files">2.4 文件</a></h3>
<h3><a name="files">D.1.4 文件</a></h3>
你需要制作下列的文件构成一个skin
<ul>
<li>
一个配置文件称为<a href="#skin">skin</a>,告诉<b>MPlayer</b>如何将skin的不同部分放在一起
一个配置文件称为<a href="#skin">skin</a>告诉MPlayer如何将skin的不同部分放在一起
以及如果你在窗口中某处点击的话应该做什么。
</li>
<li>主窗口的背景图</li>
<li>主窗口的背景图</li>
<li>主窗口上代表物件的图像(包括一个或更多字体描述文件用来显示标签)。</li>
<li>在副窗口中显示的图(可选)。</li>
<li>skin菜单的两个图(仅当你想要创建菜单时才需要他们)。</li>
<li>在副窗口中显示的图(可选)。</li>
<li>skin菜单的两个图(仅当你想要创建菜单时才需要他们)。</li>
</ul>
除了skin的配置文件之外你能给其它文件起随便什么名字(但字体描述文件必须以<code>.fnt</code>为扩展名)。
<h2><a name="skin">3 <code>skin</code>文件</a></h2>
<h2><a name="skinfile">D.2 <code>skin</code>文件</a></h2>
<p>
如上所述这是skin的配置文件。
@ -228,10 +191,11 @@ end
<li><b>main</b> -- 对于主窗口</li>
<li><b>sub</b> -- 对于副窗口</li>
<li><b>menu</b> -- 对于skin菜单</li>
<li><b>playbar</b> - 播放条</li>
</ul>
<p>
(副窗口和skin菜单块是可选的 -- 你不一定要建菜单或者修饰副窗口 )。
(副窗口和skin菜单块是可选的 -- 你不一定要建菜单或者修饰副窗口 )。
</p>
<p>
@ -265,14 +229,17 @@ section = movieplayer
window = menu
; ... items for skin menu ...
end
window = playbar
; ... items for playbar ...
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>(按这个顺序尝试)。第一个匹配文件将被使用。
图像文件的名称必须不带目录名 -- 图像在<code>Skin</code>目录中被搜索。你能(但是并不需要)规定扩展名。
如果文件不存在MPlayer将试图装载<code>&lt;filename&gt;.&lt;ext&gt;</code>文件,
<code>&lt;ext&gt;</code>可以是<code>png</code>或者<code>PNG</code>(按这个顺序尝试)。第一个匹配文件将被使用。
</p>
<p>
@ -300,34 +267,28 @@ end
</pre>
</blockquote>
<b>MPlayer</b>将尝试加载<code>main</code><code>main.tga</code><code>main.TGA</code>
<code>main.bmp</code>等等,所以将找到<code>main.png</code>
MPlayer将尝试装载<code>main</code><code>main.png</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>
<h3><a name="mainwindow">D.2.1 主窗口和播放条</a></h3>
下面是所有能用于'<code>window = main</code>' .&nbsp;.&nbsp;. '<code>end</code>'块中的项目的列表。
下面是所有能用于'<code>window = main</code>' .&nbsp;.&nbsp;. '<code>end</code>'和'<code>window = playbar</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>位置,窗口的大小与图像相同。
指定用于主窗口的背景图。窗口将显示在屏幕上的<code>XY</code>位置,窗口的大小与图像相同。
<div>
<em class=warn>
<b>警告:</b>图象中的透明区域(彩色的#FF00FF )在没有XShape扩展的X服务器上是黑色的。
<b>注意:</b>这些参数目前对显示窗口不起作用。
</em>
<br>
<em class=warn>
<b>警告:</b>图像中的透明区域(彩色的#FF00FF )在没有XShape扩展的X服务器上是黑色的。图像的宽度必须能被8整除。
</em>
</div>
</dd>
@ -336,7 +297,7 @@ end
<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>制定的图必须有从上到下三个部分
指定的<code>message</code>将在按钮被点击时产生。被<code>image</code>制定的图必须有从上到下三个部分
(根据按钮的可能状态),像这样:
<pre>
+------------+
@ -354,18 +315,26 @@ end
</a></dt>
<dd>
允许或禁止window manager修饰主窗口。缺省设定是<b>禁止</b>
<br>
<br>
<em class=warn>
<b>注意:</b>这对显示窗口无效,它们不需要。
</em>
<br>
</dd>
<dt>
<a name="main.hpotmeter">
<b>
<code>hpotmeter = button, bwidth, bheight, phases, numphases, default, X, Y, width, height, message</code>
<br>
<code>vpotmeter = 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>
@ -373,8 +342,8 @@ end
<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>个部分:
<li><code>phases</code> -- 用于hpotmeter的不同的状态的图像。如果你想不要这样的图像可以使用一个特殊的值<code>NULL</code>
必须像这样被垂直划分成<code>numphases</code>个部分:
<pre>
+------------+
| phase #1 |
@ -387,15 +356,13 @@ end
+------------+
</pre>
</li>
<li><code>numphases</code> -- <code>phase</code>中储存的状态的数量</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">
@ -431,7 +398,7 @@ textֻ
<dd>
<code>X</code><code>Y</code>位置放置一个动态的标签。标签被称为动态的因为它的text周期性地刷新。标签的最大限度长度由
<code>leghth</code>给定(它的高度是字符的高度)。如果将要显示的text比给定的宽度宽它将滚动显示否则它将在指定的空间之内按
<code>align</code>参数的值对齐显示:<code>0</code>表示靠右对齐,<code>1</code>表示居中对齐,<code>2 </code>表示靠左对齐。
<code>align</code>参数的值对齐显示:<code>0</code>表示靠右对齐,<code>1</code>表示居中对齐,<code>2</code>表示靠左对齐。
<br>
要显示的文本由<code>text</code>给定text必须封在一对双引号中(但是<code>"</code>字符不能是text的一部分)。标签使用由
<code>fontid</code>代表的字体显示。你能在文本中使用下列变量:
@ -482,6 +449,12 @@ textֻ
<td>"s"字符(如果电影停止播放并且字体中有"s"这个字符)</td></tr>
<tr><td align=center><kbd>$e</kbd></td>
<td>"e"字符(如果playback被暂停并且字体中有"e"这个字符)</td></tr>
<tr><td align=center><kbd>$x</kbd></td>
<td>电影宽度</td></tr>
<tr><td align=center><kbd>$y</kbd></td>
<td>电影高度</td></tr>
<tr><td align=center><kbd>$C</kbd></td>
<td>使用的编解码器的名字</td></tr>
</table>
<em class="note">
@ -493,7 +466,7 @@ textֻ
</dl>
<h3><a name="subwindow">3.2 副窗口</a></h3>
<h3><a name="subwindow">D.2.2 副窗口</a></h3>
下列的项目能用于'<code>window = sub</code>' .&nbsp;.&nbsp;. '<code>end</code>'块。
@ -502,25 +475,25 @@ textֻ
<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>指定窗口的大小; 他们是可选的(如果没有他们,窗口是与图同样的大小)。
在副窗口中将要显示的图。窗口将在屏幕给定的<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>
<h3><a name="skinmenu">D.2.3 Skin菜单</a></h3>
如前所述,菜单用两个图显示。
正常的菜单条目从<code>base</code>项指定的图中获得,当前选择的条目则从<code>selected</code>项指定的图中获得。
如前所述,菜单用两个图显示。
正常的菜单条目从<code>base</code>项指定的图中获得,当前选择的条目则从<code>selected</code>项指定的图中获得。
你必须通过<code>menu</code>项定义每个菜单条目的位置和大小。
<p>
@ -532,14 +505,14 @@ textֻ
<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">
@ -551,9 +524,9 @@ textֻ
</dl>
<h2><a name="fonts">4 字体</a></h2>
<h2><a name="fonts">D.3 字体</a></h2>
就象在关于skin的各部分的一节中论及的字体由一个图象和一个描述文件定义。你能将字符放置在图象中的任何地方,
就象在关于skin的各部分的一节中论及的字体由一个图像和一个描述文件定义。你能将字符放置在图像中的任何地方,
但是必须确保他们的位置和大小被精确的提交给描述文件。
<p>
@ -564,14 +537,14 @@ textֻ
<b><code>image = image</code></b>
</a></dt>
<dd>
其中<code>image</code>是用于字体的图文件的名字(你不必制定扩展名)。
其中<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>X</code><code>Y</code>指定<code>char</code>字符在图中的位置(<code>0,0</code>表示左上角)。
<code>width</code><code>height</code>是字符的尺寸,以象素为单位。
</dd>
</dl>
@ -588,7 +561,7 @@ image = font.png
</pre></td></tr></table>
<h3><a name="symbols">4.1 符号</a></h3>
<h3><a name="symbols">D.3.1 符号</a></h3>
<a href="#main.dlabel">dlabel</a>中使用的一些变量返回的一些字符有特殊的意义。这些字符应该被显示为符号,
使得播放DVD时显示一个漂亮的DVD logo而不是字符d
@ -621,11 +594,8 @@ image = font.png
<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>
<h2><a name="guimsg">D.4 GUI信息</a></h2>
这些是能被按钮,滑动条和菜单项产生的消息。
@ -644,14 +614,14 @@ image = font.png
<dt><b>evPauseSwitchToPlay</b>
<dd><code>evPlaySwitchToPause</code>一起形成开关。他们能用来实现普通的播放/暂停按钮。两条信息应该被分配到
窗口中同一位置的两个按钮上。这条信息暂停播放并使<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。
@ -756,9 +726,22 @@ image = font.png
<dt><b>evPlayList</b>
<dd>打开/关闭播放列表窗口。
<dt><b>evPlayDVD</b>
<dd>尝试打开指定的DVD-ROM驱动器中的碟片。
<dt><b>evPlayVCD</b>
<dd>尝试打开指定的CD-ROM驱动器中的碟片。
<dt><b>evPreferences</b>
<dd>打开选项设置窗口。
<dt><b>evSetAspect</b>
<dd>设置显示图像的屏幕高宽比。
<dt><b>evSetURL</b>
<dd>显示URL对话窗口。
<dt><b>evSkinBrowser</b>
<dd>打开skin浏览器窗口。
</dl>

View File

@ -2,9 +2,9 @@
<HTML>
<HEAD>
<TITLE>声音-- MPlayer -- Linux的电影表演者</TITLE>
<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">
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=gbk">
</HEAD>
<BODY>
@ -12,20 +12,48 @@
<H3><A NAME="audio">2.3.2 音频输出设备</A></H3>
<P><B>MPlayer</B>的音频接口称为<I>libao2</I>。它目前包含这些驱动:</P>
<H4><A NAME="sync">2.3.2.1 音频/视频同步</A></H4>
<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>MPlayer的音频接口称为<I>libao2</I>。它目前包含这些驱动:</P>
<P>事实上Linux声卡驱动有兼容问题。<B>可能</B>需要一定时间找到你最理想的设置。</P>
<DL>
<DT>oss</DT>
<DD>OSS(ioctl)驱动(支持硬件AC3输出)</DD>
<DT>sdl</DT>
<DD>SDL驱动(支持<B>ESD</B><B>ARTS</B>等等)</DD>
<DT>nas</DT>
<DD>NAS(Network Audio System)驱动</DD>
<DT>alsa5</DT>
<DD>本地的ALSA 0.5驱动</DD>
<DT>alsa9</DT>
<DD>本地的ALSA 0.9驱动(支持硬件AC3输出)</DD>
<DT>sun</DT>
<DD>BSD和Solaris8用户的SUN音频驱动(<CODE>/dev/audio</CODE>)</DD>
<DT>arts</DT>
<DD>本地的ARTS驱动(主要针对KDE用户)</DD>
<DT>esd</DT>
<DD>本地的ESD驱动(主要针对GNOME用户)</DD>
</DL>
<P>事实上Linux声卡驱动有兼容问题。这是因为MPlayer使用一个正常编码的声卡驱动实现的特性来实现音频/视频同步。遗憾的是有些驱动的作者
不在乎这个功能它在播放MP3和实现声音效果时并不需要。</P>
<P>别的媒体播放器比如aviplay或者xine可能在这些驱动上工作没有问题因为他们使用内部计时器的“简单”方法。注意时间表明他们的方法没有
MPlayer的方法有效率。</P>
<P>使用一个正确编制的音频驱动的时候MPlayer将永远不会产生音频相关的A/V不同步除非你的文件完全损坏。有些用来绕过这些问题的选项
在man page里面有描述)。</P>
<P>如果你碰巧遇到一个不好的音频驱动,尝试使用<CODE>-autosync</CODE>选项它应该可以解决你的问题。详细的信息参见man page。</P>
<P>一些提示:</P>
<UL>
<LI>如果你有OSS驱动先尝试<CODE>-ao oss</CODE>(这是默认的)。如果你遇到毛刺,停止或者任何不正常的事情,
@ -34,14 +62,12 @@ ARTS
<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>
<P><B>Solaris</B>上,必须<CODE>-ao sun</CODE>选项,否则视频音频都无法工作。</P>
<H4><A NAME="experiences">2.3.2.1 声卡体验,推荐</A></H4>
<H4><A NAME="experiences">2.3.2.2 声卡体验,推荐</A></H4>
<TABLE BORDER=0 WIDTH="100%">
<TR><TD COLSPAN=3><B>VIA板载芯片(via82cxxx)只能48kHz</B></TD></TR>
@ -115,20 +141,325 @@ ARTS
<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>对这个文件的反馈是受欢迎的。请告诉我们你的声卡是如何与MPlayer共同工作的。</P>
<P>对这个文件的反馈是受欢迎的。请告诉我们你的声卡是如何与<B>MPlayer</B>共同工作的。</P>
<H4><A NAME="af">2.3.2.3 Audio filters</A></H4>
<P>老的音频插件被新的音频滤镜层取代了。音频滤镜用来在声音到达声卡之前改变声音数据的属性。激活和关闭滤镜通常是自动的但也可以强制。
当音频数据的属性与声卡要求的不同时就会激活滤镜,不需要时就会关闭。<CODE>-af filter1,filter2,...</CODE>选项用来取代滤镜的默认行为
或者插入不能自动插入的滤镜。滤镜将按照它们在逗号分隔的列表中出现的顺序运行。</P>
<P>例如:<BR>
&nbsp;&nbsp;<CODE>mplayer -af resample,pan movie.avi </CODE></P>
<P>声音将先通过resample滤镜然后通过pan滤镜。注意列表中不能包含任何空格否则它将会失败。</P>
<P>滤镜通常有开关用来改变他们的行为。这些开关在下面的章节会详细的解释。当开关被省略是滤镜将执行默认的设置。这里是一个
使用带相应开关的滤镜的例子:</P>
<P>&nbsp;&nbsp;<CODE>mplayer -af resample=11025,pan=1:0.5:0.5 -channels 1
-srate 11025 media.avi</CODE></P>
<P>将resample滤镜的输出频率设置为11025Hz并使用pan滤镜把音频混合到一个声道。</P>
<P>这个滤镜层的运行由<CODE>-af-adv</CODE>开关控制。这个开关有两个子选项:</P>
<DL>
<DT><CODE>force</CODE><DT>
<DD>是一个比特域用来控制滤镜如何插入以及它们使用怎样的速度/精确度优化:
<DL>
<DT><CODE>0</CODE></DT>
<DD>使用滤镜的自动插入并根据CPU的速度优化。</DD>
<DT><CODE>1</CODE></DT>
<DD>使用滤镜的自动插入并为最高速度优化。<BR>
<EM>警告:</EM>音频插件的有些特性将会失效,声音质量将会下降。</DD>
<DT><CODE>2</CODE></DT>
<DD>使用自动插入并为质量优化。</DD>
<DT><CODE>3</CODE></DT>
<DD>不使用自动插入也不进行优化。<BR>
<I>警告:</I>这个设置可能会导致MPlayer崩溃。</DD>
<DT><CODE>4</CODE></DT>
<DD>按照上面0选项自动插入滤镜但尽可能的使用浮点处理。</DD>
<DT><CODE>5</CODE></DT>
<DD>按照上面1选项自动插入滤镜但尽可能的使用浮点处理。</DD>
<DT><CODE>6</CODE></DT>
<DD>按照上面2选项自动插入滤镜但尽可能的使用浮点处理。</DD>
<DT><CODE>7</CODE></DT>
<DD>按照上面3选项自动插入滤镜但尽可能的使用浮点处理。</DD>
</DL>
</DD>
<DT><CODE>list</CODE></DT>
<DD>是-af开关的别名。</DD>
</DL>
<P>滤镜层同样会影响下面的一般开关:
<DL>
<DT><CODE>-v</CODE></DT>
<DD>增加冗余级别使大部分滤镜显示处附加的状态信息。</DD>
<DT><CODE>-channels</CODE></DT>
<DD>这个选项设置你的声卡使用的输出声道数。它同样会影响从媒体解码处的声道数。如果媒体包含的声道数少于要求的声道数
channels插件(见下面)将自动插入。定向将使用channels滤镜的默认定向。</DD>
<DT><CODE>-srate</CODE></DT>
<DD>这个选项选择你的声卡的采样率如果你的声卡的采样率与当前媒体不同resample插件(见下面)将插入到音频滤镜层中
来补偿这个差别。</DD>
<DT><CODE>-format</CODE><DT>
<DD>这个选项设置声卡和音频滤镜层的采样格式如果你的声卡要求的采样格式域当前媒体不同一个format插件(见下面)将自动插入
来进行调整。</DD>
</DL>
<H4><A NAME="插件s">2.3.2.2 音频插件</A></H4>
<H5><A NAME="af_resample">2.3.2.3.1 升/降采样率</A></H5>
<P><B>MPlayer</B>支持音频插件。音频插件s用于在声音到达声卡之前改变音频数据的属性。他们用<CODE>-aop</CODE>开关加上
<P>MPlayer完全支持使用<CODE>resample</CODE>插件进行声音的升/降采样率。当你使用固定采样率的声卡或者被只兼容
最大44.1kHz的老声卡郁闷时可以使用它。这个滤镜会在需要时自动开启,但它也可以用命令行显式的开启。他有三个开关:</P>
<DL>
<DT><CODE>srate &lt;8000-192000&gt;</CODE></DT>
<DD>是一个整数用来设置输出的采样频率以Hz为单位。有效范围从8kHz到192kHz。如果输入输出的采样频率相同或者这个参数
被省略滤镜降自动卸载。高的采样频率通常会提高声音的质量,特别是跟别的滤镜一起使用的时候。</DD>
<DT><CODE>sloppy</CODE></DT>
<DD>是一个可选的二进制参数使输出频率可以与<CODE>srate</CODE>给定的频率稍有不同。这个开关用于开始播放的过程非常慢的情况。
它是默认打开的。</DD>
<DT><CODE>type &lt;0-2&gt;</CODE><DT>
<DD>是可选的在<CODE>0</CODE><CODE>2</CODE>之间的整数用来决定使用那种重新采样的方式。<CODE>0</CODE>重新采样方式为
代表线性插值算法,<CODE>1</CODE>代表使用多相filter-bank和整数处理过程<CODE>2</CODE>代表使用多相filter-bank和浮点处理
过程。线性插值非常的会,但是声音质量很差特别是在升高采样率时。质量最好的时<CODE>2</CODE>代表的重新采样方法但CPU的
消耗最大。</DD>
</DL>
<P>示例:<BR>
&nbsp;&nbsp;<CODE>mplayer -af resample=44100:0:0</CODE></P>
<P>将resample滤镜的输出频率设定为44100Hz使用精确的输出频率缩放和线性插值算法。</P>
<H5><A NAME="af_channels">2.3.2.3.2 改变声道数</A></H5>
<P><CODE>channels</CODE>滤镜用来添加和去除声道,它也可以用来实现声道的定向与复制。当音频滤镜层的输出与输入层不同
或者当别的滤镜需要它是它将自动开启。当不需要是这个滤镜会自行卸载。开关的数目是可变的:</P>
<DL>
<DT><CODE>nch &lt;1-6&gt;</CODE></DT>
<DD><CODE>1</CODE><CODE>6</CODE>间的整数用来设定输出的声道数。这个开关的必须的,不设置会导致运行时错误。</DD>
<DT><CODE>nr &lt;1-6&gt;</CODE></DT>
<DD><CODE>1</CODE><CODE>6</CODE>之间的整数用来指定定向的数量,这个参数是可选的,如果省略将使用默认的定向。</DD>
<DT><CODE>from1:to1:from2:to2:from3:to3...</CODE></DT>
<DD><CODE>0</CODE><CODE>5</CODE>之间的一对数定义每个声道被定向到哪里。</DD>
</DL>
<P>如果只给定<CODE>nch</CODE>将使用默认的定向,它是这样工作的:如果输出声道的数量大于输入声道的数量就插入空
声道(除了把单声道混合为立体声,此时单声道会输出到两个输出声道)。如果输出声道的数量比输入声道的数量少,多余
的声道将被删去。</P>
<P>示例1:<BR>
&nbsp;&nbsp;<CODE>mplayer -af channels=4:4:0:1:1:0:2:2:3:3 media.avi </CODE></P>
<P>将输出声道设为4并设定4个定向把0声道和1声道互换23声道保持原状。注意如果播放只有两个声道的媒体
23声道将没有声音但01声道仍然会互换。</P>
<P>示例2:<BR>
&nbsp;&nbsp;<CODE>mplayer -af channels=6:4:0:0:0:1:0:2:0:3 media.avi </CODE></P>
<P>将把声道数设为6并设置4个定向把0声道复制到0到3声道45声道仍然没有声音。</P>
<H5><A NAME="af_format">2.3.2.3.3 采样格式转换</A></H5>
<P><CODE>format</CODE>滤镜在不同的采样格式之间转换,当声卡或其他滤镜需要是它会自动开启。</P>
<DL>
<DT><CODE>bps &lt;number&gt;</CODE></DT>
<DD>可以是<CODE>1</CODE>, <CODE>2</CODE>或者<CODE>4</CODE>代表样本的字节数。这个开关是必须的,不设置会
导致运行时错误。</DD>
<DT><CODE>f &lt;format&gt;</CODE></DT>
<DD>是描述样本格式的字符串。字符串应该是下面这些东西的组合:<CODE>alaw</CODE>, <CODE>mulaw</CODE>或者<CODE>imaadpcm</CODE>,
<CODE>float</CODE>或者<CODE>int</CODE>, <CODE>unsigned</CODE>或者<CODE>signed</CODE>, <CODE>le</CODE>或者<CODE>be</CODE>
(低位优先或高位优先)。这个开关是必须的,不设置会导致运行时错误。</DD>
</DL>
<P>示例:<BR>
&nbsp;&nbsp;<CODE>mplayer -af format=4:float media.avi</CODE></P>
<P>将把输出格式设置为每个样本4字节的浮点数据。</P>
<H5><A NAME="af_delay">2.3.2.3.4 延迟</A></H5>
<P><CODE>delay</CODE>滤镜延迟声音到达扬声器的时间使得不同的声道能同时到达听众的位置。这个功能只当你有两个以上的扬声器
才有用,这个滤镜的参数的数目是可变的:</P>
<DL>
<DT><CODE>d1:d2:d3...</CODE></DT>
<DD>代表添加给不同声道的延迟时间的浮点数以ms为单位。最小延迟是0ms最大是1000ms。</DD>
</DL>
<P>计算不同声道需要的延迟的方法如下:</P>
<OL>
<LI>测量扬声器到你听的位置的距离以米为单位设那些距离为s1到s5(对于5.1系统)。没有补偿副低音的必要(你怎么也听不出
差别的)。</LI>
<LI>用最大的距离依次减去s1到s5的距离就是<BR>
s[i] = max(s) - s[i]; i = 1...5</LI>
<LI>按下面计算需要的延迟时间<BR>
d[i] = 1000*s[i]/342; i = 1...5 </LI>
</OL>
<P>示例:<BR>
&nbsp;&nbsp;<CODE>mplayer -af delay=10.5:10.5:0:0:7:0 media.avi</CODE></P>
<P>将左前和右前声道延迟10.5ms, 两个后声道和副声道不延迟中间声道延迟7ms。</P>
<H5><A NAME="af_volume">2.3.2.3.5 软件音量控制</A></H5>
<P>软件音量控制通过<CODE>volume</CODE>音频滤镜实现,小心使用这个滤镜因为他会降低声音的信噪比。在大多数情况下最好是
把PCM音量开到最大不使用这个滤镜而是通过混音器的主音量控制来控制你的扬声器的输出级别。如果你的电脑连有外部放大器。
(这几乎是普遍现象),可以通过调节主音量和放大器上的音量旋钮直到背景的咝咝声消失来使噪音级别达到最小。
这个滤镜有两个开关:</P>
<DL>
<DT><CODE>v &lt;-200 - +60&gt;</CODE></DT>
<DD><CODE>-200</CODE><CODE>+60</CODE>之间的浮点数代表音量大小以分贝为单位默认值是0分贝。</DD>
<DT><CODE>c</CODE></DT>
<DD>二进制控制项用来打开和关闭软修饰。软修饰可以在使用很高音量的时候使声音变得更加平滑。如果扬声器的动态区域很低
可以打开这个开关。但你必须明白这个特性会造成扭曲而且应该使作为最终手段。</DD>
</DL>
<P>示例:<BR>
&nbsp;&nbsp;<CODE>mplayer -af volume=10.1:0 media.avi</CODE></P>
<P>将音量增加10.1分贝并在音量太高的时候进行硬修饰。</P>
<P>这个滤镜还有另一个特性它检测总的最大音量并且会在MPlayer退出的时候显示出来。这个音量估计可以用来设定MEncoder
中的音量以利用最大的动态范围。</P>
<H5><A NAME="af_equalizer">2.3.2.3.6 均衡器</A></H5>
<P><CODE>equalizer</CODE>滤镜描述一个有10个倍频带的图形均衡器通过使用10个IIR通频带滤镜实现。这表示不管播放什么
样的音频它都会工作。10个带的中央频率分别为</P>
<TABLE BORDER="0" WIDTH="100%">
<TR><TD>频带号</TD><TD>中央频率</TD></TR>
<TR><TD>0</TD><TD>31.25 Hz</TD></TR>
<TR><TD>1</TD><TD>62.50 Hz</TD></TR>
<TR><TD>2</TD><TD>125.0 Hz</TD></TR>
<TR><TD>3</TD><TD>250.0 Hz</TD></TR>
<TR><TD>4</TD><TD>500.0 Hz</TD></TR>
<TR><TD>5</TD><TD>1.000 kHz</TD></TR>
<TR><TD>6</TD><TD>2.000 kHz</TD></TR>
<TR><TD>7</TD><TD>4.000 kHz</TD></TR>
<TR><TD>8</TD><TD>8.000 kHz</TD></TR>
<TR><TD>9</TD><TD>16.00 kHz</TD></TR>
</TABLE>
<P>如果播放的样本的频率比一个频带的中心频率低那个带就被禁用。这个滤镜的一个已知的bug是当样本频率接近
最高频带的中心频率的时候最高频带的特性不是对称的。这个问题可以通过使用resample滤镜在声音到达本滤镜之前
升高样本频率来解决。</P>
<P>这个滤镜有10个参数</P>
<DL>
<DT><CODE>g1:g2:g3...g10</CODE></DT>
<DD><CODE>-12</CODE> and <CODE>+12</CODE>之间的浮点数表示每个频带音量的改变,以分贝为单位。</DD>
</DL>
<P>Example:<BR>
&nbsp;&nbsp;<CODE>mplayer -af equalizer=11:11:10:5:0:-12:0:5:12:12 media.avi</CODE></P>
<P>将升高高频和低频区域的声音而几乎完全消去1kHz附近的声音。</P>
<H5><A NAME="af_panning">2.3.2.3.7 摇动滤镜</A></H5>
<P>使用<CODE>pan</CODE>滤镜可以把声道任意混合。它基本上是volunme滤镜和channels滤镜的组合。这个滤镜主要有
两个用途:</P>
<OL>
<LI>把许多声道混合到较少的声道,比如把立体声变为单声道。</LI>
<LI>在一个环绕音效系统中改变中央扬声器的“宽度”。</LI>
</OL>
<P>这个滤镜很难使用,而且在获得想要的效果之前需要动些脑筋。这个滤镜的开关数取决于输出的声道数:</P>
<DL>
<DT><CODE>nch &lt;1-6&gt;</CODE></DT>
<DD><CODE>1</CODE><CODE>6</CODE>之间的整数,用来设置输出的声道数。这个开关是必须的,如果省略将导致
运行时错误。</DD>
<DT><CODE>l00:l01:l02:..l10:l11:l12:...ln0:ln1:ln2:...</CODE></DT>
<DD><CODE>0</CODE><CODE>1</CODE>之间的浮点数。<CODE>l[i][j]</CODE>决定把输入声道j的多少成分混合到输出声道i。</DD>
</DL>
<P>示例1<BR>
&nbsp;&nbsp;<CODE>mplayer -af pan=1:0.5:0.5 -channels 1 media.avi</CODE></P>
<P>把立体声混合成单声道。</P>
<P>示例2<BR>
&nbsp;&nbsp;<CODE>mplayer -af pan=3:1:0:1:0.5:0.5 -channels 3 media.avi</CODE></P>
<P>将输出3个声道0声道和1声道保持不变再把0声道和1声道混合输出到2声道(然后可以把这个声道输出到副低音)。</P>
<H5><A NAME="af_sub">2.3.2.3.8 副低音</A></H5>
<P><CODE>sub</CODE>插件给音频增加一个副低音声道。用来产生副低音声道的数据是0声道和1声道音频数据的平均混合。
混合后的声音进过4阶Butterworth滤波器低通过滤默认去掉60Hz以上的声音然后添加到音频流的一个单独声道中。
警告当你播放5.1杜比数字音效的DVD时禁用这个滤镜否则它使副低音的声音发生混乱。这个滤镜有两个参数</P>
<DL>
<DT><CODE>fc &lt;20-300&gt;</CODE></DT>
<DD>是可选的浮点数用来设定滤波器剪除声音的频率以Hz为单位。有效值从20Hz到300Hz。想获得最好的结果应该尝试
设置剪除频率越低越好。这样会改进立体声或者环绕音效的体验。默认的剪除频率是60Hz。</DD>
<DT><CODE>ch &lt;0-5&gt;</CODE></DT>
<DD>是可选的在<CODE>0</CODE><CODE>5</CODE>之间的整数,决定插入副声道的声道编号,默认的声道号是<CODE>5</CODE>
注意如果需要总的声道数会自动增加到<CODE>ch</CODE>个。</DD>
</DL>
<P>示例:<BR>
&nbsp;&nbsp;<CODE>mplayer -af sub=100:4 -channels 5 media.avi</CODE></P>
<P>将增加一个剪除频率为100Hz的副低音声道到输出声道4。</P>
<H5><A NAME="af_surround">2.3.2.3.9 环绕音效解码</A></H5>
<P>矩阵编码的环绕音效可以通过<CODE>surround</CODE>滤镜解码。杜比环绕就是矩阵编码格式的一个例子。很多两声道的音频
实际上包含了矩阵编码。为了使用这个特性你需要一个至少支持4声道的声卡。这个滤镜有1个参数</P>
<DL>
<DT><CODE>d &lt;0-1000&gt;</CODE></DT>
<DD>可选的<CODE>0</CODE><CODE>1000</CODE>之间的浮点数用来设定后部扬声器的延迟时间以ms为单位。这个延迟应该
这样设定如果d1是从听众位置到前扬声器的距离而d2是从听众位置到后扬声器的距离如果d1 &lt;= d2那么延迟<CODE>d</CODE>
应该设置为15ms如果d1 &gt; d2那么设置为15 + 5*(d1-d2)<CODE>d</CODE>的默认值是20ms。</DD>
</DL>
<P>示例:<BR>
&nbsp;&nbsp;<CODE>mplayer -af surround=15 -channels 4 media.avi</CODE></P>
<P>将使用环绕音效解码并给后部扬声器增加15ms的延迟。</P>
<H2><STRONG>注意:音频插件已经被音频滤镜取代,很快会被删去。</STRONG></H2>
<H4><A NAME="插件s">2.3.2.4 音频滤镜(已过时)</A></H4>
<P>MPlayer支持音频插件。音频插件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>将让声音先通过resample插件然后再经过format插件。</P>
<P>插件也有改变他们行为的开关。这些开关在下面将详细地解释。如果开关被省略,插件将按照默认设置运行。
这是一个关于如何组合使用指定参数的插件的例子:</P>
@ -136,15 +467,15 @@ ARTS
<P>&nbsp;&nbsp;<CODE>mplayer media.avi -aop
list=resample,format:fout=44100:format=0x8</CODE></P>
<P>这将会将重新采样插件的输出频率设为44100Hz格式化插件的输出格式设置为AFMT-U8。</P>
<P>这将会将resample插件的输出频率设为44100Hzformat插件的输出格式设置为AFMT-U8。</P>
<P>目前音频插件不能用于<B>MEncoder</B></P>
<P>目前音频插件不能用于MEncoder。</P>
<H5><A NAME="resample">2.3.2.2.1 升/降采样率</A></H5>
<H5><A NAME="resample">2.3.2.4.1 升/降采样率</A></H5>
<P><B>MPlayer</B>完全支持对声音升/降采样率。如果你使用固定采样率的声卡或者如果你被只兼容
最大44.1kHz的老声卡郁闷时可以使用这个插件。你硬件的限制是不能自动检测的,因此你必须明确地规定采样频率。
<P>MPlayer完全支持对声音升/降采样率。如果你使用固定采样率的声卡或者如果你被只兼容
最大44.1kHz的老声卡郁闷时可以使用这个插件。是否使用这个插件是<B>自动检测的</B>
这个插件有一个参数:<CODE>fout</CODE>用于设置期望的输出的采样率。默认是48kHz单位是&lt;Hz&gt;</P>
<P>用法:<BR>
@ -154,17 +485,17 @@ ARTS
<P>注意输出频率不能从默认值升高。因为升高会导致音频和视频流播放缓慢而且音频也会扭曲。</P>
<H5><A NAME="surround_decoding">2.3.2.2.2 环绕音效解码</A></H5>
<H5><A NAME="surround_decoding">2.3.2.4.2 环绕音效解码</A></H5>
<P><B>MPlayer</B>有一个能解码矩阵编码的环绕音效的音频插件。杜比环绕是矩阵编码格式的一个例子。
<P>MPlayer有一个能解码矩阵编码的环绕音效的音频插件。杜比环绕是矩阵编码格式的一个例子。
大多数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>
<H5><A NAME="format">2.3.2.4.3 采样格式转换</A></H5>
<P>如果你的声卡驱动不支持带符号的16位<CODE>int</CODE>数据类型,这个插件能被用来把它转换为一个你的
声卡能理解的格式。它有一个参数,<CODE>format</CODE>,可以设置为你在<CODE>libao2/afmt.h</CODE>中找到的数字。
这个插件几乎很少会用到而且是面向高级用户的。记住这个插件仅仅改变采样格式而不改变采样频率或者声道数。</P>
@ -174,26 +505,26 @@ ARTS
list=format:format=&lt;required output format&gt;</CODE></P>
<H5><A NAME="delay">2.3.2.2.4 延迟</A></H5>
<H5><A NAME="delay">2.3.2.4.4 延迟</A></H5>
<P>这个插件将声音延迟,被计划当做如何开发新的插件的例子。它不能用于任何以用户观点来说有用的东西,
在这里被提到只是为了完整的缘故。不要使用这个插件除非你是开发者。</P>
<H5><A NAME="volume">2.3.2.2.5 软件音量控制</A></H5>
<H5><A NAME="volume">2.3.2.4.5 软件音量控制</A></H5>
<P>这个插件是音量控制功能的软件替代,用于哪些使用蹩脚的混音设备的机器。如果你想要改变<B>MPlayer</B>
<P>这个插件是音量控制功能的软件替代用于哪些使用蹩脚的混音设备的机器。如果你想要改变MPlayer
的输出音量而不改变混音器中PCM音量的设置也可以使用这个插件。它有一个<CODE>volume</CODE>参数初始的音量水平。
初始音量水平能取0到255之间的值默认值是101相当于放大0分贝。谨慎使用这个插件因为它会降低声音的信噪比。
在大多数情况下最好是把PCM音量设为最大是放弃这个插件并且通过混音器的主音量控制来控制你的扬声器输出水平。
如果有连接到计算机的外部功放(这几乎是普遍情况),噪音水平能通过调整在主音量级别和功放上的旋钮而最大限度的减少,
直到去除嘶嘶的背景噪音。</P>
<P>Usage:<BR>
<P>用法:<BR>
&nbsp;&nbsp;<CODE>mplayer media.avi -aop
list=volume:volume=&lt;0-255&gt;</CODE></P>
<P>这插件也有压缩器或称为“软控制”的功能。
<P>这插件也有压缩器或称为“软修饰”的功能。
压缩用于声音的动态范围十分高或者如果扬声器的动态范围十分低的的情况。注意这个特性将造成扭曲并且应该
是最后一种被考虑的手段。</P>
@ -202,11 +533,11 @@ ARTS
list=volume:softclip</CODE></P>
<H5><A NAME="extrastereo">2.3.2.2.6 加强立体声</A></H5>
<H5><A NAME="extrastereo">2.3.2.4.6 加强立体声</A></H5>
<P>这个插件(线性地)增加左右声道的差别(像XMMS的extrastereo插件一样)使回放产生某种“现场”效果。</P>
<P>Usage:<BR>
<P>用法:<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>
@ -214,17 +545,12 @@ ARTS
如果你把它设置到1.0,声音不变,如果你把它设置为-1.0,左右声道将被交换。</P>
<H5><A NAME="normalizer">2.3.2.2.7 音量正则化</A></H5>
<H5><A NAME="normalizer">2.3.2.4.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

@ -2,20 +2,20 @@
<HTML>
<HEAD>
<TITLE>开发者的痛楚 -- MPlayer -- Linux的电影播放器</TITLE>
<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">
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=gbk">
</HEAD>
<BODY>
<H1>附录 E -- 开发者的痛楚</H1>
<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>
<H2><A NAME="gcc">E.1 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在他的发行版中包括这个版本是因为
@ -23,16 +23,15 @@
在他们的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>
开始遇到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>。MPlayer同样经受这些时有时无的只要换个不同版本的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会显示一个警告
@ -43,19 +42,19 @@ Intel
标记。记住你要自己负责而且<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>
3.0.4的包。你也能用<A HREF="ftp://people.redhat.com/jakub/gcc/3.2-10/">gcc-3.2-10的包</A>(非官方的,但是工作地不错)和你能把他们跟你已经有的2.96
装在一起。MPlayer检测到它并用3.2-10代替2.96。如果你不想要或者无法使用二进制包,下面教你怎么从源代码编译最新的GCC</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><A HREF="http://gcc.gnu.org/mirrors.html">GCC镜像页</A>网页并下载<CODE>gcc-core-XXX.tar.gz</CODE><CODE>XXX</CODE>是版本号。里面包括了完整的C编译器程序,
对MPlayer是足够了。如果你也想要C++Java或其它一些GCC的高级特性<CODE>gcc-XXX.tar.gz</CODE>可能更适合你。</LI>
<LI>用下列命令解开文档<BR>
<CODE>tar -xvzf gcc-core-3.1.tar.gz</CODE></LI>
<CODE>tar -xvzf gcc-core-XXX.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>
../gcc-XXX/configure</CODE></LI>
<LI>在编译目录中运行下列命令来编译GCC<BR>
<CODE>做依靠自己力量</CODE></LI>
<LI>现在你可以运行下列命令安装GCC(以root身份)<BR>
@ -63,32 +62,34 @@ Intel
</OL>
<H2><A NAME="binary">二进制发行版</A></H2>
<H2><A NAME="binary">E.2 二进制发行版</A></H2>
<P>这以前是第二大的问题从0.90-pre1之后已经解决。<B>MPlayer</B>以前包含来自OpenDivX工程的源代码那是不能以二进制形式再分发的。这个代码已经被去掉,
现在如果你觉得合适的话欢迎你制作二进制的包。</P>
<P>MPlayer以前包含来自OpenDivX工程的源代码那是不能以二进制形式再分发的。这个代码已经在0.90-pre1中去掉了剩下的来自OpenDivX源码
<CODE>divx_vbr.c</CODE>在0.90-pre9的时候由它的作者按GPL协议发布。现在如果你觉得合适的话欢迎你制作二进制的包。</P>
<P>二进制分发的另一个阻碍是针对CPU结构的编译优化。 <B>MPlayer</B>运行时CPU检测(在编译时指定<CODE>--enable-runtime-cpudetection</CODE>)。
<P>二进制分发的另一个阻碍是针对CPU结构的编译优化。 MPlayer运行时CPU检测(在编译时指定<CODE>--enable-runtime-cpudetection</CODE>)。
它默认是禁用的因为它意味着小小的速度牺牲现在可以创建在能在Intel CPU家族的不同的成员上运行的二进制文件了。</P>
<H2><A NAME="nvidia">nVidia</A></H2>
<H2><A NAME="nvidia">E.3 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芯片造成的
<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>
<H2><A NAME="barr">E.4 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>中他继续扇风点火。富有讽刺意味的是在那篇文章结束时他引用的
<P>Joe Barr因为写了一篇一点都不讨人喜欢的<A HREF="http://www.linuxworld.com/site-stories/2001/1214.mplayer.html">MPlayer评论</A>而变得
声名狼籍。他发现MPlayer难以安装但是然而他由不太喜欢<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>
@ -104,8 +105,8 @@ nVidia
他的反应是说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>
<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>

File diff suppressed because it is too large Load Diff