Mercurial > mplayer.hg
changeset 21652:7b900b866126
remove outdated html docs, Chinese translation
author | kraymer |
---|---|
date | Mon, 18 Dec 2006 15:24:55 +0000 |
parents | 54aef84a6b50 |
children | 04cea12cd324 |
files | DOCS/zh/bugreports.html DOCS/zh/cd-dvd.html DOCS/zh/codecs.html DOCS/zh/documentation.html DOCS/zh/encoding.html DOCS/zh/faq.html DOCS/zh/formats.html DOCS/zh/skin.html DOCS/zh/sound.html DOCS/zh/users_against_developers.html DOCS/zh/video.html |
diffstat | 11 files changed, 0 insertions(+), 6066 deletions(-) [+] |
line wrap: on
line diff
--- a/DOCS/zh/bugreports.html Mon Dec 18 15:15:21 2006 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,235 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> -<HTML> - -<HEAD> - <TITLE>Bug报告 -- MPlayer -- Linux下的电影播放器</TITLE> - <LINK REL="stylesheet" TYPE="text/css" HREF="../default.css"> - <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=gbk"> -</HEAD> - -<BODY> - - -<H1><A NAME="appendix_b">附录B -- 如何报告bug</A></H1> - -<P>好的bug报告对任何软件项目的发展都是十分有价值的贡献。但是就象写好的软件一样,好的问题报告也需要一些工作。请明白大多数开发者忙的要死并且会收到 -多的变态的电子邮件。所以尽管你的反馈对改进MPlayer至关重要而且非常值得赞赏,希望你理解你必须提供我们需要的<B>所有</B>信息并且严格遵循这个 -文件中的指导进行。</P> - - -<H2><A NAME="fix">B.1 如何修复bug</A></H2> - -<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><A NAME="report">B.2 如何报告bug</A></H2> - -<P>首先,请先尝试MPlayer最新的CVS版本,因为你的bug在那里可能已经被修正了。发展过程进展的相当快,官方发行版的大部分问题在几天甚至几小时之内 -就被报告了,因此请<B>仅仅使用CVS</B>来报告bug。这包括MPlayer的二进制安装包,请不要报告MPlayer的各种RPM变种和Debian安装包的bug。CVS指 -令能在<A HREF="http://www.mplayerhq.hu/dload.html">这个页面</A>的底部或者README中找到。如果这样做没有改进那么请查阅<A - HREF="documentation.html#known_bugs">已知的bug</A>和文件的其他部分。如果你的问题我们没有提到或者按照我们提供的步骤没有解决,那么请报告bug。</P> - -<P>请不要私下单独向开发者报告bug。这是一项社区工作所以可能有若干人都对它感兴趣。有时其它用户已经遇到过你的麻烦并且知道如何绕过这个问题 -即使它是MPlayer代码中的bug。</P> - -<P>请尽可能详细的描述你的问题。做一些小的侦探工作来确定问题发生的情况的范围。这个bug只在一定的情况中出现吗?或是具体针对特定文件或者文件类型吗? -它是针对于唯一的编码格式还是独立于编码格式的?你能用所有的输出驱动重现它吗?你提供的信息越多我们的修复你的问题的机会就越大。别忘了也要包括下面所要求的 -有价值的信息,否则我们将无法正确分析你的问题。</P> - -<P>有篇文采飞扬的关于如何在公共论坛上提问的极好的指导是<A HREF="http://www.catb.org/~esr/">Eric S. Raymond</A>写的<A -HREF="http://www.catb.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> - - -<H2><A NAME="where">B.3 向哪里报告错误?</A></H2> - -<P>订阅mplayer-users邮件列表:<BR> - <A HREF="http://mplayerhq.hu/mailman/listinfo/mplayer-users">http://mplayerhq.hu/mailman/listinfo/mplayer-users</A><BR> - 同时,把你的bug发送到:<BR> - <A HREF="mailto:mplayer-users@mplayerhq.hu">mplayer-users@mplayerhq.hu</A></P> - -<P>这个列表使用的语言是<B>英语</B>。请遵循标准的<A HREF="http://www.ietf.org/rfc/rfc1855.txt">网络礼节指导</A>并且<B>不要发送HTML邮件</B> -到任何我们的邮件列表。你将被忽略或者封掉。如果你不知道什么是HTML邮件,以及它为什么邪恶,看看这篇<A -HREF="http://expita.com/nomime.html">写的不错的文档</A>。它解释了所有细节和关掉HTML的指令。也请注意到我们不会个别地CC(抄送)给人因此 -最好通过订阅来保证你会收到答案。</P> - - -<H2><A NAME="what">B.4 报告什么?</A></H2> - -<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发行版或者操作系统,比如: - <UL> - <LI>Red Hat7.1</LI> - <LI>Slackware 7.0 + devel packs from 7.1 ...</LI> - </UL> - </LI> - <LI>内核版本:<BR> - <CODE>uname -a</CODE></LI> - <LI>libc版本:<BR> - <CODE>ls -l /lib/libc[.-]*</CODE></LI> - <LI>X版本:<BR> - <CODE>X -version</CODE></LI> - <LI>gcc和ld版本:<BR> - <CODE>gcc -v<BR> - ld -v </CODE></LI> - <LI>binutils版本:<BR> - <CODE>as --version</CODE></LI> - <LI>如果是全屏模式的问题: - <UL> - <LI>窗口管理器类型和版本</LI> - </UL> - </LI> - <LI>如果是关于XVIDIX的问题: - <UL> - <LI>X色深:<BR> - <CODE>xdpyinfo | grep "depth of root"</CODE></LI> - </UL> - </LI> - <LI>如果是buggy的GUI: - <UL> - <LI>GTK版本</LI> - <LI>GLIB版本</LI> - <LI>libpng版本</LI> - <LI>bug发生时GUI的状态</LI> - </UL> - </LI> -</UL> - - -<H3><A NAME="hardware">B.4.2 硬件和驱动</A></H3> - -<UL> - <LI>CPU信息(仅用于Linux):<BR> - <CODE>cat /proc/cpuinfo</CODE></LI> - <LI>显卡制造厂和型号,例如:。 - <UL> - <LI>ASUS V3800U chip: nVidia TNT2 Ultra pro 32MB SDRAM</LI> - <LI>Matrox G400 DH 32MB SGRAM</LI> - </UL> - </LI> - <LI>显卡驱动类型 & 版本,e.g:。 - <UL> - <LI>X built-in driver</LI> - <LI>nVidia 0.9.623</LI> - <LI>Utah-GLX CVS 2001-02-17</LI> - <LI>DRI from X 4.0.3</LI> - </UL> - </LI> - <LI>声卡类型 & 驱动,例如:。 - <UL> - <LI>Creative SBLive! Gold with OSS driver from oss.creative.com</LI> - <LI>Creative SB16 with kernel OSS drivers</LI> - <LI>GUS PnP with ALSA OSS emulation</LI> - </UL> - </LI> - <LI>如果不放心的话对linux系统可以再附上<CODE>lspci -vv</CODE>的输出。</LI> -</UL> - - -<H3><A NAME="configure">B.4.3 配置问题</A></H3> - -<P>如果你在运行<CODE>./configure</CODE>时有问题,或者什么东西的自动检测失败,检查<CODE>configure.log</CODE>。你可能会在那里找到 -答案,比如你的机器上存在同一个库的多个版本混合存在的问题。或者你忘记安装开发包(那些-dev后缀的)。如果你认为有bug,在你的bug报告 -中附上<CODE>configure.log</CODE>。</P> - - -<H3><A NAME="compilation">B.4.4 编译问题</A></H3> - -请附上下列文件: - -<UL> - <LI>config.h</LI> - <LI>config.mak</LI> -</UL> - -如果编译失败发生在下面的目录,附上这些文件: - -<UL> - <LI><CODE>Gui/config.mak</CODE></LI> - <LI><CODE>libvo/config.mak</CODE></LI> - <LI><CODE>libao2/config.mak</CODE></LI> -</UL> - -<H3><A NAME="playback">B.4.5 播放的问题</A></H3> - -<P>请包括MPlayer的冗长水平为1的输出,但是记住当你把它粘贴到你的邮件中时<B>不要删减输出内容</B>。开发者们需要所有的信息来正确的分析问题。 -你可以像这样把输出导入到一个文件中:</P> - -<P><CODE> mplayer -v [options] [filename] > mplayer.log 2>&1</CODE></P> - -<P>如果你的问题是具体对于一个或更多的文件的,那么请上传有问题的文件:</P> - -<P> <A HREF="ftp://mplayerhq.hu/MPlayer/incoming/">ftp://mplayerhq.hu/MPlayer/incoming/</A></P> - -<P>再上传一个小的同样文件名的文本文件加上.txt的扩展名。在其中描述对于这个特别的文件你遇到的问题加上你的电子邮件地址还有MPlayer冗长水平为1的输出。 -通常文件的前1-5MB足以重现问题,但为了以防万一我们要求你运行:</P> - -<P><CODE> dd if=yourfile of=smallfile bs=1024k count=5</CODE></P> - -<P>它将截取<STRONG>'your-file'</STRONG>的头5兆并把他们写到<STRONG>'small-file'</STRONG>里。然后,测试一下这个小文件,如果bug仍然存在那么你的样本 -对我们来说是足够了。请<STRONG>永远不要</STRONG>通过邮件的发送这样文件!把它上传,然后只发送FTP-server上的文件的路径与文件名。如果文件在网上可以获得, -那么发送<STRONG>准确的</STRONG>URL就足够了。</P> - - -<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> - -开启调试代码重新编译MPlayer: - -<P><CODE> ./configure --enable-debug=3<BR> - make</CODE></P> - -然后用gdb运行MPlayer: - -<P><CODE> gdb mplayer</CODE></P> - -现在你在gdb内。输入: - -<P><CODE> run -v [options-to-mplayer] filename</code></P> - -然后再现你的崩溃。一旦你成功了,gdb将回到命令行,你需要输入 - -<P><CODE> bt<BR> - disass $pc-32 $pc+32<BR> - info all-registers</CODE></P> - -<H4><A NAME="core">B.4.6.2 如何从一个core dump中提取出有意义的信息</A></H4> - -<P>请建立下面的命令文件:</P> - -<P><CODE>bt<BR> - disass $pc-32 $pc+32<BR> - info all-registers</CODE></P> - -<P>然后直接在你的命令行下执行下列命令:</P> - -<P> <CODE>gdb mplayer --core=core -batch --command=command_file > mplayer.bug</CODE></P> - - -<H2><A NAME="advusers">B.5 我知道我在干什么...</A></H2> - -<P>如果你按照上述步骤建立了一个正确的bug报告而且你充满信心它是MPlayer中的bug,而不是因为编译错误或者文件损坏的问题,你已经阅读了文档并且 -找不到解决方案,此外你的声卡驱动正常,那么你可能想要订阅mplayer-advusers列表并把你的bug报告发到那里以便得到更快更好的答案。<BR><BR> - 请听从我们的劝告,如果你在那里问新手级的问题或者问用户手册中已经回答过的问题,你将被忽略或者被骂而不会得到答案。<BR> - 因此,不要骂我们并且仅仅当你确实知道你在干什么并且觉得你已经是高级MPlayer用户或者是开发者再订阅 -advusers。如果你符合这些标准找出如何 -订阅应该不难...</P> - -</BODY> -</HTML>
--- a/DOCS/zh/cd-dvd.html Mon Dec 18 15:15:21 2006 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,187 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> -<HTML> - -<HEAD> - <TITLE>CD,DVD,VCD -- MPlayer -- Linux下的电影播放器</TITLE> - <LINK REL="stylesheet" TYPE="text/css" HREF="../default.css"> - <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=gbk"> -</HEAD> - -<BODY> - - -<H2><A NAME="drives">4.1 CD/DVD光驱</A></H2> - -<P>Linux文件摘录:</P> - -<P>现代的CD-ROM光驱能达到十分高的头速度,还有一些CD-ROM光驱能运行在被正常情况低的速度上。你考虑改变CD-ROM光驱的速度可能有若干原因:</P> - -<UL> - <LI>在告诉情况下发生读取错误,尤其对于压制不好的CD-ROM。降低速度能防止这种情况下的数据丢失。</LI> - <LI>很多CD-ROM光驱的声音吵的讨厌,低的速度可以降低噪音。</LI> -</UL> - -<P>你能使用hdparm或一个叫setcd的程序来降低光驱的速度。它是这样工作的:</P> - -<P> <CODE>hdparm -E [speed] [cdrom device]</CODE></P> - -<P> <CODE>setcd -x [speed] [cdrom device]</CODE></P> - -<P>你也可以试试</P> - -<P> <CODE>echo current_speed:4 > /proc/ide/[cdrom device]/settings</CODE></P> - -<P>但这样你需要root权限。下面这个命令也有用处:</P> - -<P> <CODE>echo file_readahead:2000000 > /proc/ide/[cdrom device]/settings</CODE></P> - -<P>这把文件预读取设置为2MB,对于刮伤的CD-ROM有好处。如果你把这个值设置的太大,你的光驱会不停的转, -显著的降低效率。建议你同时也用hdparm调整你的CD-ROM光驱:</P> - -<P> <CODE>hdparm -d1 -a8 -u1 (cdrom device)</CODE></P> - -<P>这开启DMA存取,预读取,和IRQ unmasking(细节解释请阅读hdparm的man page)。</P> - -<P>为了优化你的CD-ROM请参考"<CODE>/proc/ide/[cdrom device]/settings</CODE>"。</P> - -<P>SCSI驱动器没有一个统一的设置参数的方法(你知道这样一种方法?告诉我们!) 有一种工具可以用于<A -HREF="http://das.ist.org/~georg/">Plextor的SCSI驱动器</A>。</P> - -<P>FreeBSD:</P> - -<P> Speed: <CODE>cdcontrol [-f device] speed [speed]</CODE></P> -<P> DMA: <CODE>sysctl hw.ata.atapi_dma=1</CODE></P> - -<H2><A NAME="dvd">4.2 DVD播放</A></H2> - -<P>可用选项的完整列表参见man page。播放标准的数字多功能碟片(DVD)的语法如下:</P> - -<P><CODE>mplayer dvd://<track> [-dvd-device <device>]</CODE></P> - -<P>示例:<CODE>mplayer dvd://1 -dvd-device /dev/hdc</CODE></P> - -<P>默认的DVD设备是<CODE>/dev/dvd</CODE>。如果你的设置不同,作一个符号链接,或者在命令行中用<CODE>-dvd-device</CODE>选项 -指定一个正确的设备。</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>的补丁。 -这带来极大的速度提升,因为不用在每次播放之前都破解密钥。</P> - -<P>MPlayer也能使用系统的<CODE>libdvdread</CODE>和<CODE>libdvdcss</CODE>库,但这种解决方法<B>不</B>推荐,因为它会导致bug,库的不兼容,并且降低速度。</P> - -<H4>DVD导航菜单支持(dvdnav)</H4> - -<P>通过<CODE>dvdnav</CODE>支持DVD导航菜单的工作已经开始,但它可能永远不会完成而且现在无人维护。谁知道,它可能还能编译过去。</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 key,MPlayer尝试使用播放器密钥来对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> - - - -<H2><A NAME="vcd">4.3 VCD回放</A></H2> - -<P>可用选项的完整列表请阅读man page。播放一个标准的Video CD(VCD)的语法如下:</P> - -<P>播放标准的Video CDs:</P> - -<P><CODE>mplayer vcd://<track> [-cdrom-device <device>]</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> - -<P>此外你还可以使用<A HREF="http://140.132.1.204/OS/Linux/packages/X/viewers/readvcd/">readvcd</A>提取VCD中的数据,并用 -MPlayer播放获得的文件。</P> - - -<H4>VCD结构</H4> - -<P>VCD碟片由一个或多个音轨组成:</P> - -<UL> - <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>
--- a/DOCS/zh/codecs.html Mon Dec 18 15:15:21 2006 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,433 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> -<HTML> - -<HEAD> - <TITLE>编解码器 -- MPlayer -- Linux下的电影播放器</TITLE> - <LINK REL="stylesheet" TYPE="text/css" HREF="../default.css"> - <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=gbk"> -</HEAD> - -<BODY> - - -<H2><A NAME="codecs">2.2 支持的编解码器</A></H2> - - -<H3><A NAME="video_codecs">2.2.1 视频编解码器</A></H3> - -<P>检查<A HREF="http://www.mplayerhq.hu/DOCS/codecs-status.html">codec status table</A>来获得完整的,每日更新的 -列表。大部分的编解码器可以从我们的主页下载,在我们的<A -HREF="http://www.mplayerhq.hu/MPlayer/releases/codecs/">编解码器页</A>可以找到他们。</P> - - -<P>所有之中最重要的:</P> -<UL> - <LI><B>MPEG1</B>(<B>VCD</B>)和<B>MPEG2</B>(<B>DVD</B>)视频</LI> - <LI><B>DivX ;-)</B>, <B>OpenDivX</B>, <B>DivX4</B>, <B> - DivX5</B>, <B>M$ MPEG4</B> v1, v2和其它MPEG4格式的变种的本地解码器。</LI> - <LI><B>Windows Media Video 7/8</B>(<B>WMV1/WMV2</B>)的本地解码器,以 -及<B>Windows Media Video 9</B>(<B>WMV3</B>)的Win32 DLL解码,.wmv文件使用这两种格式</LI> - <LI>本地的<B>Sorenson 1 (SVQ1)</B>解码器r</LI> - <LI>Win32/QT的<B>Sorenson 3 (SVQ3)</B>解码器</LI> - <LI><B>3ivx</B> v1, v2解码器</LI> - <LI>Cinepak和<B>Intel Indeo</B>编解码器(3.1, 3.2, 4.1, 5.0)</LI> - <LI><B>MJPEG</B>, AVID, VCR2, ASV2和其它硬件格式</LI> - <LI>VIVO 1.0, 2.0, I263和其它<B>h263</B>(+)格式的变种</LI> - <LI>FLI/FLC</LI> - <LI>Libavcodec的<B>RealVideo 1.0</B>解码器,和使用RealPlayer库的<B>RealVideo 2.0</B>, <B>3.0</B>和<B>4.0</B>解码器</LI> - <LI>HuffYUV的本地的解码器</LI> - <LI>各种各样的老的简单的类似RLE的格式</LI> -</UL> - -<P>如果你有一个Win32解码器没有列出来而且目前没有被支持,请读取<A HREF="#importing">解码器导入HOWTO</A>并且帮助我们添加对它的支持。</P> - - -<H4><A NAME="divx">2.2.1.1 DivX4与DivX5</A></H4> - -<P>这部分包含关于<A HREF="http://www.projectmayo.com">Mayo工程</A>的DivX4和DivX5编解码器的信息,他们的第一个可用的alpha版本是 -OpenDivX 4.0 alpha 47和48。 对它们的支持以前包括在MPlayer中,并且是默认编译的。 我们也使用其后处理代码来有选择地提高MPEG1/2电影的视觉质量。 -现在我们使用我们自己的,对于所有文件类型。</P> - -<P>这个解码器的新一代产品称为DivX4,它甚至能解码以声名狼籍的DivX编解码器制作的电影! 此外,它比本地的Win32 DivX DLL快得多比但是比libavcodec慢。 -因此,<B>不鼓励</B>把它当解码器用。 然而,它对编码有用。 这个编解码器的缺点之一是它目前不开放源代码。</P> - -<P>DivX4Linux有两种工作方式:</P> - -<DL> - <DT><CODE>-vc odivx</CODE></DT> - <DD>以OpenDivX方式使用解码器。在这种情况下,它在自己的缓冲中产生YV12图象,然后由MPlayer通过libvo做色彩空间转换。(<B>推荐,快!</B>)</DD> - - <DT><CODE>-vc divx4</CODE></DT> - <DD>使用解码器的色彩空间转换。以这种方式你也能使用YUY2与UYVY。(<B>很慢</B>)</DD> -</DL> - -<P><CODE>-vc odivx</CODE>方式通常更快,因为它以YV12(planar YUV 4:2:0)格式传输图象数据,这样占用少的多的总线带宽。对于packed YUV方式 -(YUY2,UYVY)使用<CODE>-vc divx4</CODE>方式。对于RGB模式两者速度是相同的,差别最多是你当前的色彩深度。</P> - -<P><B>注意:</B>如果你的<CODE>-vo</CODE>驱动支持直接渲染,那么<CODE>-vc divx4</CODE>可以是很快甚至最快的解决方案。</P> - -<P>Divx4/5的二进制编解码器库可以从<A HREF="http://avifile.sourceforge.net">avifile</A>或者<A -HREF="http://www.divx.com">divx.com</A>下载,解压之后,以root权限运行<CODE>./install.sh</CODE>, -另外别忘了把<CODE>/usr/local/lib</CODE>添加到你的<CODE>/etc/ld.so.conf</CODE>中然后运行<CODE>ldconfig</CODE>。</P> - -<P>想得到老的OpenDivx的核心库的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 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 libdivxencore.so /usr/local/lib/libdivxencore.so.0 - cp ../../src/encore.h /usr/local/include - </PRE> - </LI> -</OL> - -<P>如果正常安装了DivX4/DivX5,MPlayer会自动检测到它,只要正常编译就可以。如果没有检测到,你肯定没有正确安装或者配置它。</P> -<H4><A NAME="libavcodec">2.2.1.2 FFmpeg DivX/libavcodec</A></H4> - -<P><A HREF="http://ffmpeg.sourceforge.net">FFmpeg</A>包括一组<B>开放源码的</B>解码器包,能够以兼容方式解码以 -H263/MJPEG/RV10/DivX3/DivX4/DivX5/MP41/MP42/WMV1/WMV2/HuffYUV编码格式编码的视频流。它不仅能对其中一些进行编码, -同时提供比Win32解码器或DivX.com的DivX4/5库更高的速度!</P> - -<P>它包含很多不错的解码器,尤其重要的是MPEG4的几个变种:DivX 3,DivX 4,DivX 5,Windows Media Video 7(WMV1)。另外一个有趣的东西是WMA解码器。</P> - -<P>如果你使用MPlayer发行版,在你的源码包里就有libavcodec,正常编译即可。如果你使用CVS的MPlayer -那么你必须从FFmpeg的CVS树中提取libavcodec因为FFmpeg 0.4.5<B>不能</B>用于MPlayer。你应该这样来完成:</P> - -<OL> - <LI><CODE>cvs -d:pserver:anonymous@cvs.ffmpeg.sourceforge.net:/cvsroot/ffmpeg login</CODE></LI> - <LI><CODE>cvs -d:pserver:anonymous@cvs.ffmpeg.sourceforge.net:/cvsroot/ffmpeg co ffmpeg</CODE></LI> - <LI>把<CODE>libavcodec</CODE>目录从FFmpeg的源代码里移到MPlayer的CVS树的根目录下。看起来应该象这样: - <P> <CODE>main/libavcodec</CODE></P> - 符号链接是<B>不</B>够的,你必须复制或移动它!</LI> - <LI>编译。Configure应该在编译之前发现可能的问题。</LI> -</OL> - -<P>用FFmpeg和我的Matrox G400,我甚至能在我的K6/2 500上无掉帧的观看最高分辨率的DivX电影。</P> - - -<H4><A NAME="xanim">2.2.1.3 XAnim解码器</A></H4> - -<H4>前言</H4> -<P> -XAnim的二进制的解码器包里面有一份关于合法捆绑软件许可的声明,除其它限制之外,禁止用户用除XAnim外的任何程序使用其解码器。然而, -XAnim的作者到目前为止没有就解码器有关的问题对着任何人采取法律行动。 -</P> - -<H4>安装和使用</H4> - -<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><B>或者</B>从我们的<A - HREF="http://www.mplayerhq.hu/MPlayer/releases/codecs/">编解码器页</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属于视频编解码器族<CODE>xanim</CODE>,所以你可能需要使用<CODE>-vfm xanim</CODE>。</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>MPlayer能播放Vivo(1.0和2.0)视频。对于1.0的文件最适合的解码器是FFmpeg的H263解码器,你可以用<CODE>-vc ffh263</CODE>选项来 -使用它。对于2.0个文件,使用<CODE>-vc vivo</CODE>命令来调用Win32 DLL。如果你没有添加命令行选项MPlayer将自动选择最好的解码器。</P> - - -<H4><A NAME="mpeg">2.2.1.5 MPEG 1/2视频</A></H4> - -<P>MPEG1和MPEG2用本地的多平台的<B>libmpeg2</B>库解码,其源代码被包括在MPlayer中。对于buggy的MPEG 1/2视频文件我们 -通过截获<CODE>Signal 11 (Segmentation fault)</CODE>,然后迅速再次初始化解码器,从失败的地方继续的方法来处理。这种 -恢复技术会带来无法估量的速度损失。</P> - - -<H4><A NAME="ms_video1">2.2.1.6 MS Video1</A></H4> - -<P>这是微软的又老又差的编码格式。过去它用<CODE>msvidc32.dll</CODE>的Win32解码器解码,现在我们有我们自己的开放源码的实现(由<A -HREF="mailto:melanson@pcisys.net">Mike Melanson</A>提供)。</P> - - -<H4><A NAME="cinepak">2.2.1.7 Cinepak CVID</A></H4> - -<P>MPlayer默认将使用自己的开源的,多平台的Cinepak解码器(由<A - HREF="mailto:timf@csse.monash.edu.au">Dr. Tim Ferguson</A>提供)。它支持YUV输出,所以只要硬件驱动允许它将使用硬件缩放。</P> - - -<H4><A NAME="realvideo">2.2.1.8 RealVideo</A></H4> - -MPlayer支持所有版本的RealVideo的解码: - -<UL> - <LI>RealVideo 1.0 (fourcc RV10) -- 编/解码由<B>libavcodec</B>支持</LI> - <LI>RealVideo 2.0,3.0,4.0(fourcc RV20,RV30,RV40) -- 解码由<B>RealPlayer库</B>支持</LI> -</UL> - -<P>推荐下载并安装RealPlayer8或者RealONE,因为MPlayer能使用他们的库来解码RealVideo 2.0或者RealVideo 3.0的视频文件。 -MPlayer的配置脚本应该会在一个完全安装的RealPlayer的标准位置找到它的库。如果它没找到,用<CODE>--with-reallibdir</CODE> -选项告诉configure到哪里去找。</P> - -<P><B>注意:</B>RealPlayer库目前<B>只能用于x86平台上的Linux,FreeBSD,NetBSD和Cygwin,和Alpha以 -及PowerPC(经过Linux/Alpha和Linux/PowerPC测试)平台。</B></P> - -<H4><A NAME="xvid">2.2.1.9 XviD</A></H4> - -<P><A HREF="http://www.xvid.org/"><B>XviD</B></A>OpenDivX编解码器的开发分支。故事发生在Mayo工程把OpenDivX变成封闭 -源码的DivX4的时候,那些从事于OpenDivX的非Mayo工程的人们感到愤怒,于是开始了XviD。所以两个项目有相同的起源。</P> - -<H4>优点</H4> - -<UL> - <LI>开放源码</LI> - <LI>它的API与DivX4相同,所以加入对它的支持很容易</LI> - <LI>支持2-pass编码</LI> - <LI>不错的编码质量,DivX4更快的速度(编译时你能针对你的机器优化它)</LI> -</UL> - -<H4>缺点</H4> - -<UL> - <LI>目前还不能正确的<B>解码</B>所有的DivX与DivX4文件(这不成问题因为<A - HREF="#libavcodec">libavcodec</A>能播放他们)</LI> - <LI>编译时你必须选择支持DivX4<B>或者</B>支持XviD</LI> - <LI>还在开发中</LI> -</UL> - -<H4>安装XVID CVS</H4> - -<P>XViD目前只能从CVS中得到。这是下载和安装的指令(你至少需要autoconf 2.50, automake和libtool):</P> - -<OL> - <LI><CODE>cvs -z3 -d:pserver:anonymous@cvs.xvid.org:/xvid login</CODE></LI> - <LI><CODE>cvs -z3 -d:pserver:anonymous@cvs.xvid.org:/xvid co xvidcore</CODE></LI> - <LI><CODE>cd xvidcore/build/generic</CODE></LI> - <LI><CODE>./bootstrap.sh</CODE></LI> - <LI><CODE>./configure</CODE><BR> - 你可以加上一些选项(查看<CODE>./configure --help</CODE>的输出).</LI> - <LI><CODE>make && make install</CODE></LI> - <LI>如果你设置了<CODE>--enable-divxcompat</CODE>,把<CODE>xvidcore/src/</CODE>里面 -的<CODE>divx4.h</CODE>头文件复制到<CODE>/usr/local/include/</CODE>。</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>是Sorenson Media开发的一个视频编解码器族,授权给苹果公司在它们的QuickTime播放器中使用。 -我们目前可以使用下列解码器解码所有的Sorenson视频文件:</P> - -<UL> - <LI>Sorenson 1(fourcc <I>SVQ1</I>) - 由<B>本地编解码器</B>解码。<BR> - 实际上有两个SVQ1的(几乎等价的)解码器:一个在MPlayer中,还有一个在libavcodec。你可以通过<CODE>-vc svq1</CODE> -和<CODE>-vc ffsvq1</CODE>选项调用它们中的任意一个。有些文件可能只能在其中一个上工作,而另一个就行,所以 -两个解码器都试试。这个解码器是由<A HREF="http://www.xinehq.de">xine</A>的作者编写(完成反向工程)的。</LI></LI> - <LI>Sorenson 3(fourcc <I>SVQ3</I>) - 由<B>Win32的QuickTime库</B>解码。</LI> -</UL> - -<H4>编译支持QUICKTIME库的SUPPORT</H4> - -<P><B>注意:</B>目前只支持32位的Intel平台。</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/codecs</CODE>)</LI> -</OL> - -<H3><A NAME="audio_codecs">2.2.2 音频编解码器 </A></H3> - -<P>所有音频编码中最重要的是:<BR></P> - -<UL> - <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>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>VIVO音频(g723,Vivo Siren)</LI> - <LI>alaw和ulaw,各种gsm,adpcm和pcm格式还有别的简单老的编解码器</LI> -</UL> - - -<H4><A NAME="software_ac3">2.2.2.1 软件AC3解码</A></H4> - -<P>这是含有AC3音频的文件的默认解码器。</P> - -<P>AC3解码器能为了2,4或者6个扬声器创建音频混合输出。当配置为6个扬声器时,这个解码器向声卡驱动提供所有AC3通道的单独的输出, -允许彻底的“环绕音效”感受而不需要使用需要hwac3解码器的外部AC3解码器。</P> - -<P>使用<CODE>-channels</CODE>选项可以选择输出的通道数。使用<CODE>-channels 2</CODE>获得立体声的降混频。 -对于4通道的降混频(左前,右前,左环绕和右环绕),使用<CODE>-channels 4</CODE>。在这种情况下,中心通道的任何输出将与前通道均匀混合。 -<CODE>-channels 6</CODE>将按照编码时的形式输出所有AC3通道-- 依次为左,右,左环绕,右环绕,中间和低频效果。</P> - -<P>默认的输出通道数是2。</P> - -<P>为使用超过2个通道的输出,你需要使用OSS,和一块能通过SNDCTL_DSP_CHANNELS ioctl支持适当输出通道数的声卡。合适的驱动的一个例子是 -2001年8月的或者更新的emu10k1(用于Soundblaster Live!卡)(ALSA的CVS应该也能工作)。</P> - - -<H4><A NAME="hardware_ac3">2.2.2.2 硬件AC3解码</A></H4> - -<P>你需要一个AC3兼容声卡,加上数字输出(SP/DIF)。声卡的驱动必须正确地支持AFMT_AC3格式(C-Media就支持)。把你的AC3解码器连接到SP/DIF输出, -然后使用<CODE>-ac hwac3</CODE>选项。这还在试验阶段但已经知道能用于C-Media声卡,使用ALSA驱动(但不能是OSS)的Soundblaster Live! -还有DXR3/Hollywood+ MPEG译码卡。</P> - - -<H4><A NAME="libmad">2.2.2.3 libmad支持</A></H4> - -<P><A HREF="http://mad.sourceforge.net">libmad</A>是多平台的MPEG音频解码库。它不能很好的处理损坏的文件,而且有时候搜索也有问题。</P> - -<P>为了支持它,加上<CODE>--enable-mad</CODE>配置选项编译。</P> - - -<H4><A NAME="vivo_audio">2.2.2.4 VIVO音频</A></H4> - -<P>VIVO文件的使用的音频编码取决于它是VIVO/1.0还是VIVO/2.0。VIVO/1.0文件使用<B>g.723</B>音频,而VIVO/2.0文件使用<B>Vivo Siren</B>音频。 -这两种音频现在都支持。</P> - - -<H4><A NAME="realaudio">2.2.2.5 RealAudio</A></H4> - -MPlayer支持解码几乎所有版本的RealAudio: - -<UL> - <LI>RealAudio DNET -- 解码由<B>liba52</B>支持</LI> - <LI>RealAudioCook/Sipro -- 解码由<B>RealPlayer库</B>支持</LI> - <LI>RealAudio atrc -- 解码尚未支持</LI> -</UL> - -<P>至于如何安装RealPlayer库,参见<A HREF="formats.html#real">RealMedia文件格式</A>部分。</P> - -<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> - -<H4><A NAME="aac">2.2.2.8 AAC编解码器</A></H4> - -<P>AAC(Advanced Audio Coding)是MOV和MP4文件有时使用的编码格式,<A -HREF="http://www.audiocoding.com/">AudioCoding.com</A>有一个叫FAAD的开放源代码的解码器提供下载,你可以 -在他们的<A HREF="http://www.audiocoding.com/download.php">下载页</A>找到第二代解码器FAAD2,不幸的 -是FAAD2 1.1在Linux下面无法编译,所以你必须使用CVS版本,这样做:</P> - -<OL> - <LI>cvs -d:pserver:anonymous@cvs.audiocoding.com:/cvsroot/faac login</LI> - <LI>cvs -z3 -d:pserver:anonymous@cvs.audiocoding.com:/cvsroot/faac co faad2</LI> - <LI>cd faad2/</LI> - <LI>chmod +x bootstrap</LI> - <LI>./bootstrap</LI> - <LI>./configure</LI> - <LI>make</LI> - <LI>make install</LI> -</OL> - -<P>audiocoding.com不提供二进制版本,但你可以用apt-get从<A -HREF="http://marillat.free.fr/">Christian Marillat的主页</A>下载Debian的安装包或者从<A -HREF="http://plf.zarb.org/">P.L.F</A>下载Mandrake的RPM。</P> - - - -<H3><A NAME="importing">2.2.3 Win32解码器导入HOWTO</A></H3> - - -<H4><A NAME="importing_vfw">2.2.3.1 VFW编解码器</A></H4> - -<P>VFW(Video for Windows)是Windows的老的视频API。它的解码器以.DLL或者(很少的).DRV为扩展名。 -如果MPlayer无法播放你的AVI并显示这种信息:</P> - -<P> <CODE>UNKNOWN video codec: HFYU (0x55594648)</CODE></P> - -<P>它意味着你的AVI在编码时使用了HFYU fourcc(HFYU = HuffYUV codec,DIV3 = DivX Low Motion,等等...) -的编码格式。现在你知道了,你必须查明Windows为了播放这个文件装载了哪一个DLL。在我们的情况下, -<CODE>system.ini</CODE>在这样的一行上包含这个信息:</P> - -<P> <CODE>VIDC.HFYU=huffyuv.dll</CODE></P> - -<P>因此,你需要<CODE>huffyuv.dll</CODE>文件。注意,音频解码器通过MSACM前缀指定:</P> - -<P> <CODE>msacm.l3acm=L3codeca.acm</CODE></P> - - -<P>这是MP3编码格式。现在你有了所有必要的信息(fourcc,解码器文件,AVI样本),把你的解码器支持要求通过邮件提交, -并把相关文件上载到我们的FTP站点:</P> - -<P> <CODE>ftp://upload.mplayerhq.hu/MPlayer/incoming/[codecname]/</CODE></P> - - -<H4><A NAME="importing_directshow">2.2.3.2 DirectShow codecs</A></H4> - -<P>DirectShow是较新的视频API,比它的前辈更恶劣。对于DirectShow事情变的困难了,</P> - -<UL> - <LI><CODE>system.ini</CODE>不再包含需要的信息,它们被储存在注册表里,此外。</LI> - <LI>我们需要解码器的的GUID。</LI> -</UL> - -<P><B>新方法:</B>使用微软的GraphEdit(快速)</P> -<OL> - <LI>从DirecX SDK或者<A HREF="http://doom9.org">Doom9</A>中取得GraphEdit。</LI> - <LI>运行<CODE>graphedit.exe</CODE>。</LI> - <LI>从菜单中选择Graph -> 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>的东西, -那么这是一个DMO-Codec。</P> -<P><B>老方法:</B>做个深呼吸然后开始搜索注册表...</P> - -<OL> - <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 -> Properties -> Advanced可以获得解码器名。如果没有,你真不走运。猜猜看吧(例如搜索TrueMotion)。</LI> - <LI>如果找到GUID你将看见FriendlyName和CLSID域。写出16字节CLSID,这就是我们需要的GUID。</LI> -</OL> - -<P><B>注意:</B>如果搜索失败,试试选上所有的复选框。你可能找到错误的内容,不过说不定你会走运...</P> - -<P>现在你有所有必要的信息(fourcc,GUID,解码器文件,AVI样本),把你的解码器支持要求通过邮件提交,并把相关文件上载到我们的FTP站点</P> - -<P> <CODE>ftp://upload.mplayerhq.hu/MPlayer/incoming/[codecname]/</CODE></P> - -</BODY> -</HTML>
--- a/DOCS/zh/documentation.html Mon Dec 18 15:15:21 2006 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1599 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> -<HTML> - -<HEAD> - <TITLE>文档 - MPlayer - Linux下的电影播放器</TITLE> - <LINK REL="stylesheet" TYPE="text/css" HREF="../default.css"> - <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=gbk"> -</HEAD> - -<BODY> - -<H1 ALIGN="center">MPlayer - Linux下的电影播放器</H1> - -<H2 ALIGN="center">© 2000-2003 Arpad Gereoffy (A'rpi/ESP-team)<BR> - <A HREF="http://www.mplayerhq.hu">http://www.mplayerhq.hu</A></H2> - -<P ALIGN="center">[汉语] - <A HREF="../en/index.html">[英语] </A> - <A HREF="../hu/index.html">[匈牙利语] </A> - <A HREF="../de/documentation.html">[德语] </A> - <A HREF="../fr/index.html">[法语] </A> - <A HREF="../pl/index.html">[波兰语] </A> - <A HREF="../it/documentation.html">[意大利语] </A><P> - -<HR> - -<H2>目录</H2> - -<HR> - -<UL> - <LI><A HREF="#reading">0. 如何阅读本文档</A></LI> - <LI><A HREF="#introduction">1. 介绍</A> - <UL> - <LI><A HREF="#history">1.1 历史</A></LI> - <LI><A HREF="#installation">1.2 安装</A></LI> - <LI><A HREF="#gui">1.3 GUI有吗?</A></LI> - <LI><A HREF="#subtitles_osd">1.4 字幕和OSD </A> - <UL> - <LI><A HREF="#mpsub">1.4.1 MPlayer自己的字幕格式(MPsub)</A></LI> - <LI><A HREF="#install_osd">1.4.2 安装OSD和字幕</A></LI> - <LI><A HREF="#menu">1.4.3 OSD菜单</A></LI> - </UL> - </LI> - <LI><A HREF="#rtc">1.5 RTC</A></LI> - </UL> - </LI> - <LI><A HREF="#features">2. 特性</A> - <UL> - <LI><A HREF="formats.html">2.1 支持的格式</A> - <UL> - <LI><A HREF="formats.html#video_formats">2.1.1 视频格式</A> - <UL> - <LI><A HREF="formats.html#mpeg">2.1.1.1 MPEG文件</A></LI> - <LI><A HREF="formats.html#avi">2.1.1.2 AVI文件</A></LI> - <LI><A HREF="formats.html#asf">2.1.1.3 ASF与WMV文件</A></LI> - <LI><A HREF="formats.html#mov">2.1.1.4 QuickTime与MOV文件</A></LI> - <LI><A HREF="formats.html#vivo">2.1.1.5 VIVO文件</A></LI> - <LI><A HREF="formats.html#fli">2.1.1.6 FLI文件</A></LI> - <LI><A HREF="formats.html#real">2.1.1.7 RealMedia(RM)文件</A></LI> - <LI><A HREF="formats.html#nuppelvideo">2.1.1.8 NuppelVideo文件</A></LI> - <LI><A HREF="formats.html#yuv4mpeg">2.1.1.9 yuv4mpeg文件</A></LI> - <LI><A HREF="formats.html#film">2.1.1.10 FILM文件</A></LI> - <LI><A HREF="formats.html#roq">2.1.1.11 RoQ文件</A></LI> - <LI><A HREF="formats.html#ogg">2.1.1.12 OGG/OGM文件</A></LI> - <LI><A HREF="formats.html#sdp">2.1.1.13 SDP文件</A></LI> - <LI><A HREF="formats.html#pva">2.1.1.14 PVA文件</A></LI> - <LI><A HREF="formats.html#gif">2.1.1.15 GIF文件</A></LI> - </UL> - </LI> - <LI><A HREF="formats.html#audio_formats">2.1.2 音频格式</A> - <UL> - <LI><A HREF="formats.html#mp3">2.1.2.1 MP3文件</A></LI> - <LI><A HREF="formats.html#wav">2.1.2.2 WAV文件</A></LI> - <LI><A HREF="formats.html#ogg_vorbis">2.1.2.3 OGG/OGM文件(Vorbis)</A></LI> - <LI><A HREF="formats.html#wma">2.1.2.4 WMA与ASF文件</A></LI> - <LI><A HREF="formats.html#mp4">2.1.2.5 MP4文件</A></LI> - <LI><A HREF="formats.html#cdda">2.1.2.6 CD音频</A></LI> - <LI><A HREF="formats.html#xmms">2.1.2.7 XMMS</A></LI> - </UL> - </LI> - </UL> - </LI> - <LI><A HREF="codecs.html"">2.2 支持的编解码器</A> - <UL> - <LI><A HREF="codecs.html#video_codecs">2.2.1 视频编解码器</A> - <UL> - <LI><A HREF="codecs.html#divx">2.2.1.1 DivX4/DivX5</A></LI> - <LI><A HREF="codecs.html#libavcodec">2.2.1.2 FFmpeg DivX/libavcodec</A></LI> - <LI><A HREF="codecs.html#xanim">2.2.1.3 XAnim编解码器</A></LI> - <LI><A HREF="codecs.html#vivo_video">2.2.1.4 VIVO视频</A></LI> - <LI><A HREF="codecs.html#mpeg">2.2.1.5 MPEG 1/2视频</A></LI> - <LI><A HREF="codecs.html#ms_video1">2.2.1.6 MS Video1</A></LI> - <LI><A HREF="codecs.html#cinepak">2.2.1.7 Cinepak CVID</A></LI> - <LI><A HREF="codecs.html#realvideo">2.2.1.8 RealVideo</A></LI> - <LI><A HREF="codecs.html#xvid">2.2.1.9 XviD </A></LI> - <LI><A HREF="codecs.html#sorenson">2.2.1.10 Sorenson</A></LI> - </UL> - </LI> - <LI><A HREF="codecs.html#audio_codecs">2.2.2 音频编解码器</A> - <UL> - <LI><A HREF="codecs.html#software_ac3">2.2.2.1软件AC3解码</A></LI> - <LI><A HREF="codecs.html#hardware_ac3">2.2.2.2硬件AC3解码</A></LI> - <LI><A HREF="codecs.html#libmad">2.2.2.3 libmad支持</A></LI> - <LI><A HREF="codecs.html#vivo_audio">2.2.2.4 VIVO音频</A></LI> - <LI><A HREF="codecs.html#realaudio">2.2.2.5 RealAudio</A></LI> - <LI><A HREF="codecs.html#qdesign">2.2.2.6 QDesign编解码器</A></LI> - <LI><A HREF="codecs.html#qclp">2.2.2.7 Qualcomm编解码器</A></LI> - <LI><A HREF="codecs.html#aac">2.2.2.8 AAC编解码器</A></LI> - </UL> - </LI> - <LI><A HREF="codecs.html#importing">2.2.3 Win32编解码器导入HOWTO</A> - <UL> - <LI><A HREF="codecs.html#importing_vfw">2.2.3.1 VFW编解码器</A></LI> - <LI><A HREF="codecs.html#importing_directshow">2.2.3.2 DirectShow编解码器</A></LI> - </UL> - </LI> - </UL> - </LI> - <LI><A HREF="#output">2.3 输出设备</A> - <UL> - <LI><A HREF="video.html">2.3.1 视频输出设备</A> - <UL> - <LI><A HREF="video.html#mtrr">2.3.1.1 MTRR的设置</A></LI> - <LI><A HREF="video.html#normal">2.3.1.2 传统显卡的视频输出</A> - <UL> - <LI><A HREF="video.html#xv">2.3.1.2.1 Xv</A> - <UL> - <LI><A HREF="video.html#xv_3dfx">2.3.1.2.1.1 3dfx显卡</A></LI> - <LI><A HREF="video.html#xv_s3">2.3.1.2.1.2 S3显卡</A></LI> - <LI><A HREF="video.html#xv_nvidia">2.3.1.2.1.3 nVidia显卡</A></LI> - <LI><A HREF="video.html#xv_ati">2.3.1.2.1.4 ATI显卡</A></LI> - <LI><A HREF="video.html#xv_neomagic">2.3.1.2.1.5 NeoMagic显卡</A></LI> - <LI><A HREF="video.html#xv_trident">2.3.1.2.1.6 Trident显卡</A></LI> - <LI><A HREF="video.html#xv_trident">2.3.1.2.1.7 Kyro/PowerVR显卡</A></LI> - </UL> - </LI> - <LI><A HREF="video.html#dga">2.3.1.2.2 DGA</A></LI> - <LI><A HREF="video.html#sdl">2.3.1.2.3 SDL</A></LI> - <LI><A HREF="video.html#svgalib">2.3.1.2.4 SVGAlib</A></LI> - <LI><A HREF="video.html#fbdev">2.3.1.2.5 Framebuffer输出(FBdev)</A></LI> - <LI><A HREF="video.html#mga_vid">2.3.1.2.6 Matrox framebuffer(mga-vid)</A></LI> - <LI><A HREF="video.html#tdfxfb">2.3.1.2.7 3dfx YUV支持(tdfxfb)</A></LI> - <LI><A HREF="video.html#opengl">2.3.1.2.8 OpenGL输出</A></LI> - <LI><A HREF="video.html#aalib">2.3.1.2.9 AAlib -- 文本方式显示</A></LI> - <LI><A HREF="video.html#vesa">2.3.1.2.10 VESA -- VESA BIOS的输出</A></LI> - <LI><A HREF="video.html#x11">2.3.1.2.11 X11</A></LI> - <LI><A HREF="video.html#vidix">2.3.1.2.12 VIDIX</A> - <UL> - <LI><A HREF="video.html#vidix_ati"> 2.3.1.2.12.1 ATI cards</A></LI> - <LI><A HREF="video.html#vidix_matrox"> 2.3.1.2.12.2 Matrox cards</A></LI> - <LI><A HREF="video.html#vidix_trident"> 2.3.1.2.12.3 Trident cards</A></LI> - <LI><A HREF="video.html#vidix_3dlabs"> 2.3.1.2.12.4 3DLabs cards</A></LI> - </UL> - </LI> - <LI><A HREF="video.html#directfb">2.3.1.2.13 DirectFB</A></LI> - <LI><A HREF="video.html#dfbmga">2.3.1.2.14 DirectFB/Matrox(dfbmga)</A></LI> - </UL> - </LI> - <LI><A HREF="video.html#mpegdec">2.3.1.3 MPEG解码器</A> - <UL> - <LI><A HREF="video.html#dvb">2.3.1.3.1 DVB</A></LI> - <LI><A HREF="video.html#dxr2">2.3.1.3.2 DXR2</A></LI> - <LI><A HREF="video.html#dxr3">2.3.1.3.3 DXR3/Hollywood+</A></LI> - </UL> - </LI> - <LI><A HREF="video.html#other">2.3.1.4 其他可视硬件</A> - <UL> - <LI><A HREF="video.html#zr">2.3.1.4.1 Zoran JPEG解码器</A></LI> - <LI><A HREF="video.html#blinken">2.3.1.4.2 Blinkenlights</A></LI> - </UL> - </LI> - <LI><A HREF="video.html#tv-out">2.3.1.5 TV输出支持</A> - <UL> - <LI><A HREF="video.html#tv-out_matrox">2.3.1.5.1 Matrox G400显卡</A></LI> - <LI><A HREF="video.html#tv-out_matrox_g450">2.3.1.5.2 Matrox G450/G550显卡</A></LI> - <LI><A HREF="video.html#tv-out_ati">2.3.1.5.3 ATI显卡</A></LI> - <LI><A HREF="video.html#tv-out_voodoo">2.3.1.5.4 Voodoo 3</A></LI> - <LI><A HREF="video.html#tv-out_nvidia">2.3.1.5.5 nVidia</A></LI> - </UL> - </LI> - </UL> - <LI><A HREF="sound.html">2.3.2 音频输出设备</A> - <UL> - <LI><A HREF="sound.html#sync">2.3.2.1 音频/视频同步</A></LI> - <LI><A HREF="sound.html#experiences">2.3.2.2 声卡体验,推荐</A></LI> - <LI><A HREF="sound.html#af">2.3.2.3 音频滤镜</A> - <UL> - <LI><A HREF="sound.html#af_resample">2.3.2.3.1 升/降采样率</A></LI> - <LI><A HREF="sound.html#af_channels">2.3.2.3.2 改变声道数</A></LI> - <LI><A HREF="sound.html#af_format">2.3.2.3.3 采样格式转换</A></LI> - <LI><A HREF="sound.html#af_delay">2.3.2.3.4 延迟</A></LI> - <LI><A HREF="sound.html#af_volume">2.3.2.3.5 软件音量控制</A></LI> - <LI><A HREF="sound.html#af_equalizer">2.3.2.3.6 均衡器</A></LI> - <LI><A HREF="sound.html#af_panning">2.3.2.3.7 摇动滤镜</A></LI> - <LI><A HREF="sound.html#af_sub">2.3.2.3.8 副低音</A></LI> - <LI><A HREF="sound.html#af_surround">2.3.2.3.9 环绕音效解码</A></LI> - </UL> - </LI> - <LI><A HREF="sound.html#plugins">2.3.2.4 音频插件(已过时)</A> - <UL> - <LI><A HREF="sound.html#resample">2.3.2.4.1 升/降采样率</A></LI> - <LI><A HREF="sound.html#surround_decoding">2.3.2.4.2 环绕音效解码</A></LI> - <LI><A HREF="sound.html#format">2.3.2.4.3 采样格式转换</A></LI> - <LI><A HREF="sound.html#delay">2.3.2.4.4 延迟</A></LI> - <LI><A HREF="sound.html#volume">2.3.2.4.5 软件音量控制</A></LI> - <LI><A HREF="sound.html#extrastereo">2.3.2.4.6 立体声加强</A></LI> - <LI><A HREF="sound.html#normalizer">2.3.2.4.7 音量正规化</A></LI> - </UL> - </LI> - </UL> - </LI> - </UL> - </LI> - <LI><A HREF="#tv">2.4 电视输入</A> - <UL> - <LI><A HREF="#tv_compilation">2.4.1 编译</A></LI> - <LI><A HREF="#tv_tips">2.4.2 使用技巧</A></LI> - <LI><A HREF="#tv_examples">2.4.3 示例</A></LI> - </UL> - </LI> - <LI><A HREF="#edl">2.5 编辑决定列表(EDL)</A> - <UL> - <LI><A HREF="#edl_using">2.5.1 使用一个EDL文件</A></LI> - <LI><A HREF="#edl_making">2.5.2 制作一个EDL文件</A></LI> - </UL> - </LI> - </UL> - </LI> - <LI><A HREF="#usage">3. 用法</A> - <UL> - <LI><A HREF="#command_line">3.1 命令行</A></LI> - <LI><A HREF="#control">3.2 控制</A> - <UL> - <LI><A HREF="#controls_configuration">3.2.1 控制配置</A> - <UL> - <LI><A HREF="#key_names">3.2.1.1 键名</A></LI> - <LI><A HREF="#commands">3.2.1.2 命令</A></LI> - </UL> - </LI> - <LI><A HREF="#lirc">3.2.3 LIRC控制</A></LI> - <LI><A HREF="#slave">3.2.4 Slave模式</A></LI> - </UL> - </LI> - <LI><A HREF="#streaming">3.3 网络或管道的流媒体</A></LI> - </UL> - </LI> - <LI><A HREF="cd-dvd.html">4. CD/DVD部分</A> - <UL> - <LI><A HREF="cd-dvd.html#drives">4.1 CD/DVD驱动器</A></LI> - <LI><A HREF="cd-dvd.html#dvd">4.2 DVD播放</A></LI> - <LI><A HREF="cd-dvd.html#vcd">4.3 VCD播放</A></LI> - </UL> - </LI> - <LI><A HREF="faq.html">5. FAQ部分</A> - <UL> - <LI><A HREF="faq.html#compilation">5.1 编译</A></LI> - <LI><A HREF="faq.html#general">5.2 一般问题</A></LI> - <LI><A HREF="faq.html#playback">5.3 播放问题</A></LI> - <LI><A HREF="faq.html#driver">5.4 视频/音频驱动问题(vo/ao)</A></LI> - <LI><A HREF="faq.html#dvd">5.5 DVD播放</A></LI> - <LI><A HREF="faq.html#features">5.6 特性要求</A></LI> - <LI><A HREF="faq.html#encoding">5.7 编码</A></LI> - </UL> - </LI> - <LI><A HREF="#ports">6. 移植</A> - <UL> - <LI><A HREF="#linux">6.1 Linux</A> - <UL> - <LI><A HREF="#debian">6.1.1 Debian安装包的制作</A></LI> - <LI><A HREF="#rpm">6.1.2 RPM安装包的制作</A></LI> - <LI><A HREF="#arm">6.1.3 ARM</A></LI> - </UL> - </LI> - <LI><A HREF="#bsd">6.2 *BSD</A> - <UL> - <LI><A HREF="#freebsd">6.2.1 FreeBSD</A></LI> - <LI><A HREF="#openbsd">6.2.2 OpenBSD</A></LI> - </UL> - </LI> - <LI><A HREF="#solaris">6.3 Solaris</A></LI> - <LI><A HREF="#sgi">6.4 Silicon Graphics/Irix</A></LI> - <LI><A HREF="#qnx">6.5 QNX</A></LI> - <LI><A HREF="#cygwin">6.6 Cygwin</A></LI> - </UL> - </LI> - <LI><A HREF="encoding.html">7. 用MEncoder编码</A> - <UL> - <LI><A HREF="encoding.html#2pass">7.1 2或3-pass的MPEG-4("DIVX")编码</A></LI> - <LI><A HREF="encoding.html#mpeg">7.2 编码为MPEG格式</A></LI> - <LI><A HREF="encoding.html#rescaling">7.3 电影再缩放</A></LI> - <LI><A HREF="encoding.html#copying">7.4 流复制</A></LI> - <LI><A HREF="encoding.html#fixing">7.5 修复索引损坏的AVI文件</A></LI> - <UL> - <LI><A HREF="encoding.html#appending">7.5.1 合并多个AVI文件</A></LI> - </UL> - <LI><A HREF="encoding.html#libavcodec">7.6 用libavcodec编解码器族进行编码</A></LI> - <LI><A HREF="encoding.html#image_files">7.7 用输入的多幅图像文件(JPEGs或者PNGs)进行编码</A></LI> - <LI><A HREF="encoding.html#vobsub">7.8 将DVD字幕提取为Vobsub文件</A></LI> - <LI><A HREF="encoding.html#aspect">7.9 保持屏幕高宽比</A></LI> - </UL> - </LI> - <LI><A HREF="#mailing_lists">附录A -- 邮件列表</A></LI> - <LI><A HREF="bugreports.html">附录B -- 如何报告bugs</A></LI> - <LI><A HREF="#known_bugs">附录C -- 已知bug</A></LI> - <LI><A HREF="skin.html">附录D - MPlayer skin的格式</A> - <UL> - <LI><A HREF="skin.html#overview">D.1 综述</A> - <UL> - <LI><A HREF="skin.html#directories">D.1.1 目录</A></LI> - <LI><A HREF="skin.html#images">D.1.2 图像</A></LI> - <LI><A HREF="skin.html#components">D.1.3 Skin组件</A></LI> - <LI><A HREF="skin.html#files">D.1.4 文件</A></LI> - </UL> - </LI> - <LI><A HREF="skin.html#skinfile">D.2 Skin的文件</A> - <UL> - <LI><A HREF="skin.html#mainwindow">D.2.1 主窗口和播放条</A></LI> - <LI><A HREF="skin.html#subwindow">D.2.2 副窗口</A></LI> - <LI><A HREF="skin.html#skinmenu">D.2.3 Skin菜单</A></LI> - </UL> - </LI> - <LI><A HREF="skin.html#fonts">D.3 字体</A> - <UL> - <LI><A HREF="skin.html#symbols">D.3.1 符号</A></LI> - </UL> - </LI> - <LI><A HREF="skin.html#guimessages">D.4 GUI消息</A></LI> - </UL> - </LI> - <LI><A HREF="users_against_developers.html">附录E -- 开发者的眼泪</A> - <UL> - <LI><A HREF="users_against_developers.html#gcc">GCC 2.96</A></LI> - <LI><A HREF="users_against_developers.html#binary">二进制发行版</A></LI> - <LI><A HREF="users_against_developers.html#nvidia">nVidia</A></LI> - <LI><A HREF="users_against_developers.html#barr">Joe Barr</A></LI> - <LI><A HREF="../tech/patches.txt">附录F -- 如何发送补丁</A></LI> - </UL> - </LI> -</UL> - -<HR> - - - -<H1><A NAME="reading">0. 如何阅读本文档</A></H1> - -<P>如果你是首次安装:请一定要阅读从这里到安装部分结束的所有内容,并且追踪你所遇到的链接。 -如果你有任何其它问题,返回到目录并搜索主题,读取<A HREF="faq.html">FAQ</A>,或者尝试用grep搜索整个文件。</P> - -<P>这个文件的主要原则:如果一个功能没有被编入文档,那么它<U>不存在</U>。如果我没有说你能 -用电视选台器音频编码,你就不能。不过健康程度的综合能力还是受欢迎的。祝你好运。你将需要它的:), -让我引用<A HREF="http://mplayerhq.hu/pipermail/mplayer-users/">mplayer-users</A>邮件列表中 -Chris Phillips的话作为另一个好的建议:</P> - -<BLOCKQUOTE> -“我以前说过新手和白痴之间的区别在于:无论,你实际上对一个系统(Linux,汽车,女孩:D) -了解多少,你应该总能够退一步想想并且保持客观,否则,恕我直言你是公认的白痴。跟我住在一起的女孩认定吸 -尘器坏了因为它不吸进东西,而从不想更换袋子,因为她以前从来没有做过...那就是愚蠢,而不仅仅是不 -知道做什么...仅仅因为不是那么熟悉你的环境不是你的a)懒惰和b)忽视的借口。如此多人们似乎看到“error” -就停止...只有极少数真正读取了冒号另一边的东西”。 -</BLOCKQUOTE> - - -<H1><A NAME="introduction">1. 介绍</A></H1> - -<P>MPlayer是Linux 上的电影播放器(也能跑在许多其它Unices上,甚至<B>非x86</B>CPU上, -参见<A HREF="#ports">移植部分</A>)。它能使用众多的本地的,XAnim,RealPlayer,和Win32 DLL编解码器, -播放大多数MPEG,VOB,AVI,OGG,VIVO,ASF/WMV,QT/MOV,FLI,RM,NuppelVideo,yuv4mpeg,FILM,RoQ文件。 -你还能观看<B>VideoCD</B>,<B>SVCD</B>,<B>DVD</B>,<B>3ivx</B>,<B>RealMedia</B>,和<B>DivX</B>格式 -的电影(你根本不需要avifile库)。mplayer的另一个大的特色是广泛的输出设备支持。它可以在X11,Xv,DGA, -OpenGL,SVGAlib,fbdev,AAlib,DirectFB下工作,而且你也能使用GGI和SDL(由此可以使用他们支持的各种驱动模式) -和一些低级的硬件相关的驱动模式(比如Matrox,3Dfx和Radeon,Mach64,Permedia3)!他们大多数支持软件或者硬件缩放, -因此你能在全屏下观赏电影。MPlayer还支持通过硬件MPEG解码卡显示,诸如<B><A HREF="video.html#dvb">DVB</A></B> -和<B><A HREF="video.html#dxr3">DXR3与Hollywood+</A></B>。可以使用European/ISO 8859-1,2(匈牙利语,英语,捷克语等等), -西里尔语,韩语的字体的清晰放大并且反锯齿的字幕(<B>支持10种格式</B>),和on screen display(OSD)你又觉得如何?</P> - -<P>这个播放器能够稳如泰山的播放被破坏的MPEG文件(对一些VCD有用),而它能播放著名的windows media player -都打不开的的坏的AVI文件。甚至,没有索引部分的AVI文件可播放,你能暂时由重建他们的索引<CODE>-idx</CODE>选择, -或者用MEncoder永久重建,使你能够在影片中搜索!如你所见,稳定和质量是最重要的事情,而且他的速度是也惊人的。</P> - -<P>MEncoder(MPlayer's Movie Encoder)是一个简单的电影编码器,设计用来把MPlayer可以播放的电影 -(<B>AVI/ASF/OGG/DVD/VCD/VOB/MPG/MOV/VIV/FLI/RM/NUV/NET/PVA</B>)编码成别的MPlayer可以播放的格式(具体列表见下面)。 -它可以使用各种编解码器进行编码,例如 -<B>DivX4</B>(1或2 passes),libavcodec, -<B>PCM</B>/<B>MP3</B>/<B>VBR MP3</B>音频。同时也有强大的插件系统用于控制视频。</P> - -<H4>MEncoder的特性</H4> - -<UL> - <LI>从MPlayer支持的广泛的文件格式和解码器的输入进行编码</LI> - <LI>编码到ffmpeg的<A HREF="codecs.html#libavcodec">libavcodec</A>的所有编解码器</LI> - <LI>从<B>V4L兼容的电视选台器</B>输入编码</LI> - <LI>编码/多路传输成具有适当索引的交错的AVI文件</LI> - <LI>从外部音频流创建文件</LI> - <LI>1, 2或3 pass编码</LI> - <LI><B>VBR</B>的MP3音频 - <B>重要提示:</B> VBR MP3音频不总是能被Windows的播放器正常的播放!</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>使用我们强大的插件系统(crop, expand, flip, postprocess, - rotate, scale, rgb/yuv conversion)</LI> - <LI>可以把DVD/VOB字幕<B>和</B>文本字幕编码到输出文件中</LI> - <LI>可以把DVD字幕提取为Vobsub格式</LI> -</UL> - -<H4>计划中的特性</H4> - -<UL> - <LI>更加广泛的编/解码格式/编解码器 (用DivX4/Indeo5/VIVO流创建VOB文件:)</LI> -</UL> - -<P>MPlayer和MEncoder按照GNU General Public License Version 2发布。</P> - -<H2><A NAME="history">1.1 历史</A></H2> - -<P>这一年以前开始的... -我(A'rpi)已尝试Linux下的许多播放器(mtv,xmps,dvdview,livid/oms,videolan,xine,xanim,avifile,xmmp), -但是他们全都有一些问题。多半与特殊的文件或音频与视频的同步有关。他们中大多数不能同时播放MPEG1,MPEG2和AVI(DivX)文件。 -许多播放器也有图象质量或者速度的问题。因此,我已决定自己写/修改一个...</P> - -<UL> - <LI><B>mpg12play v0.1-v0.3:</B>2000年9月22-25日<BR> - 第一次尝试,总共只用了半小时来hack!到版本0.3我都使用www.heroinewarrior.com的libmpeg3,但是它有图象质量和速度的问题。</LI> - <LI><B>mpg12play v0.5-v0.87:</B>2000年9月28日-10月20日<BR> - 用Dirk Farin的DVDview替换了原来的Mpeg codec,它是一个很不错的东东,但是它很慢并且使用写成C++(我讨厌C++!!!)</LI> - <LI><B>mpg12play v0.9-v0.95pre5:</B>2000年10月21日-11月2日<BR> - Mpeg codec改用Aaron Holtzman与的Michel Lespinasse的libmpeg2(mpeg2dec)。它十分出色,优化过的十分快速的C代码和完美的图象质量以及100%的MPEG标准的一致性。</LI> - <LI><B>MPlayer v0.01:</B> 2000年11月11日<BR> - 第一个MPlayer。</LI> - <LI><B>MPlayer v0.3-v0.9:</B>2000年11月18日-12月4日<BR> - 它包含两个程序: mpg12play v0.95pre6和我的新的简单的基于avifile的Win32 DLL Loader的AVI播放器'avip'。</LI> - <LI><B>MPlayer v0.10:</B>2001年1月1日<BR> - MPEG和AVI播放器做成了一个二进制文件!</LI> - <LI><B>MPlayer v0.11pre系列:</B><BR> - 一些新的开发者加入了,从0.11开始mplayer项目成为一个team-work!增加了.ASF文件支持,和OpenDivX(见www.projectmayo.com)编/解码支持。</LI> - <LI><B>MPlayer v0.17a“IdegCounter”</B>2001年4月27日<BR> - 在艰苦发展了4个月的0.11pre之后的正式版本!试试看,然后等着被震撼!成千上万的新的特性添加...当然同时旧的代码也被改进,移去了一些bug</LI> - <LI><B>MPlayer 0.18“BugCounter”</B>2001年7月9日<BR> - 0.17发布2个月后的新的正式版。完全的ASF支持,更多字幕格式,引入libao(类似于libvo但是针对音频),比以往任何时候更加稳定,如此等等。这肯定是个必需品!</LI> - <LI><B>MPlayer 0.50“Faszom(C)ounter”</B>2001年10月8日<BR> - Hmm。又一次新版本。众多新的特性,Beta版的GUI,bug修正,新的vo和ao驱动模式,许多系统的移植,包括opensource DivX codecs和更多得多的改进。尝试一下!</LI> - <LI><B>MPlayer 0.60“RTFMCounter”</B>2002年1月3日<BR> - 支持MOV/VIVO/RM/FLI/NUV文件格式,本地的CRAM,Cinepak,ADPCM 编解码器,支持XAnim的二进制的编解码器;DVD字幕支持,首此发布MEncoder,电视截取,缓存,liba52,无数的修正。</LI> - <LI><B>MPlayer 0.90pre10 "The BirthdayCounter"</B> 2002年11月11日<BR> - 尽管这不是一个正式发行版,但我决定提到它因为它诞生在MPlayer v0.01发布的两年之后。生日快乐,MPlayer!</LI> - <LI><B>MPlayer 0.90rc1 "The CodecCounter"</B> Dec 7, 2002<BR> - 同样不是一个正式发行版,但在添加了Sorenson 3(QuickTime)和Windows - Media 9的支持之后, MPlayer成为世界上第一个支持所有已知视频格式的电影播放器!</LI> - <LI><B>MPlayer 0.90“?”</B>日期未知</LI> -</UL> - -<H2><A NAME="installation">1.2 安装</A></H2> - -<P>在这章中我将试图指引你通过编译和配置MPlayer的过程,它不大容易的,不过也见得一定很难的。 -如果你遇到不同于我所解释的现象,请的通过搜索这篇文件来查找你的回答。如果你遇到链接,请跟踪他们并且细心读取他们包含的内容。 -它将花费一些时间,但是它确实是值得的。</P> - -<P>你需要一个相当新的系统。在Linux上,推荐2.4.x的内核。</P> - -<H4>软件要求:</H4> - -<UL> - <LI><B>binutils</B> -- 建议版本<B>2.11.x</B>。这个程序负责生成MMX/3DNow!/etc指令,因此十分重要。</LI> - <LI><B>gcc</B> -- 建议版本是:<B>2.95.3</B>(或者<B>2.95.4</B>)和<B>3.2+</B>。<B>永远不要</B>使用2.96或者3.0.x! -他们产生错误的MPlayer的代码。如果你决定更换2.96的gcc,那么不要只是因为新而决定采用3.0.x!3.0.x的早期版本甚至比2.96更buggy。 -因此不如降级到2.95.x(也把libstdc++降级,其它程序可能需要它)或者根本不升/降级(但这种情况下请对运行时的问题作好准备)。 -如果你一定要使用3.x.x请使用最新的版本,早先的发行版本有各种各样的错误,确信你使用的至少是3.1,它通过测试且工作正常。 -关于gcc 2.96的bug(仍然没有修正,他们在MPlayer中被绕过!)的详细信息能在<A -HREF="users_against_developers.html">这里</A>和<A HREF="faq.html">FAQ</A>中找到。</LI> - <LI><B>XFree86</B> -- 建议<B>总使用最新版本(4.2.1)</B>。正常来说,每个人会这样做,因为XFree86从4.0.2开始, -它包含了用来使其能够在它支持的卡片上使用硬件YUV加速(快速的图象显示)的<A HREF="video.html#xv">XVideo</A>扩展(在某些地方被称作<B>Xv</B>)。<BR> -确保也安装了<B>开发包</B>,否则它将不工作。<BR> -对于一些视频卡你不需要XFree86。参见下面的列表。</LI> - <LI><B>make</B> -- 建议<B>总使用最新版本</B>(至少3.79.x)。这通常不太重要。</LI> - <LI><B>SDL</B> -- 它不是必须的,但是在某些情况下(损坏的音频,在xv驱动模式下奇怪地延迟的显卡)能帮助。总使用最新(1.2.x或以上)的。</LI> - <LI><B>libjpeg</B> -- 可选的JPEG解码器,用于-mf参数和一些QT MOV文件。如果你计划做jpeg文件的工作那么MPlayer和MEncoder都需要它。</LI> - <LI><B>libpng</B> -- 推荐也是默认的( M)PNG译码器。GUI需要它。对MPlayer和MEncoder也有用。</LI> - <LI><B>lame</B> -- 推荐,MEncoder需要用它把音频做MP3编码,建议<B>总使用最新版本</B>(3.90或以上)。</LI> - <LI><B>libogg</B> -- 可选,用于播放OGG文件格式。</LI> - <LI><B>libvorbis</B> -- 可选,用于播放OGG Vorbis音频。</LI> - <LI><B><A HREF="http://www.live555.com/mplayer/">LIVE.COM Streaming Media</A></B> - -- 可选,用于播放RTSP/RTP流。</LI> - <LI><B>directfb</B> -- 可选,从<A HREF="http://www.directfb.org">http://www.directfb.org</A>获得</LI> - <LI><B>cdparanoia</B> -- 可选,用于CDDA支持</LI> - <LI><B>libfreetype</B> -- 可选,用于TTF字体支持。至少需要2.0.9以上版本。</LI> - <LI><B>libxmms</B> -- 可选, 用于XMMS输入插件的支持。要求至少1.2.7以上版本。</LI> -</UL> - -<H4>编解码器:</H4> - -<UL> - <LI><B>libavcodec</B>:这个编解码器包可以在多重平台上对H263/MJPEG/RV10/DivX3/DivX4/DivX5/MP41/MP42/WMV1编码格式的视频流和 -WMA(Windows Media Audio)v1/v2的音频流进行解码,它同时也是已知完成这些任务最快的解码器。详细情况请看<A HREF="codecs.html#libavcodec">libavcodec</A>部分。特性<BR>: - <UL> - <LI>在非x86机器上的对上述的各种编码格式解码。</LI> - <LI>以上述大多数编码格式编码。</LI> - <LI>这是<B>可用的最快的</B>DivX/3/4/5和其它MPEG4类型的解码器,高度推荐。</LI> - </UL> - </LI> - <LI><B>Win32编解码器</B>:如果你计划在x86构架的机器上使用MPlayer,你将有可能需要他们。在开始MPlayer的编译<B>之前</B>从我们的<A HREF="http://www.mplayerhq.hu/MPlayer/releases/codecs/">编解码器页</A>下载Win32编解码器并安装到/usr/lib/codecs,否则 -将不会编译Win32支持代码!<BR> -<B>注意</B>: avifile项目有类似的codecs包,但是它不同于我们的,如此如果你想使用所有支持的编解码器,安装我们的包(别担心, -avifile使用它不会有任何问题).特性:<BR> - <UL> - <LI>如果你想要播放或者编码例如以各种各样的硬件压缩器记录的电影,像选台器卡,数码相机(例如:DV,ATI VCR,MJPEG),你将需要它</LI> - <LI>如果你想要播放<B>WMV8,WMV9/WMA9格式的电影</B>那就需要它。播放老的以MP41或者MP42视频的ASF(尽管这些文件的音频常常是VoxWare -- 它是通过Win32编解码器解码的),或者WMV7是不需要它的。</LI> - </UL> - </LI> - <LI><B>QuickTime编解码器</B>:在x86平台上这些编解码器可以用来解码Sorenson v1/v3, RPZA, 和其他QuickTime视频,和QDesign音频流。 - 安装方法可以在<A HREF="codecs.html#sorenson">Sorenson视频编解码器</A>部分找到。</LI> - <LI><B>DivX4与DivX5:</B>关于这编码格式的信息可从<A HREF="codecs.html#divx">DivX4与DivX5</A>节得到。如果你不想用它来编码, -你有可能不会想要这个解码器,因为<B>libavcodec</B>(见上面)比它快得多。<BR> - 特性: - <UL> - <LI>用<A HREF="encoding.html">MEncoder</A>进行1 pass或2 pass编码。</LI> - <LI>播放老的<B>DivX3</B>格式的电影比Win32 DLL快得多但是比<B>libavcodec</B>慢!</LI> - <LI>它封闭源码的,而且仅仅有一个x86平台的版本。</LI> - </UL> - </LI> - <LI><B>XviD:</B>开源的Divx4Linux的编码替代品<BR> - 特色: - <UL> - <LI>用<A HREF="encoding.html">MEncoder</A>进行1 pass或2 pass编码。</LI> - <LI>这是开源的,所以是多平台的。</LI> - <LI>它的编码速度比divx4快2倍 -- 在几乎相同的质量的情况下</LI> - </UL> - </LI> - <LI><A HREF="codecs.html#xanim">XAnim codecs</A>对解码<B>3ivx</B>和Indeo 3/4/5格式,和一些旧的格式的电影效果是最好(全 -屏幕,硬件YUV缩放)。同时,他们是多平台的,因此这是在非x86平台上播放Indeo的唯一的方法(当然,除了直接使用XAnim之外:)。 -但是例如Cinepak电影MPlayer自己的Cinepak解码器播放才有最好的效果!</LI> - <LI>对于<B>Ogg Vorbis</B>音频解码你需要正确地安装<CODE>libvorbis</CODE>。如果可能的话尽量使用deb/rpm包装, -或者用<A HREF="http://ogg.org/ogg/vorbis/download/vorbis_nightly_cvs.tgz">源代码</A>编译(这是Vorbis CVS的每天最新的tarball)。</LI> - <LI>MPlayer能使用RealPlayer 8或RealONE的库来播放包括<B>RealVideo 2.0 - 4.0</B>格式的视频和Sipro/Cook格式的音频的文件。 -安装方法以及关于它的更多信息参见<A HREF="formats.html#real">RealMedia文件格式</A>部分!</LI> -</UL> - -<H4>显卡</H4> - -<P>一般地显卡可分为两种。一种(较新的显卡)支持<B>硬件缩放和YUV加速</B>,另一种卡没有。</P> - -<H4>YUV显卡</H4> - -<P>他们能在他们显存可以的范围中用任何分辨率显示和缩放(zoom)图像,只<B>占用很少的CPU</B>(即使在放大的时候),所以你能得到清晰而且飞快的全屏播放。</P> - -<UL> - <LI><B>Matrox G200与G400与G450与G550显卡</B>:虽然提供了一个<A HREF="video.html#vidix">Vidix驱动</A>, -但还是推荐使用旧的mga_vid内核模块,因为它工作起来好得多。关于其安装和使用参见<A HREF="video.html#mga_vid">mga-vid</A>部分。 -在编译MPlayer<I>之前</I>进行这些步骤这一点很重要,否则不会编译mga_vid的支持代码。同时也请查看<A HREF="video.html#tv-out_matrox">Matrox的电视输出</A>部分。 -<U><B>如果你是非Linux用户</B></U>,你的唯一的选择是VIDIX驱动:请看<A HREF="video.html#vidix">VIDIX</A>部分!</LI> - <LI><B>3Dfx Voodoo3与Banshee显卡</B>:请参见<A HREF="video.html#tdfxfb">tdfxfb</A>部分以了解如何获得大幅的速度提升。 -在编译MPlayer<B>之前</B>进行这些步骤这一点很重要,否则不会编译3Dfx的支持代码。也请参考<A HREF="video.html#tv-out_voodoo">3dfx电视输出</A>部分。 -如果你使用X,至少使用4.2.0版本,因为4.1.0和更早发行版本的3dfx的Xv驱动是坏的!</LI> - <LI><B>ATI显卡</B>:下列的显卡提供了<A HREF="video.html#vidix">Vidix驱动</A>:<B>Radeon</B>,<B>Rage128</B>, -<B>Mach64</B>(Rage XL/Mobility,Xpert98)。也请参考电视输出文档中的<A HREF="video.html#tv-out_ati">ATI电视输出</A>部分, -看看Linux与MPlayer是否支持你的显卡的电视输出。</LI> - <LI><B>S3显卡</B>:Savage和Virge/DX芯片有硬件加速功能。尽可能使用最新的XFree86版本,老的的驱动很buggy。 -Savage的芯片的YV12显示有问题,具体细节请看<A HREF="video.html#xv_s3">S3 Xv</A>部分。更老的,Trio显卡没有,或只有很慢的硬件加速功能。</LI> - <LI><B>nVidia显卡</B>:可能是也可能不是视频播放的好的选择。如果你没有一个GeForce2(或更新的)显卡,你不太可能在运行中不遇到bugs。 - <B>XFree86中内建的nVidia驱动不支持所有nVidia显卡(GeForce2以下)的硬件YUV加速。</B>你必须从nVidia.com下载nVidia的封闭源码的驱动。细节参见<A HREF="video.html#xv_nvidia">nVidia Xv驱动</A>部分。同时也查看<A HREF="video.html#tv-out_nvidia">nVidia电视输出部分</A>如果你希望使用一个电视。</LI> - <LI><B>3DLabs GLINT R3和Permedia3</B>:提供VIDIX驱动(pm3-vid)。细节参见<A HREF="video.html#vidix">VIDIX</A>部分。</LI> - <LI><B>其它卡片:</B>不是上述的任何一个? - <UL> - <LI>试试XFree86的驱动(和你的显卡)是否支持硬件加速。细节参见<A HREF="video.html#xv">Xv部分</A>。</LI> - <LI>如果不是,那么你的操作系统不支持你显卡的视频特性:(<BR> -如果它在Windows下能够使用硬件缩放,那并不不意味着在Linux或者其它OS下做同样的事情,它依赖于驱动! -大多数制造厂不做Linux驱动也不公布芯片标准 -- 所以,使用他们的显卡你很不走运。看‘非YUV显卡’: - </LI> - </UL> - </LI> -</UL> - -<H4>非YUV卡片</H4> - -<P>可以通过使用<B>软件缩放</B>(使用<CODE>-zoom</CODE>或者<CODE>-vf scale</CODE>参数,但是我先警告你: -这会比较慢),或者通过切换成较小的的分辨率来实现全屏播放,例如352x288。如果你没有YUV加速,我们推荐使用后一种方法。视频模式切换通过<CODE>-vm</CODE>选项打开,它能用于下列驱动:</P> - -<UL> - <LI><B>使用</B>XFree86:细节参见<A HREF="video.html#x11"">X11驱动</A>和<A HREF="video.html#dga">DGA驱动</A>部分。推荐使用DGA! -也可以尝试通过SDL使用DGA,有时这种办法更好。</LI> - <LI><B>不使用</B>XFree86:按下列顺序尝试驱动模式:<A HREF="video.html#vesa">vesa</A>,<A HREF="video.html#fbdev">fbdev</A>, -<A HREF="video.html#svgalib">svgalib</A>,<A HREF="video.html#aalib">aalib</A>。</LI> -</UL> - -<H4>某些显卡:</H4> - -<UL> - <LI><B>Cirrus Logic显卡</B>: - <UL> - <LI>GD 7548: 板载显卡并用Compaq Armada 41xx系列的笔记本测试。 - <UL> - <LI>XFree86 3:能使用8/16bpp模式。然而,这个驱动在800x600@16bpp下狂慢而且buggy<B>推荐: 640x480@16bpp</B></LI> - <LI>XFree86 4: 如果不仅用加速Xserver会在启动后不久失去响应,但这样之后就比XFree86 3慢了。没有XVideo</LI> - <LI>FBdev: 这个显卡只兼容VBE 1.2,所以VESA帧缓冲用不了,当尝试用UniVBE来绕过时, 帧缓冲显示的全是碎片根本用不了。</LI> - <LI>VESA: 这个显卡只兼容VBE 1.2,所以VESA输出用不了。无法通过使用UniVBE解决</LI> - <LI>SVGAlib: 检测成更老的Cirrus芯片. 用<CODE>-bpp 8</CODE>可以使用但很慢</LI> - </UL> - </LI> - </UL> - </LI> -</UL> - -<H4>声卡</H4> - -<UL> - <LI><B>Soundblaster Live!</B>:通过这种声卡你能使用4或者6(<B>5.1</B>)声道AC3解码而不只是2声道。请看<A -HREF="codecs.html#software_ac3">软件AC3解码</A>一节。对于硬件AC3输出你必须使用ALSA 0.9的oss仿真!</LI> - <LI><B>C-Media的SP/DIF输出</B>:这些声卡可以使用硬件AC3输出,参见<A HREF="codecs.html#hardware_ac3">硬件AC3解码</A>一节。</LI> - <LI><B>其它声卡</B>的特性MPlayer是不支持的。 - <U>强烈建议阅读<A HREF="sound.html">声卡</A>部分!</U> -</UL> - -<H4>特性</H4> - -<UL> - <LI>考虑一下你是否需要GUI。如果需要,在进行编译之前,请看<A HREF="#gui">GUI</A>部分。</LI> - <LI>如果你想要安装MEncoder(我们的强大的全功能编码器),请看<A HREF="encoding.html">MEncoder部分</A>。</LI> - <LI>如果你有一张V4L兼容的<B>电视选台器</B>的卡,并且希望用MPlayer观看/截取并且录制电影,请看<A HREF="#tv">电视输入</A>一节。</LI> - <LI>有一个精致的<B>OSD菜单</B>可供使用。查看<A HREF="#menu">OSD菜单</A>部分。</LI> -</UL> - -<P>接着编译MPlayer:</P> - -<PRE> - ./configure - make - make install -</PRE> - -<P>到此为止,MPlayer就可以使用了。<CODE>$PREFIX/share/mplayer</CODE>目录下包含了<CODE>codecs.conf</CODE>文件, -程序通过它来了解所有的编解码器和他们的能兼容的格式。该文件应该与主程序一起更新!<BR> -检查在你的home目录(~/.mplayer/codecs.conf)中是否有旧的MPlayer版本留下的codecs.conf,如果有就删掉它!</P> - -<P><B>Debian的用户</B>能自己制作<CODE>.deb</CODE>安装包,这十分简单。直接在MPlayer的根目录下执行<CODE>fakeroot debian/rules binary</CODE>。 -详尽的步骤请看<A HREF="documentation.html#debian">Debian安装包的制作</A>。</P> - -<P><CODE>./configure</CODE><B>的输出请务必一定阅读</B>,还有<CODE>configure.log</CODE>文件,其中的信息会告诉你将什么将被编译,什么将不编译。 -你也可能需要查看<CODE>config.h</CODE>和<CODE>config.mak</CODE>文件。<BR> -如果你已经安装一些库文件,却没有被<CODE>./configure</CODE>发现,那么检查你是否也安装了正确的头文件(通常在-dev包中)以及他们的版本符合要求。 -<CODE>configure.log</CODE>通常会告诉你缺什么。</P> - -<P>尽管并非必需,你确实应该安装字体以使用OSD和字幕功能。推荐的方法是安装一个TTF字体文件并让MPlayer使用它。 -阅读<A HREF="#subtitles_osd">字幕和OSD</A>一节来了解其细节。</P> - - - -<H2><A NAME="gui">1.3 GUI有吗?</A></H2> - -<P>GUI需要GTK 1.2.x(它不是GTK的,但是面板是的)。skin被保存为PNG格式,因此你需要安装gtk,libpng(和他们的devel包,一般是gtk-dev和libpng-dev)。 -你必须在运行<CODE>./configure</CODE>时使用<CODE>--enable-gui</CODE>来编译它的代码。然后,你可以用下列方法之一打开GUI方式</P> -<UL> - <LI>在你的config文件中添加<CODE>gui=yes</CODE></LI> - <LI><CODE>ln -s $PREFIX/bin/mplayer $PREFIX/bin/gmplayer</CODE>,然后运行<CODE>gmplayer</CODE>。 -</UL> - -<P>目前由于技术原因,目前你不能在命令行下使用<CODE>-gui</CODE>选项。</P> - -<P>因为MPlayer不自带skin,所以如果你想要使用GUI,你必须自己下载它们。参见<A HREF="http://www.mplayerhq.hu/dload.html">下载页</A>。 -他们应该被解压到系统通用的目录(<CODE>$PREFIX/share/mplayer/skins/</CODE>),或者解压到<CODE>$HOME/.mplayer/skins/</CODE>。 -MPlayer在默认情况下会在这些的目录里寻找一个叫<I>default</I>的目录, -但是你能使用<CODE>-skin newskin</CODE>选项或在config文件中添加<CODE>skin=newskin</CODE>来强制使用<CODE>*/skins/newskin</CODE>目录下的skin。</P> - -<H2><A NAME="subtitles_osd">1.4 字幕和OSD</A></H2> - -<P> - MPlayer能在播放电影的同时显示字幕。目前支持下列格式:</P> -<UL> - <LI>VobSub</LI> - <LI>OGM</LI> - <LI>CC (closed caption)</LI> - <LI>Microdvd</LI> - <LI>SubRip</LI> - <LI>SubViewer</LI> - <LI>Sami</LI> - <LI>VPlayer</LI> - <LI>RT</LI> - <LI>SSA</LI> - <LI>MPsub</LI> - <LI>AQTitle</LI> - <LI>JACOsub</LI> -</UL> - -<P>MPlaye可以把上面列出的字幕格式(除了前三个)转换成下列的格式,使用下列选项:</P> - -<UL> - <LI>MPsub: <CODE>-dumpmpsub</CODE></LI> - <LI>SubRip: <CODE>-dumpsrtsub</CODE></LI> - <LI>Microdvd: <CODE>-dumpmicrodvdsub</CODE></LI> - <LI>JACOsub: <CODE>-dumpjacosub</CODE></LI> - <LI>Sami: <CODE>-dumpsami</CODE></LI> -</UL> - -<P>使用不同格式的命令行选项稍有不同:</P> - -<H4>VobSub字幕</H4> - -<P>VobSub字幕包括一个大的(几兆).sub文件,和可选的.idx和/或者.ifo文件。<BR> -用法: 如果你有类似<CODE>sample.sub</CODE>,<CODE>sample.ifo</CODE>,<CODE>sample.idx</CODE>之类的文件 --- 你必需使用<CODE>-vobsub sample -vobsubid <id></CODE>的参数(当然必要时加上路径)。 -<CODE>-vobsubid </CODE>选择类似于播放DVD时的<CODE>-sid</CODE>,用它你可以选择不同的字幕轨道(语言)。当省略<CODE>-vobsubid</CODE>选项时, -MPlayer将尝试使用<CODE>-slang</CODE>中指定的语言,如果没有找到将使用.idx文件中的<CODE>langidx</CODE>项指定的语言,如果这些尝试都失败了, -那就将没有字幕显示。</P> - -<H4>其它字幕</H4> -<P>其它格式由一个单一的包含时间,位置和正文信息的文本文件组成。<BR> -用法: 如果你有类似<CODE>sample.txt</CODE>之类的文件,你必须使用<CODE>-sub sample.txt</CODE> -(可以加上完整路径)。</P> - -<H4>调整字幕的时间和位置</H4> - -<DL> - <DT><CODE>-subdelay<sec></CODE></DT> - <DD>延迟字幕< sec >秒。可以是负数。</DD> - - <DT><CODE>-subfps<rate></CODE></DT> - <DD>规定字幕文件按每秒多少帧速度显示(浮点数)</DD> - - <DT><CODE>-subpos<0-100></CODE></DT> - <DD>规定字幕显示的位置。</DD> -</DL> - -<P>如果你使用MicroDVD字幕文件时遇到电影和字幕之间的延迟不断增加的问题,很有可能你的电影文件和字幕文件的帧速度不同。<BR> -请注意,MicroDVD字幕格式用绝对帧数来计时,因此<CODE>-subfps</CODE>选项不能用于这种格式。因为MPlayer没法猜测 -字幕文件的帧速度,你必须手工修改它。在MPlayer的FTP站点的<CODE>contrib</CODE>目录中有一个小的perl脚本可以替你做这种转化。</P> - -<P>当你播放一个电影时MPlayer将尝试猜测你想要使用的字幕文件,在大多数情况下,字幕文件和电影文件在同一个目录下,并且有相同的名字, -你不需要设置有关字幕的选项,只要正常播放电影就可以了,MPlayer会自动播放字幕。 - -<P>关于DVD字幕,请看<A HREF="cd-dvd.html#dvd">DVD</A>一节。</P> - -<H3><A NAME="mpsub">1.4.1 MPlayer自己的字幕格式(MPsub)</A></H3> - -<P>MPlayer引入一种称为<B>MPsub</B>的新的字幕格式。它由Gabucino设计。基本上,其主要的特性是基于<I>动态</I>时间 -(虽然它有基于帧的模式)。例如(引自<A HREF="../tech/mpsub.sub">DOCS/tech/mpsub.sub</A>):</P> - -<P><CODE><I># first number : wait this much after previous subtitle disappeared<BR> - # second number : display the current subtitle for this many seconds<BR> - <BR> - 15 3<BR> - A long long, time ago...<BR> - <BR> - 0 3<BR> - in a galaxy far away...<BR> - <BR> - 0 3<BR> - Naboo was under an attack.<BR> - </I></CODE></P> - -<P>因此如你所见,主要的目标是<B>使字幕的编辑/计时/合并/分割变得容易</B>。同时,如果你 -- 比方说 -- 有一个SSA字幕但是它 -与你的电影却有严重的时间/延迟问题,你只要简单运行<CODE>mplayer dummy.avi -sub source.ssa -dumpmpsub</CODE>。 -在当前目录中将生成一个<CODE>dump.mpsub</CODE>文件,它包含源字幕的正文,但是使用<B>MPsub</B>格式。 -然后,你就能字幕中自由地添加或减去任意秒。</P> - -<P>字幕的显示使用一种称为<B>'OSD', On Screen Display</B>的技术。OSD被用来显示当前的时间,音量条,进度条等等。</P> - -<H3><A NAME="install_osd">1.4.2 安装OSD和字幕</A></H3> - -<P>你需要一个MPlayer字体包来使用OSD和字幕功能。有许多方法获得它:</P> - -<UL> - - <LI>从MPlayer站点下载准备好的字体包。 -注意:当前可用的字体限仅限于iso 8859-1/2的支持,但在FTP占的contrib/font部分有其它一些(包括朝鲜语,俄语,8859-8等等)用户制作的字体。<BR> - -字体应该有正确的font.desc文件用来把unicode中字符位置映射到字幕文件实际使用的编码页。另一种解决方法是把字幕用utf8格式编码 -然后使用-utf8选项或者将字幕文件命名为<video_name>.utf放在与视频文件相同的目录中。将不同的编码页转换到utf8编码可以通过使用 -konwert(Debian)或者iconv(Red Hat)程序完成。<BR> -一些URL: - <UL> - <LI><A HREF="ftp://ftp.mplayerhq.hu/MPlayer/releases/">ftp://ftp.mplayerhq.hu/MPlayer/releases/</A> -- ISO字体</LI> - <LI><A HREF="ftp://ftp.mplayerhq.hu/MPlayer/contrib/fonts/">ftp://ftp.mplayerhq.hu/MPlayer/contrib/fonts/</A> -- 用户制作的各种各样的字体</LI> - <LI><A HREF="http://realtime.ssu.ac.kr/~lethean/mplayer">http://realtime.ssu.ac.kr/~lethean/mplayer/</A> -- 朝鲜字体 & RAW的插件</LI> - </UL> - </LI> - <LI>使用TOOLS/subfont-c下的字体制作工具,它是一个能将TTF/Type1等字体转换成mplayer字体包的一个完整的工具。 -(详细情况请看TOOLS/subfont-c/README)</LI> - <LI>使用TOOLS/subfont-GIMP下的GIMP字体生成插件(注:你同时也必须有HSI RAW插件,见下面的URL)</LI> - <LI>使用TrueType(TTF)字体,通过<B>freetype</B>库。必须使用2.0.9或更高的版本!然后你有两种方法: - <UL> - <LI>使用<CODE>-font /path/to/arial.ttf</CODE>选项来在每次播放时指定一个TrueType字体文件/LI> - <LI>创建一个符号链接:<CODE>ln -s /path/to/arial.ttf ~/.mplayer/subfont.ttf</CODE></LI> - </UL> - </LI> -</UL> - -<P>如果你使用非TTF字体,把你下载的文件UNZIP到<CODE>~/.mplayer</CODE>或者<CODE>$PREFIX/share/mplayer</CODE>。 -然后将其中之一改名或者符合链接为<CODE>font</CODE>(例如:<CODE>ln -s ~/.mplayer/arial-24 ~/.mplayer/font</CODE>)。 -你现在应该在电影的左上角看见一个计时器(用"o"键可以关上它)。</P> - -<P>OSD有4种状态:(用'o'键切换)</P> -<UL> - <LI>音量条+进度条(默认) - <LI>音量条+进度条+计时器+搜索中显示文件位置百分比</LI> - <LI>音量条+进度条+计时器+媒体总时间</LI> - <LI>只有字幕</LI> -</UL> - -<P>你能通过在config文件中设置<CODE>osdlevel=</CODE>变量,或者用命令行选项<CODE>-osdlevel</CODE>来改变默认行为。</P> - -<H3><A NAME="menu">1.4.3 OSD菜单</A></H3> - -<P>MPlayer有一个完全用户自定义的OSD菜单接口。</P> - -<P><B>注意:</B>Preferences菜单目前不能使用!</P> - -<H4>安装</H4> - -<OL> - <LI>编译MPlayer时在<CODE>./configure</CODE>时加上<CODE>--enable-menu</CODE>参数</LI> - <LI>确保你安装了OSD字体</LI> - <LI>把<CODE>etc/menu.conf</CODE>复制到你的<CODE>.mplayer</CODE>目录</LI> - <LI>把<CODE>etc/input.conf</CODE>复制到你的<CODE>.mplayer</CODE>目录,或者系统通用的MPlayer配置目录(默认为:<CODE>/usr/local/etc/mplayer</CODE>)</LI> - <LI>检查并编辑<CODE>input.conf</CODE>来启用菜单控制键(在那里有描述).</LI> - <LI>像下面的例子这样启动MPlayer:<BR> - <CODE>$ mplayer -menu file.avi</CODE></LI> - <LI>按你所定义的菜单键</LI> -</OL> - - -<H2><A NAME="rtc">1.5 RTC</A></H2> - -在MPlayer中有三种计时方法。 -<UL> - <LI><B>使用老方法</B>,你不必做任何事情。它使用<CODE>usleep()</CODE>调整A/V同步,达到+/-10ms的准确性。 -但有些情况下同步应该调整的更精确。</LI> - <LI><B>新的定时器</B>代码使用PC的RTC(Real Time Clock)完成这个任务,因为它有精确到1ms的计时器。当它可用时会自动使用它, -但需要root权限,或一个<I>setuid root</I>的二进制的MPlayer或者一个适当配置的内核。 - <BR> - 如果你使用2.4.19pre8或以上的内核你能通过<CODE>/proc</CODE>文件系统来调整普通用户的最大RTC频率。使用下列命令来允许普通用户使用RTC: - <P> - <CODE>echo 1024 > /proc/sys/dev/rtc/max-user-freq</CODE> - </P> - 如果你没有这么新的内核,你也可以修改<CODE>drivers/char/rtc.c</CODE>中的一行并且重新编译你的内核。找到下面这一段 - <PRE> - * We don't really want Joe User enabling more - * than 64Hz of interrupts on a multi-user machine. - */ - if ((rtc_freq > 64) && (!capable(CAP_SYS_RESOURCE))) - </PRE> - 把64改成1024。当然你应该确实明白你做了什么。 - <BR> - 你能在状态行上看到新的计时器的效果。 - <BR> - 一些使用speedstep功能CPU的笔记本的BIOS的电源管理不能很好的与RTC协同工作。音频和视频可能会不同步。在给你的笔记本加电之前将外部电源接上似乎会有帮助。 -你总能用<CODE>-nortc</CODE>选项关闭RTC支持。一些硬件连接器(在ALi1541主板上使用非DMA的DVD光驱上)RTC定时器的使用会造成跳跃的播放。 -在这些情况下,推荐使用下面的方法。</LI> - <LI><B>第三个定时器代码</B>可以用<CODE>-softsleep</CODE>选项打开。它有RTC的效果,但是它不使用RTC。另一方面,它要使用更多的CPU。</LI> - </UL> -</LI> -</UL> - -<B>注意:</B><B>永远不要将setuid root的MPlayer安装在多用户系统上!</B>这显然会让任何人得到root权限。 - - -<H1><A NAME="features">2. 特性</A></H1> - - -<H2><A NAME="formats">2.1</A> <A HREF="formats.html">支持格式</A></H2> - - -<H2><A NAME="codecs">2.2</A> <A HREF="codecs.html">支持的编解码器</A></H2> - - -<H2><A NAME="output">2.3</A > <A HREF="video.html">视频</A> & <A HREF="sound.html">音频</A>输出模式</H2> - - -<H2><A NAME="tv"><B>2.4 电视输入</B></A></H2> - - -<P>这段将要如何能够<B>使用V4L兼容的电视选台器观看与截取</B>。电视相关的选项和键盘控制的描述请看man page。</P> - -<H3><A NAME="tv_compilation">2.4.1 编译</A></H3> - -<OL> - <LI>首先,你必须重新编译。<CODE>./configure</CODE>将自动检测v4l的内核头文件和<CODE>/dev/video*</CODE> - 输入的存在。如果他们存在,电视支持将被编译(检查<CODE>./configure</CODE>的输出)。</LI> - <LI>确保你的选台器能被别的Linux中的电视软件使用,例如xawtv。</LI> -</OL> - -<H3><A NAME="tv_tips">2.4.2 使用技巧</A></H3> - -可用选项的完整列表在manual page中。这里只是一些使用技巧: - -<UL> - <LI>使用<CODE>channels</CODE>选项。例如:<BR> - <CODE>-tv on:channels=26-MTV1,23-TV2</CODE><BR> - 解释:使用这个选项,只有26和23频道可以使用,当频道切换时会有一个显示频道名的精致的OSD文字。频道名中的空格必须用"_"代替。</LI> - <LI>选择完整的图像分辨率。输出图像的分辨率必须能够被16整除。</LI> - <LI>如果你截取视频的垂直分辨率比完整分辨率的一半还高(PAL制是288,NTSC是240),确保你打开非交错选项,否则你得到的电影将在 -高速运动的场景中发生扭曲,而且由于交错模式产生大量的细节消耗很多带宽,比特率控制器很可能无法获得指定的比特率。你能使用<CODE>-vf pp=DEINT_TYPE</CODE>打开非交错选项。一般来说<CODE>pp=lb</CODE>工作的不错,但这可能取决于个人的设定。查看manual中的别的 -非交错算法,都尝试一下。</LI> - <LI>切割到无用的空间。当你截取视频时,边界区域通常时黑的或者包含一些噪音。这同样不必要的消耗了很多带宽。更精确的说不是那些黑的 -区域本身而是在黑的和更亮的视频图像之间的形状变换消耗带宽,但现在这并不重要。在你开始截取之前,调整<CODE>crop</CODE>选项的参数 -使所有边缘的废物都被切割掉。同时,别忘了保持完整的输出图像的分辨率。</LI> - <LI>注意CPU的工作量。它在大多数时间不应该超过90%的界限。如果你有一个大的截取的缓冲区,MEncoder可以忍受几秒钟的过载但不能再多了 -最好把3D的OpenGL屏保和类似的东西关掉。</LI> - <LI>不要搞乱系统时钟。MEncoder使用系统时钟进行A/V同步。如果你调试系统时钟(特别是把时间往后调),MEncoder会产生混乱而你将会丢失帧。 -这将是一个重要的问题如果你挂在一个网络上并且运行着某种时间同步软件比如NTP,如果你希望可靠的截取,那么在你截取的过程中你必须把NTP关掉。</LI> - <LI>不要改变<CODE>outfmt</CODE>除非你知道你在干什么或者你的芯片/驱动确实不支持默认值(YV12色彩空间)。在老版本的MPlayer/MEncoder -中必须指定输出格式。这个问题在现在的发行版中应该被修正而不再需要指定<CODE>outfmt</CODE>,默认值适合大多数应用目的。例如,你用libavcodec把 -截取的内容编码成DivX并指定<CODE>outfmt=RGB24</CODE>希望提高截取图像的质量, 所截取的图像在其后的过程中将重新转换回YV12,所以你获得的唯一 -效果就是消耗了大量的CPU。 - </LI> - <LI>要指定I420色彩空间(<CODE>outfmt=i420</CODE>),由于与Intel Indeo video编解码器的fourcc冲突,你必须增加一个选项<CODE>-vc rawi420</CODE></LI> - <LI>有很多方法可以截取音频。你可以通过用外部电缆线将显卡和声卡的line-in连接起来,用声卡截取音频,或者使用bt878芯片内建的ADC。在后一种情况下, -你需要装载<B>btaudio</B>驱动。阅读<CODE>linux/Documentation/sound/btaudio</CODE>文件(在内核的源码树中,不是MPlayer的)来了解使用 -这个驱动的方法。</LI> - <LI>如果MEncoder无法打开音频设备,确保它们真的可用。可能是声音服务器比如arts(KDE)或者esd(GNOME)的问题。如果你有一块全双工的声卡(现在几乎 -任何像样的声卡都支持它),而你又在使用KDE,检查声音服务器设置菜单中的"全双工"选项。</LI> -</UL> - -<H3><A NAME="tv_examples"><B>2.4.3 示例</B></A></H3> - -<P>伪输出,到AAlib:)<BR> - <CODE> mplayer -tv on:driver=dummy:width=640:height=480 -vo aa</CODE><BR> - <BR> - 从标准的V4L输入<BR> - <CODE> mplayer -tv on:driver=v4l:width=640:height=480:outfmt=i420 -vc rawi420 -vo xv</CODE><BR> - <BR> - - 一个更复杂的例子。它使用MEncoder截取完整的PAL图像,切掉边缘的空白,输出非交错图像使用线性混合算法。音频使用LAME编解码器按固定比特率 -64kbps压缩。这个设置适合用来截取电影。<BR> - <CODE> - mencoder -tv on:driver=v4l:width=768:height=576 \<BR> - -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=900 \<BR> - -oac mp3lame -lameopts cbr:br=64 \<BR> - -vf crop=720:544:24:16,pp=lb -o output.avi - </CODE><BR> - - <BR> - 这个加上了重新缩放图像到384x288并把视频用高质量模式压缩到350kbps的比特率。vqmax选项放宽量化器从而允许视频压缩器在牺牲质量的前提下达到 -如此低的比特率。这可以用来截取长的电视连续剧,在那种用途下视频质量并不非常重要。<BR> - <CODE> - mencoder -tv on:driver=v4l:width=768:height=576 \<BR> - -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=350:vhq:vqmax=31:keyint=300 \<BR> - -oac mp3lame -lameopts cbr:br=48 \<BR> - -vf crop=720:540:24:18,pp=tn/lb,scale=384:288 -sws 1 -o output.avi - </CODE><BR> - - 也可以在<CODE>-tv</CODE>选项中设置一个较小的分辨率而忽略软件缩放选项但是上面的方法使用最大的可用信息而且对噪音更有抵抗力。bt8x8芯片 -由于硬件的限制只能在水平方向上作点平均。</P> - - -<H2><A NAME="edl">2.5 编辑决定列表(EDL)</A></H2> - -<P>编辑决定列表(EDL)系统允许你在播放的时候自动在视频的一部分跳过或者静音,基于一个电影相关的EDL配置文件。</P> - -<P>这对那些想用"家庭友好"模式观赏电影的人有用。你可以根据你个人的设定从一部电影里切掉任何暴力,亵渎,Jar-Jar Binks ..的内容。 -除了这之外,它还有别的用途,比如自动跳过你正在观看的视频文件中的广告。</P> - -<P>EDL文件的格式相当简陋。当EDL达到一定的成熟度的时候,可能会使用一个基于XML的文件格式(保持对原来的EDL格式的向下兼容)。</P> - -<P>在目前的EDL实现中最大的EDL输入限制为1000。如果你碰巧需要更多,修改<CODE>edl.h</CODE>文件中的<CODE>#define MAX_EDL_ENTRIES</CODE>。</P> - -<H3><A NAME="edl_using">2.5.1 使用EDL文件</A></H3> - -<P>在你运行MPlayer的时候加上<CODE>-edl <filename></CODE>参数,filename是你希望应用在视频上的EDL文件的文件名。</P> - -<H3><A NAME="edl_making">2.5.2 制作EDL文件</A></H3> - -<P>目前EDL文件的格式为:</P> - -<CODE>[begin second] [end second] [action]</CODE> - -<P>seconds是浮点数而action可以是<CODE>0</CODE>代表跳过或者<CODE>1</CODE>代表静音。例如:</P> - -<PRE> -5.3 7.1 0 -15 16.7 1 -420 422 0 -</PRE> - -<P>这将跳过视频的5.3秒到7.1秒的部分,然后在15秒时静音,在16.7秒处取消静音跳过视频的从420秒到422秒的部分。这些动作将在播放计时器达到 -文件中指定的时间时被执行。</P> - -<P>要创建一个用来工作的EDL文件,使用<CODE>-edlout <filename></CODE>选项,在播放过程中,当你想标记将前两秒跳过时,按<CODE>i</CODE>。 -一个相应的输入将写入文件。你可以回头调整生成的EDL文件。</P> - -<P><B><A NAME="usage">3. 用法</A></B></P> - -<P><B><A NAME="command_line">3.1 命令行</A></B></P> - -<P>MPlayer使用一个复杂playtree格式。它包括写在最前面作为全局设置的选项(例如<CODE>mplayer -vfm 5</CODE>),和写在文件名之后, -仅仅作用于给定的文件名或者URL或者随便什么的选项(例如<CODE>mplayer -vfm 5 movie1.avi movie2.avi -vfm 4</CODE>)。<BR> -你能使用{和}给文件名与URL分组。它对-loop选项很有用:<CODE>mplayer { 1.avi -loop 2 2.avi } -loop 3</CODE>命令将按以下顺序播放文件: -1 1 2 1 1 2 1 1 2<BR> -</P> - -<TABLE BORDER=0> -<TR><TD> </TD><TD>单一文件</TD><TD> </TD><TD><CODE>mplayer [options] [path/]filename</CODE></TD></TR> - <TR><TD></TD><TD>多个文件</TD><TD></TD><TD><CODE>mplayer [default options] [path/]filename1 [options for filename1] filename2 [options for filename2] ...</CODE></TD></TR> - <TR><TD></TD><TD>VCD</TD><TD></TD><TD><CODE>mplayer [options] vcd://trackno [-cdrom-device /dev/cdrom]</CODE></TD></TR> - <TR><TD></TD><TD>DVD</TD><TD></TD><TD><CODE>mplayer [options] dvd://titleno [-dvd-device /dev/dvd]</CODE></TD></TR> - <TR><TD></TD><TD>WWW</TD><TD></TD><TD><CODE>mplayer [options] http://site.com/file.asf(也可以使用playlist)</CODE></TD></TR> - <TR><TD></TD><TD>RTSP</TD><TD></TD><TD><CODE>mplayer [options] rtsp://server.example.com/streamName</CODE></TD></TR> -</TABLE> - -<P> - 最新版本的MPlayer也可以象Xine一样接受URL风格的VCD和DVD轨道: <CODE>mplayer dvd://1</CODE>或者<CODE>mplayer vcd://1</CODE></P> - -<PRE> - mplayer -vo x11 /mnt/Films/Contact/contact2.mpg - mplayer vcd://2 - mplayer -afm 3 /mnt/DVDtrailers/alien4.vob - mplayer dvd://1 -dvd-device /dev/hdc - mplayer -abs 65536 -delay -0.4 -nobps ~/movies/test.avi -</PRE> - -<H2><A NAME="control">3.2 控制</A></H2> - -<P>MPlayer有一个完全可配置的,命令驱动的控制层使你可以键盘,鼠标,游戏杆或遥控器(使用LIRC)控制MPlayer。完整的键盘控制列表参见man page。</P> - -<H3><A NAME="controls_configuration">3.2.1 控制键的配置方法</A></H3> - -<P>MPlayer允许你使用一个简单的config文件把任何键或按钮绑定为任何一个MPlayer控制命令。 -句法是键名后加命令。缺省config文件是<CODE>$HOME/.mplayer/input.conf</CODE>但是<CODE>-input</CODE> conf -选项可以重新指定(相对路径是相对于<CODE>$HOME/.mplayer</CODE>的)。 - -<P>例子:</P> - -<PRE> -## -## MPlayer input control file -## - -RIGHT seek +10 -LEFT seek -10 -- audio_delay 0.100 -+ audio_delay -0.100 -q quit -> pt_step 1 -< pt_step -1 -ENTER pt_step 1 1 -</PRE> - -<H4><A NAME="key_names">3.2.2.1 键名</A></H4> - -<P>运行<CODE>mplayer -input keylist</CODE>你将得到一个完整的列表</P> - -<H4>键盘:</H4> - -<UL> - <LI>Any printable character</LI> - <LI>SPACE</LI> - <LI>ENTER</LI> - <LI>TAB</LI> - <LI>CTRL</LI> - <LI>BS</LI> - <LI>DEL</LI> - <LI>INS</LI> - <LI>HOME</LI> - <LI>END</LI> - <LI>PGUP</LI> - <LI>PGDWN</LI> - <LI>ESC</LI> - <LI>RIGHT</LI> - <LI>LEFT</LI> - <LI>UP</LI> - <LI>DOWN</LI> -</UL> - -<H4>鼠标(只在X下支持):</H4> - -<UL> - <LI>MOUSE_BTN0 (左键)</LI> - <LI>MOUSE_BTN1 (右键)</LI> - <LI>MOUSE_BTN2 (中键)</LI> - <LI>MOUSE_BTN3 (滚轮)</LI> - <LI>MOUSE_BTN4 (滚轮)</LI> - <LI>...</LI> - <LI>MOUSE_BTN9</LI> -</UL> - -<H4>游戏杆(编译时必须打开对游戏杆的支持)</H4> - -<UL> - <LI>JOY_RIGHT or JOY_AXIS0_PLUS</LI> - <LI>JOY_LEFT or JOY_AXIS0_MINUS</LI> - <LI>JOY_UP or JOY_AXIS1_MINUS</LI> - <LI>JOY_DOWN or JOY_AXIS1_PLUS</LI> - <LI>JOY_AXIS2_PLUS</LI> - <LI>JOY_AXIS2_MINUS</LI> - <LI>....</LI> - <LI>JOY_AXIS9_PLUS</LI> - <LI>JOY_AXIS9_MINUS</LI> -</UL> - - -<H4><A NAME="commands">3.2.2.2 控制命令</A></H4> - -<P>通过运行"mplayer -input cmdlist"你可以得到一个完整的已知命令的列表</P> -<UL> - <LI><B>seek</B> (int) val [(int) type=0] - <P>搜索电影中的某处<BR> - Type 0 是以+/-val秒搜索。<BR> - Type 1 是以电影的val%搜索</P></LI> - <LI><B>audio_delay</B> (float) val - <P>音频延迟val秒</P></LI> - <LI><B>quit</B> - <P>退出MPlayer</P></LI> - <LI><B>pause</B> - <P>暂停/继续playback</P></LI> - <LI><B>grap_frames</B> - <P>有人知道?</P></LI> - <LI><B>pt_step</B> (int) val [(int) force=0] - <P>选择playtree中的下一个/上一个输入。Val的符号决定方向.<BR> - 如果在要求的方向上没有其他可用entry,除非force非0,否则不会做任何动作。</P></LI> - <LI><B>pt_up_step</B> (int) val [(int) force=0] - <P>类似pt_step但它跳转到上一级列表的下一个/上一个。用来跳出playtree的内部循环。</P></LI> - <LI><B>alt_src_step</B> (int) val - <P>当一种以上的source可用时选择下一个/上一个(只有asx播放列表支持).</P></LI> - <LI><B>sub_delay</B> (float) val [(int) abs=0] - <P>字幕延迟+/-val秒或当abs非0时跳到val秒。</P></LI> - <LI><B>osd</B> [(int) level=-1] - <P>切换osd模式或当level>0时把它设为level。</P></LI> - <LI><B>volume</B> (int) dir - <P>增加/减少音量</P></LI> - <LI><B>contrast</B> (int) val [(int) abs=0]</LI> - <LI><B>brightness</B> (int) val [(int) abs=0]</LI> - <LI><B>hue</B> (int) val [(int) abs=0]</LI> - <LI><B>saturation</B> (int) val [(int) abs=0] - <P>设置/调整视频参数。Val范围从-100到100。</P></LI> - <LI><B>frame_drop</B> [(int) type=-1] - <P>切换/设置frame dropping模式。</P></LI> - <LI><B>sub_visibility</B> - <P>切换字幕是否可见。</P></LI> - <LI><B>sub_pos</B> (int) val - <P>调整字幕位置。</P></LI> - <LI><B>vobsub_lang</B> - <P>改变VobSub字幕的语言。</P></LI> - <LI><B>vo_fullscreen</B> - <P>切换到全屏</P></LI> - <LI><B>tv_step_channel</B> (int) dir - <P>选择下一个/上一个tv频道。</P></LI> - <LI><B>tv_step_norm</B> - <P>切换TV制式。</P></LI> - <LI><B>tv_step_chanlist</B> - <P>切换频道列表。</P></LI> - <LI><B>gui_loadfile</B></LI> - <LI><B>gui_loadsubtitle</B></LI> - <LI><B>gui_about</B></LI> - <LI><B>gui_play</B></LI> - <LI><B>gui_stop</B></LI> - <LI><B>gui_playlist</B></LI> - <LI><B>gui_preferences</B></LI> - <LI><B>gui_skinbrowser</B> - <P>GUI的行为</P></LI> -</UL> - -<H3><A NAME="lirc">3.2.3 用LIRC控制</A></H3> - -<P>Linux红外遥控 -- 使用一个容易制作的home-brewn红外线接收器,(几乎)任意一个的遥控器然后就可以用它来控制你的Linux box了! -更多内容见<A HREF="http://www.lirc.org">www.lirc.org</A>。</P> - -<P>如果你已安装了lirc-package,configure将自动检测到它。如果一切顺利,MPlayer在启动时将显示 -"Setting up lirc support..."之类的信息。如果发生错误它将会显示。如果它不显示关于LIRC的任何信息则对LIRC的支持没有编译。就是这样:-)</P> - -<P>MPlayer的程序名是 -- 嗯,让我想想看 -- 'mplayer'。你能使用任何mplayer命令甚至传递超过一种命令只要用\n分开他们。 -不要忘记当有意义的时候(搜索,音量等等),在.lircrc中开启repeat标记。这是我的.lircrc的摘录:</P> - -<PRE> -begin - button = VOLUME_PLUS - prog = mplayer - config = volume 1 - repeat = 1 -end - -begin - button = VOLUME_MINUS - prog = mplayer - config = volume -1 - repeat = 1 -end - -begin - button = CD_PLAY - prog = mplayer - config = pause -end - -begin - button = CD_STOP - prog = mplayer - config = seek 0 1\npause -end -</PRE> - -<P>如果你不喜欢lirc-config文件的标准位置(~/.lircrc)使用-lircconf <filename>选项指定别的文件。</P> - - -<H3><A NAME="slave">3.2.4 Slave方式</A></H3> - -<P>Slave方式把允许你为MPlayer建立简单的frontend。当它开启(用<CODE>-slave</CODE>选项)时MPlayer -将从stdin读取用new line(\n)分开的命令。</P> - - -<H3><A NAME="streaming">3.3 网络或管道的流媒体</A></H3> - -<P>MPlayer支持通过HTTP, MMS或者RTSP/RTP协议播放网络上的文件。</P> - -<P>只要直接把URL地址加到命令行中就可以进行播放。MPlayer也支持http_proxy环境变量, -并且在可能的情况下使用代理。也可以强行指定使用代理:</P> - -<P><CODE>mplayer http_proxy://proxy.micorsops.com:3128/http://micorsops.com:80/stream.asf</CODE></P> - -<P>MPlayer能从stdin(不称为管道)输入。例如这样能从FTP上播放:</P> -<P><CODE> wget ftp://micorsops.com/something.avi -O - | mplayer -</CODE></P> - -<P>注意:当使用网络播放功能时推荐打开cache功能:</P> - -<P><CODE> wget ftp://micorsops.com/something.avi -O - | mplayer -cache 8192 -</CODE></P> - - -<H1><A NAME="faq"></A>4. <A HREF="faq.html">FAQ部分</A></H1> - - -<H1><A NAME="cd/dvd"></A>5. <A HREF="cd-dvd.html">CD与DVD部分</A></H1> - - -<H1><A NAME="ports">6. 移植</A></H1> - - -<H2><A NAME="linux">6.1 Linux</A></H2> - -<P>主要的开发平台是x86上的Linux,尽管MPlayer可以移植到很多别的Linux上。MPlayer的二进制包在很多地方可以获得。但是<B>我们不对任何 -一个负责</B>,有问题去找这些包的制作者,别找我们。</P> - -<H3><A NAME="debian">6.1.1 Debian安装包的制作</A></H3> - -<P>为了制作Debian安装包,在MPlayer的代码的目录下面运行下列命令:</P> - -<PRE> - fakeroot debian/rules binary -</PRE> - -<P>成为root后你可以像正常情况下一样安装<CODE>.deb</CODE>包:</P> - -<PRE> - dpkg -i ../mplayer_0.90-1_i386.deb as root. -</PRE> - -<P>Christian Marillat一直在制作非官方的Debian MPlayer, MEncoder和字体的安装包,你可以从他的<A -HREF="http://marillat.free.fr/">主页</A>(apt-get)获得。</P> - -<H3><A NAME="rpm">6.1.2 RPM安装包的制作</A></H3> - -<P>Dominik Mierzejewski制作并维护MPlayer的官方的Red Hat RPM安装包。他制作了播放器,GUI,字体,skin和一些驱动还有编解码器的安装包。所有这些都可以从他的<A -HREF="http://www.piorunek.pl/~dominik/linux/pkgs/mplayer/">主页</A>获得。</P> - -<P>Mandrake的安装包可以在<A HREF="http://plf.zarb.org/">P.L.F</A>获得,SuSE在他们的发行版中包括了 -一个有缺陷的MPlayer版本。如果你想获得全部的功能,你必须从源代码编译。</P> - - -<H3><A NAME="arm">6.1.3 ARM</A></H3> - -<P>MPlayer可以工作在使用ARM CPU的PDAs例如Sharp Zaurus, Compaq Ipaq上。最简单的获得MPlayer的方法从<A -HREF="http://www.openzaurus.org">Openzaurus</A>的安装包服务器下载。如果你像自己编译它,你应该查看OpenZaurus发行版的buildroot下的<A -HREF="http://openzaurus.bkbits.net:8080/buildroot/src/packages/mplayer?nav=index.html|src/.|src/packages">mplayer</A> -目录和<A -HREF="http://openzaurus.bkbits.net:8080/buildroot/src/packages/libavcodec?nav=index.html|src/.|src/packages">libavcodec</A>。 -那里总有最新的用来编译一个代libavcodec的CVS的MPlayer的Makfile和补丁。 - <BR>如果你需要一个GUI前端,你可以使用xmms-embedded。</P> - -<H2><A NAME="bsd">6.2 *BSD</A></H2> - -<P>MPlayer可以运行在FreeBSD, OpenBSD, NetBSD, BSD/OS和Darwin上。有ports/pkgsrc/fink等版本的MPlayer可供使用,比直接使用我们的 -源代码要容易。</P> - -<P>编译MPlayer你需要GNU make(gmake - 本地的BSD的make不能正常工作)和一个比较新的binutils。</P> - -<P>如果MPlayer报告找不到<CODE>/dev/cdrom</CODE>或者<CODE>/dev/dvd</CODE>,创建一个适当的符号链接:<BR> - <CODE>ln -s /dev/(your_cdrom_device) /dev/cdrom</CODE>.</P> - -<P>要在MPlayer中使用Win32 DLLs你需要使用"<CODE>option USER_LDT</CODE>"重新编译内核(除非你用的是FreeBSD -CURRENT,其中这一项是默认的)。</P> - -<H3><A NAME="freebsd">6.2.1 FreeBSD </A></H3> - -如果你的CPU有SSE,使用"options CPU_ENABLE_SSE"选项重新编译内核来使用它(需要FreeBSD-STABLE,或者使用内核补丁)。</P> - -<H3><A NAME="openbsd">6.2.2 OpenBSD</A></H3> - -<P>因为gas的版本不同(relocation vs mmx)的限制,你需要分两步编译: 首先确保non-native的汇编程序当前在PATH中并运行<CODE>gmake -k</CODE>, -然后在确保使用native版本情况下运行<CODE>gmake</CODE>。</P> - -<H2><A NAME="solaris">6.3 Solaris</A></H2> - -<P>MPlayer在Solaris 2.6或者更新的系统上应该能够正常运行。</P> - -<P>在<B>UltraSPARC</B>上,MPlayer利用他们的<B>VIS</B>扩展(相当于MMX)的优势,目前只应用于<I>libmpeg2</I>, -<I>libvo</I>以及<I>libavcodec </I>,但mp3lib没有。你能在400MHz CPU上观看VOB文件。你需要安装<A -HREF="http://www.sun.com/sparc/vis/mediaLib.html">mLib</A>。</P> - -<P>为编译它你需要GNU make(gmake,/opt/sfw/gmake),native的Solaris make不能正常工作。你用Solaris的make代替GNU make时的典型的错误信息为:</P> - -<PRE> - % /usr/ccs/bin/make - make: Fatal error in reader: Makefile, line 25: Unexpected end of line seen -</PRE> - -<P>在Solaris SPARC上,你需要GNU C/C++编译器;GNU C/C++编译器是否设置使用GNU汇编程序没有什么关系。</P> - -<P>在Solaris x86上,你需要GNU汇编程序和GNU C/C++编译器,设置使用GNU的汇编程序!在x86平台上的mplayer代码大量使用MMX,SSE和3DNOW! -指令集,使用Sun的汇编程序<CODE>/usr/ccs/bin/as</CODE>不能编译通过。</P> - -<P>configure脚本将试图查找你的"gcc"命令使用的汇编程序(如果自动检测失败,使用"--as=/wherever/you/have/installed/gnu-as" -选项告诉configure脚本你的系统中GNU的"as"在哪里)。</P> - -<P>在Solaris x86系统上使用没有GNU汇编程序的GCC时configure的出错信息为:</P> - -<PRE> - % configure - ... - Checking assembler (/usr/ccs/bin/as) ... , failed - Please upgrade(downgrade) binutils to 2.10.1... -</PRE> - -<P>(解决方法:安装并且使用配置了"--with-as=gas"的gcc)</P> - -<P>当不使用GNU as的GNU C编译程序时的典型出错信息是:</P> - -<PRE> - % gmake - ... - gcc -c -Iloader -Ilibvo -O4 -march=i686 -mcpu=i686 -pipe -ffast-math - -fomit-frame-pointer -I/usr/local/include -o mplayer.o mplayer.c - Assembler: mplayer.c - "(stdin)", line 3567 : Illegal mnemonic - "(stdin)", line 3567 : Syntax error - ... more "Illegal mnemonic" and "Syntax error" errors ... -</PRE> - -<P>因为Solaris8 x86的两个bug,不能可靠地播放容量>4GB的DVD:</P> - -<UL> - <LI>The sd(7D) driver on Solaris 8 x86 driver has bug when accessing a - disk block >4GB on a device using a logical blocksize != DEV_BSIZE - (i.e. CD-ROM and DVD media). Due to a 32bit int overflow, a disk - address modulo 4GB is accessed. - (<A HREF="http://groups.yahoo.com/group/solarisonintel/message/22516">http://groups.yahoo.com/group/solarisonintel/message/22516</A>) - </LI> - <LI>The similar bug is present in the hsfs(7FS) filesystem code (aka - ISO9660), hsfs currently does not support partitions/disks >4GB, - all data is accessed modulo 4GB - (<A HREF="http://groups.yahoo.com/group/solarisonintel/message/22592">http://groups.yahoo.com/group/solarisonintel/message/22592</A>) - <P> - The hsfs problem can be fixed by installing patch 109764-04 (sparc) / - 109765-04 (x86). - </P> - </LI> -</UL> - -<P>在使用UltraSPARC CPU的Solaris上,对有些耗时的操作使用CPU的VIS指令能获得额外的速度提升。 -在MPlayer中通过Sun的<A HREF="http://www.sun.com/sparc/vis/mediaLib.html">mediaLib</A>中的函数使用VIS加速功能。</P> - -<P>mediaLib的VIS加速功能用于mpeg2视频解码和视频输出驱动的颜色转换。</P> - - -<H2><A NAME="sgi">6.4 Silicon Graphics / IRIX</A></H2> - -<P>你可以安装GNU的install程序,并且(如果你没有把它放在你的系统路径中)指定它的位置:</P> - -<PRE> - ./configure --install-path=PATH -</PRE> - -<P>或者你可以使用默认的IRIX 6.5提供的install,那你就必须手动修改Makefile文件,把下面两行:</P> - -<PRE> - $(INSTALL) -c -m 644 DOCS/mplayer.1 $(MANDIR)/man1/mplayer.1 - - $(INSTALL) -c -m 644 etc/codecs.conf $(CONFDIR)/codecs.conf -</PRE> - -<P>改成:</P> - -<PRE> - $(INSTALL) -m 644 mplayer.1 $(MANDIR)/man1/ - - $(INSTALL) -m 644 codecs.conf $(CONFDIR)/ -</PRE> - -<P>然后运行(在MPlayer的源代码目录中):</P> - -<PRE> - cp DOCS/mplayer.1 . ; cp etc/codecs.conf . -</PRE> - -<P>然后继续编译和安装。</P> - - -<H2><A NAME="qnx">6.5 QNX</A></H2> - -<P>能工作。你需要下载SDL for QNX并安装它。然后使用<CODE>-vo sdl:photon</CODE>和<CODE>-ao sdl:nto</CODE> -选项运行MPlayer,速度应该很快。</P> - -<P><CODE>-vo x11</CODE>输出将比Linux更加缓慢,因为QNX只有一个十分缓慢的的X<I>仿真</I>。使用SDL。</P> - - -<H2><A NAME="cygwin"></A>6.6 Cygwin</H2> - -<P>Cygwin的移植仍然很不成熟。目前还不支持Win32 DLLs和OpenGL。SDL据说会扭曲声音和图像或者在某些系统上导致崩溃。<A -HREF="../tech/patches.txt">补丁</A>总是欢迎的。最好的效果是使用本地的DirectX视频输出驱动(<CODE>-vo directx</CODE>) -和本地的Windows waveout音频驱动(<CODE>-ao win32</CODE>)。你应该查阅<A -HREF="http://mplayerhq.hu/mailman/listinfo/mplayer-cygwin/">mplayer-cygwin</A>邮件列表来获得帮助和最新信息。</P> - -<P>你必须到MPlayer的目录下,拷贝或者symlink<CODE>etc/cygwin-inttypes.h</CODE>到<CODE>/usr/include/inttypes.h</CODE>来使MPlayer顺利编译。</P> - -<P>为了获得本地的DirectX视频,下载<A -HREF="http://www.videolan.org/vlc/dx7headers.tgz">DirectX 7头文件</A>,把它们解压到<CODE>/usr/include/</CODE> -或者<CODE>/usr/local/include/</CODE>下然后重新编译。如果图像发生扭曲,用<CODE>-vo directx:noaccel</CODE> -把硬件加速关掉试试。</P> - -<P>让SDL在Cygwin下工作的方法和文件可以在<A HREF="http://www.libsdl.org/extras/win32/cygwin/">libsdl的站点</A>找到。</P> -<P>你可以通过播放Windows显示的VCD上的<CODE>.DAT</CODE>或者<CODE>.MPG</CODE>文件来播放VCD,这样使他工作(改成你 -的CD-ROM驱动器的盘符):</P> - -<P><CODE>mplayer d:/mpegav/avseq01.dat</CODE></P> - -<P><CODE>mplayer /cygdrive/d/MPEG2/AVSEQ01.MPG</CODE></P> - -<P>DVD同样可以,用下面的命令DVD设备设置成你的CD-ROM驱动器:</P> - -<P><CODE>mplayer dvd://<title> -dvd-device '\\.\d:'</CODE></P> - -<P>QuickTime DLL据说也能工作。用<CODE>--enable-qtx-codecs</CODE>编译并把编解码器放到默认的Windows DLL位 -置,<CODE>C:\WINNT\system32</CODE>或者<CODE>C:\Windows\system</CODE>取决于你的Windows的版本。</P> - -<H1><A NAME="encoding">7.</A> <A HREF="encoding.html">用MEncoder编码</A></H1> - - -<H1><A NAME="mailing_lists">附录A -- 邮件列表</A></H1> - -<P>MPlayer有一些公开的邮件列表。除非特别说明否则这些列表的语言是<B>英语</B>。请不要用别的语言或者HTML邮件格式发送 -消息!一条消息的大小限制是80k。如果你有更大的东西把它放在可以下载的地方。点击链接就可以订阅。在邮件列表上使用与 -与usenet上相同的书写和引用规则。请遵守他们,它使阅读你的邮件的人的生活轻松的多。如果你不知道请阅读<A -HREF="http://learn.to/edit_messages">编辑消息HOWTO</A>或者(如果你很着急)<A -HREF="http://www.xs4all.nl/~hanb/documents/quotingguide.html">引用HOWTO</A>。</P> - -<UL> - <LI>MPlayer通告列表:<A - HREF="http://mplayerhq.hu/mailman/listinfo/mplayer-announce">http://mplayerhq.hu/mailman/listinfo/mplayer-announce</A><BR> - MPlayer发布通告的邮件列表。如果你想获得新特性的通告在此订阅。</LI> - <LI>MPlayer开发者列表:<A - HREF="http://mplayerhq.hu/mailman/listinfo/mplayer-dev-eng">http://mplayerhq.hu/mailman/listinfo/mplayer-dev-eng</A><BR> -<P>这个列表是关于mplayer开发的! 谈论接口与API的变化,新的库,代码优化,configure修改,另外补丁也应发送到这里。不要在这里发送bug报告, -用户问题,特性要求,吵架!这张列表应该保持低流量。</P></LI> - <LI>MPlayer用户列表:<A - HREF="http://mplayerhq.hu/mailman/listinfo/mplayer-users">http://mplayerhq.hu/mailman/listinfo/mplayer-users</A><BR> - <UL> - <LI>在这里发送bug报告,(在阅读了<A HREF="#known_bugs">已知Bugs</A>一节和<A HREF="bugreports.html">报告bug部分</A>之后)</LI> - <LI>在这里发送特性要求(在阅读整个文件之后)</LI> - <LI>在这里发送用户问题(在阅读整个文件之后)</LI> - </UL> - </LI> - <LI>MPlayer匈牙利用户列表:<A - HREF="http://mplayerhq.hu/mailman/listinfo/mplayer-felhasznalok">http://mplayerhq.hu/mailman/listinfo/mplayer-felhasznalok</A><BR> - <UL> - <LI>匈牙利语的列表</LI> - <LI>主题?让我们看看...迄今为止主要是吵架和RTFM问题:(</LI> - </UL> - </LI> - <LI>MPlayer & Matrox G200/G400/G450/G550用户:<A - HREF="http://mplayerhq.hu/mailman/listinfo/mplayer-matrox">http://mplayerhq.hu/mailman/listinfo/mplayer-matrox</A><BR> - 在这里发送Matrox相关的问题 - <UL> - <LI>关于mga_vid的事情</LI> - <LI>Matrox的官方的beta版驱动(对于X 4.x.x )</LI> - <LI>还有关于matroxfb电视输出的东东。</LI> - </UL> - </LI> - <LI>MPlayer & DVB卡用户:<A - HREF="http://mplayerhq.hu/mailman/listinfo/mplayer-dvb">http://mplayerhq.hu/mailman/listinfo/mplayer-dvb</A><BR> - 与被称为DVB的硬件译码器卡有关的事情。(不是DXR3!)</P> - </LI> - <LI>MPlayer CVS-log:<A - HREF="http://mplayerhq.hu/mailman/listinfo/mplayer-cvslog">http://mplayerhq.hu/mailman/listinfo/mplayer-cvslog</A><BR> - <P>在这里只能询问CVS的变化。(如果你不理解为什么要做这样的改动或者你有更好的修正或者你注意到在已经提交的补丁中可能存在的bug或问题)确定你要找的开发者阅读这张列表!</P> - </LI> - <LI>MPlayer Cygwin移植邮件列表:<A - HREF="http://mplayerhq.hu/mailman/listinfo/mplayer-cygwin">http://mplayerhq.hu/mailman/listinfo/mplayer-cygwin</A><BR> - 讨论MPlayer的Cygwin移植的邮件列表。 - </LI> - <LI>MPlayer OS/2移植邮件列表:<A - HREF="http://mplayerhq.hu/mailman/listinfo/mplayer-os2">http://mplayerhq.hu/mailman/listinfo/mplayer-os2</A><BR> - 讨论MPlayer的OS/2移植的邮件列表。 - </LI> - <LI>MPlayer Weekly News的编辑和翻译的列表:<A - HREF="http://mplayerhq.hu/mailman/listinfo/mplayer-mwn">http://mplayerhq.hu/mailman/listinfo/mplayer-mwn</A><BR> - 讨论Weekly News发布的邮件列表。. - </LI> -</UL> - -<P><B>注意:</B><A HREF="http://www.mplayerhq.hu/cgi-bin/htsearch">http://www.mplayerhq.hu/cgi-bin/htsearch</A>有可供检索的邮件列表文档。 - - -<H1><A NAME="bug_reports">附录B</A> -- <A HREF="bugreports.html">如何报告bug</A></H1> - -<H1><A NAME="known_bugs">附录C -- 已知Bugs</A></H1> - -<P>特殊的系统或CPU相关的bug或问题:</P> -<UL> - -<LI>P3上使用2.2.x内核出现SIGILL(signal 4):<BR> - 问题:2.2.x内核没有适当的(能正常工作的)SSE支持<BR> - 解决:把内核升级到2.4.x<BR> - 绕过方法:<CODE>./configure --disable-sse</CODE></LI> - -<LI>一般的SIGILL(signal 4):<BR> - 问题:你在不同的机器中编译和运行mplayer(例如在P3上编译在Celeron上跑)<BR> - 解决:在你将使用的的机器上编译MPlayer!<BR> - 绕过方法:<CODE>./configure --disable-sse</CODE>等等选项</LI> - -<LI>运行MEncoder时出现"Internal buffer inconsistency":<BR> - 问题:当用gcc 2.96或者3.x编译lame < 3.90时的已知问题。<BR> - 解决:使用lame > =3.90。<BR> - 绕过方法:以gcc 2.95.x编译lame并且卸载任何已经安装的lame包,他们可能是用gcc 2.96编译的。</LI> - -<LI>在PPC上MP2/MP3的声音混乱:<BR> - 问题:PPC平台上的已知的GCC误编译的bug,目前没有修正。<BR> - 绕过方法:使用FFmpeg的(较慢的)MP1/MP2/MP3译码器(<CODE>-ac ffmpeg</CODE>)</LI> - -<LI>当缩放+编码时,libmpeg2的sig11:<BR> - 问题: 已知的GCC 2.95.2的MMXbug,升级到2.95.3。</LI> -</UL> - -<P>各种各样A-V同步和其它音频问题:</P> - -一般的音频延迟或者急跳声音(对所有或者大部分文件存在): -<UL> - <LI>最普遍的: buggy的音频驱动! -- 试试使用不同的驱动,用-ao oss试试ALSA 0.9的OSS仿真,也试试-ao sdl,有时它有帮助。 -如果你的文件用-nosound播放正常,你就能确定这是声卡(驱动)的问题。</LI> - <LI>音频缓冲的问题(缓冲大小检测错误)<BR> - 绕过方法:mplayer -abs选项</LI> - <LI>采样率的问题-- 也许你的声卡不支持你的文件使用的采样率 -- 试试 resampling插件(- aop)</LI> - <LI>机器太慢(CPU或VGA)<BR> - 用-vo null试试看,如果它播放正常,那么你的VGA显卡/驱动太慢了<BR> - 绕过方法:买一块更快的显卡或阅读这篇文档关于如何加速的内容<BR> - 也试试-framedrop</LI> -</UL> - -特定的某一个或一些文件的音频延迟/不同步: -<UL> - <LI>损坏的文件<BR> - 绕过方法: - <UL> - <LI>-ni或-nobps选项(对于非交错的或坏的文件)<BR> - 以及/或者</LI> - <LI>-mc 0(对带有糟糕的交错的VBR音频的文件是需要的)<BR> - 以及/或者</LI> - <LI>-delay选项或者+/-键在播放时调整延迟时间</LI> - </UL> - 如果没有一个方法有效,请upload这些文件,我们将检查(和修正)。 - </LI> - <LI>你的声卡不支持48kHz playback<BR> - 绕过方法:买个更好的声卡...或者尝试减少10%的fps(对30fps的电影使用-fps 27)或者使用resampler插件</LI> - <LI>机器太慢<BR> - (如果A-V不是在0附近,状态行的最后一个数字不断增加)<BR> - 绕过方法:-framedrop</LI> -</UL> - -完全没有声音: -<UL> - <LI>你的文件使用不支持的音频codec<BR> - 绕过方法:读取文档并帮助我们添加对它的支持</LI> -</UL> - -完全没有图画(全灰/全绿窗口): -<UL> - <LI>你的文件使用不支持的视频codec<BR> - 绕过方法:读取文档并帮助我们添加对它的支持</LI> - <LI>自动选择的codec不能解码文件,试试用-vc或-vfm选项使用其他译码器</LI> - <LI>你试图用OpenDivX或XviD(-vc odivx)译码器播放DivX 3.x格式的文件 -- 安装Divx4Linux并且重新编译播放器</LI> -</UL> - -<P>视频输出问题:</P> - -<P>首先注意: -fs -vm和-zoom选项只是推荐,(目前)不是所有驱动器都支持。因此,如果它不起作用那不是bug。 -只有少数驱动支持缩放,对x11或dga不要指望这个。</P> - -<P>OSD与字幕闪烁:<BR> - -- x11驱动器: 抱歉,它现在不能被修正<BR> - -- xv驱动器: 使用-double选项</P> - -<P>使用mga_vid时的绿色图象(-vo mga/-vo xmga):<BR> - -- mga-vid没有正确检测你的显卡的显存大小,使用mga_ram_size选项重新载入</P> - - -<H1><A NAME="skin">附录D</A> -- <A HREF="skin.html">MPlayer skin的格式</A></H1> - - - -<H1><A NAME="flame_wars">附录E</A> -- <A HREF="users_against_developers.html">开发者的眼泪</A></H1> - -<H1><A NAME="patches">附录F</A> -- <A HREF="../tech/patches.txt">如何发送补丁</A></H1> - -</BODY> -</HTML>
--- a/DOCS/zh/encoding.html Mon Dec 18 15:15:21 2006 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,240 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> -<HTML> - -<HEAD> - <TITLE>编码 -- MEncoder -- Linux下的电影编码器</TITLE> - <LINK REL="stylesheet" TYPE="text/css" HREF="../default.css"> - <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=gbk"> -</HEAD> - -<BODY> - - -<H1><A NAME="encoding">7. 用MEncoder编码</A></H1> - -<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> - - -<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删了)。在第二次编码中,将使用临时文件的比特率数据创建输出文件,最后产生的文件将有好得多的图象质量。如果这是你第一次听到这个, -你应该在网上查阅一些可用的指南。</P> - -<P>这个例子演示如何把DVD编码成为2-pass的MPEG-4("DIVX")的AVI。只需要两个命令:<BR> - <CODE> rm frameno.avi</CODE> -- 删掉这个文件,它可能来自以前的3-pass编码(它会干扰当前编码)<BR> - <CODE> 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></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>第一次编码: - <P><CODE>mencoder <file/DVD> -ovc frameno -oac mp3lame -lameopts vbr=3 -o frameno.avi</CODE></P> <P>将创建一个只有音频的avi文件,<B>只</B>包含要求的音频流。不要忘记<CODE>-lameopts</CODE>,如果需要的话设置它。如果你对一部长的电影进行编码, -MEncoder在这个pass结束之后,将对于650Mb,700Mb,和800Mb的目标大小打印推荐的比特率值。</P></LI> - <LI>第二次编码: - <P><CODE>mencoder <file/DVD> -oac copy - -ovc lavc -lavcopts vcodec=mpeg4:vpass=1:vbitrate=<bitrate></CODE></P> - <P>这是第一次视频编码。可以选择指定在上一步结束时MEncoder打印的视频比特率。</P></LI> - <LI>第三次pass: - <P><CODE>mencoder <file/DVD> -oac copy - -ovc lavc -lavcopts vcodec=mpeg4:vpass=2:vbitrate=<bitrate></CODE></P> - <P>这是第二次视频编码。指定跟上一次编码一样的比特率除非你真的知道自己在干什么。在这次编码中,用<CODE>frameno.avi</CODE> -中的音频将被插入到目的文件中..这就全部搞定了!</P></LI> -</OL> - -<H4>3-pass编码的例子:</H4> - -<P><CODE> rm frameno.avi</CODE> -- 移去这个文件,它可能来自以前的3-pass编码(它会干扰当前编码)<BR> - <CODE> mencoder dvd://2 -ovc frameno - -o frameno.avi -oac mp3lame -lameopts vbr=3<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></P> - -<H2><A NAME="mpeg">7.2 编码为MPEG格式</A></H2> - -<P>MEncoder可以生成MPEG(MPEG-PS)格式的输出文件。它们可能只能用于libavcodec的<I>mpeg1video</I>编解码器,因为一般播放器 - -- 除了MPlayer -- 认为MPEG文件中包含的是MPEG1视频流和MPEG1 layer 2(MP2)音频流。</P> - -<P>这个特性目前来说没有什么用处,而且可能还有很多bug,其重要性在于目前MEncoder无法编码MPEG1 layer 2 (MP2)的音频,而它正是别的播放 -器认为MPEG文件中应该有的。</P> - -<P>要改变MEncoder的输出文件格式,可以使用<CODE>-of mpeg</CODE>选项。</P> - -<P>示例:<BR> - <CODE>mencoder -of mpeg -ovc lavc -lavcopts vcodec=mpeg1video - -oac copy <other options> media.avi -o output.mpg</CODE></P> - - -<H2><A NAME="rescaling">7.3 电影再缩放</A></H2> - -<P>把电影图象的尺寸重新设置的需要经常出现。原因可能很多,例如减小输出文件的大小,网络带宽等等,很多人甚至再把DVD或SVCD编码为到DivX -的AVI的时候也重新缩放,<B>这是错误的</B>。在这么做之前,请先阅读<A HREF="#aspect">保持屏幕高宽比</A>部分。</P> - -<P>缩放过程由<I>'scale'</I>视频滤镜处理:<CODE>-vf scale=width:height</CODE>。其质量由<CODE>-sws</CODE>选项控制。如果它没有指定, -MEncoder将使用0:快速二次线性缩放。</P> - -<H4>用法:</H4> - <CODE> mencoder sample-svcd.mpg -lavcopts - vcodec=mpeg4:more_options -vf scale=640:480 -sws 2 -o - output.avi</CODE></P> - - -<H2><A NAME="copying">7.4 流复制</A></H2> - -<P>MEncoder能用两种方式处理输入流:<B>编码</B>或者<B>复制</B>他们。这部分是关于<B>复制</B>的。</P> - -<UL> - <LI><B>视频流</B>(<CODE>-ovc copy</CODE>选项): 可以干的很好:)<BR> - 比如,把FLI或者VIVO或者MPEG1的视频放(不是转化)到AVI文件中。当然只有MPlayer能播放这样的文件:)。而且可能在现实生活中没有任何价值。 -合理使用:比如视频流复制可以用于只有音频流需要被编码的情况(比如,从非压缩的PCM编码为MP3)。</LI> - - <LI><B>音频流</B>(<CODE>-oac copy</CODE>选项): 直接了当。可以把一个外部音频文件(MP3,Vorbis)合波到输出流中。 -使用<CODE>-audiofile <filename></CODE>选择来实现这个功能。</LI> -</UL> - - -<H2><A NAME="fixing">7.5 修复索引或者交错损坏的AVI </A></H2> - -<P>最容易的事情。我们简单地复制视频和音频流,并用MEncoder产生索引。当然这不能修复视频和/或者音频流中可能的错误。 -这同样也可以修复交错损坏的文件, -使它们不再需要<CODE>-ni</CODE>选项。</P> - -<P>命令:<CODE>mencoder -idx input.avi -ovc copy -oac copy -o output.avi</CODE></P> - -<H3><A NAME="appending">7.5.1 合并多个AVI文件</A></H3> - -<P>作为副产品,修复损坏的AVI文件的功能使MEncoder可以用来修复两个或多个AVI文件合并生成的文件:</P> - -<P>命令:<CODE>cat 1.avi 2.avi | mencoder -noidx -ovc copy -oac copy -o output.avi -</CODE></P> - -<P><B>注意:</B>这要求<CODE>1.avi</CODE>和<CODE>2.avi</CODE>使用同样的编解码器,分辨率,流速率 -等等,并且至少1.avi不是损坏的。你可能需要先修复你的AVI输入文件,按照<A HREF="#fixing">上面</A>所说的方法。</P> - - -<H2><A NAME="libavcodec">7.6 用libavcodec编解码器族编码</A></H2> - -<P><A HREF="codecs.html#libavcodec">libavcodec</A>提供简单编码许多有趣的视频和音频格式(目前其音频编码器还不支持)的方法。 -你能编码下列的编码格式:</P> - -<UL> - <LI>mjpeg -- Motion JPEG</LI> - <LI>h263 -- H263</LI> - <LI>h263p -- H263 Plus</LI> - <LI>mpeg4 -- DivX4</LI> - <LI>msmpeg4 -- 老的DivX</LI> - <LI>msmpeg4v2 -- Micro$oft MPEG4 V2 (DivX的又称为MP43的前辈)</LI> - <LI>rv10 -- 老的RealVideo编码格式</LI> - <LI>mpeg1video -- MPEG1视频:)</LI> -</UL> - -<P>第一栏是应该在<CODE>vcodec</CODE>选项里设置的编码格式的名称,比如:<CODE>-lavcopts vcodec=msmpeg4</CODE></P> - -<P>例如,对于使用MJPEG压缩:<BR> - <CODE> mencoder dvd://2 -o title2.avi -ovc lavc - -lavcopts vcodec=mjpeg -oac copy</CODE></P> - - -<H2><A NAME="image_files">7.7 用输入的多幅图象文件(JPEG,PNG或TGA)进行编码</A></H2> - -<P>MEncoder具有从一个或多个JPEG,PNG或TGA文件创建电影的能力。通过简单的framecopy它能创建MJPEG(Motion JPEG), -MPNG(Motion PNG )或MTGA(Motion TGA)文件。</P> - -处理过程的解释: - -<OL> - <LI>MEncoder使用<CODE>libjpeg</CODE><I>解码</I>输入图像(当解码PNG时将使用<B>libpng</B>)。</LI> - - <LI>MEncoder接着把解码后的图象喂给所选的的视频压缩器(DivX4,Xvid,ffmpeg msmpeg4等等)。</LI> -</OL> - -<H4>例子</H4> - -<P><CODE>-mf</CODE>选项的解释能在man page中找到。</P> - -<P><I>用当前目录中的所有JPEG文件创建DivX4文件:</I><BR> - <CODE>mencoder \*.jpg -mf on:w=800:h=600:fps=25 -ovc divx4 -o - output.avi</CODE></P></P> - -<P><I>用当前目录中的一些JPEG文件创建DivX4文件:</I><BR> - <CODE>mencoder -mf on:w=800:h=600:fps=25 -ovc divx4 -o output.avi \*.jpg</CODE></P> - -<P><I>用当前目录中的所有JPEG文件创建Motion JPEG(MJPEG)文件:</I><BR> - <CODE>mencoder -mf on:w=800:h=600:fps=25 -ovc copy -o output.avi \*.jpg</CODE></P> - -<P><I>用当前目录中的所有PNG文件创建一个非压缩的文件:</I><BR> - <CODE>mencoder -mf on:w=800:h=600:fps=25:type=png -ovc rawrgb -o output.avi \*.png</CODE></P> - -<P><B>注意:</B>宽度必须是4的整数倍,这是RAW RGB AVI格式的一个限制。</P> - -<P><I>用当前目录中的所有PNG文件创建Motion PNG(MPNG)文件:</I><BR> - <CODE>mencoder -mf on:w=800:h=600:fps=25:type=png -ovc copy -o output.avi \*.png</CODE></P> - -<P><I>用当前目录中的所有TGA文件创建Motion TGA(MTGA)文件:</I><BR> - <CODE>mencoder -mf on:w=800:h=600:fps=25:type=tga -ovc copy -o output.avi \*.tga</CODE></P> - - -<H2><A NAME="vobsub">7.8 将DVD字幕提取为Vobsub文件</A></H4> - -<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>的后缀)和 -<CODE>-vobsuboutindex</CODE>指定字幕在输出文件中的索引号。</P> - -<P>如果输入不是来自DVD你必须使用<CODE>-ifo</CODE>来指明构造<CODE>.idx</CODE>文件需要的<CODE>.ifo</CODE>文件。</P> - -<P>如果输入不是来自DVD而且你也没有<CODE>.ifo</CODE>文件你将需要使用<CODE>-vobsubid</CODE>选项让它了解在<CODE>.idx</CODE> -文件中放置什么样的language id。</P> - -<P>如果<CODE>.idx</CODE>和<CODE>.sub</CODE>文件已经存在,每次运行将追加运行获得的字幕。因此,你应该在开始之前删掉所有东西。</P> - -<H4>例子</H4> - -<P><I>在进行3-pass编码的同时从DVD复制两份字幕</I><BR> - <CODE>rm subtitles.idx subtitles.sub</CODE><BR> - <CODE>mencoder dvd://1 -vobsubout subtitles -vobsuboutindex 0 - -sid 2 -o frameno.avi -ovc frameno</CODE><BR> - <CODE>mencoder dvd://1 -oac copy -ovc divx4 -pass 1</CODE><BR> - <CODE>mencoder dvd://1 -oac copy -ovc divx4 -pass 2 -vobsubout - subtitles -vobsuboutindex 1 -sid 5</CODE></P> - -<P><I>从一个MPEG文件中复制法语字幕</I><BR> - <CODE>rm subtitles.idx subtitles.sub</CODE><BR> - <CODE>mencoder movie.mpg -ifo movie.ifo -vobsubout subtitles - -vobsuboutindex 0 -vobsuboutid fr -sid 1</CODE></P> - -<H2><A NAME="aspect">7.9 保持屏幕高宽比</A></H2> - -<P>DVD和SVCD(也就是MPEG1/2)文件通常包含屏幕高宽比的值,它描述播放器如何正确缩放视频流,保证人不会长鸡蛋脑袋 -(ex.: 480x480 + 4:3 = 640x480)。但当编码成AVI(DivX)文件时,你必须清醒的认识到AVI的文件头中没有储存这个数据。重新缩放电影 -是令人厌恶的而且消耗时间。必须有一个更好的特性!</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> - -<H4>用法:</H4> - -<P><CODE>$ mencoder sample-svcd.mpg -ovc lavc -lavcopts - vcodec=mpeg4:aspect=16.0/9.0 -vf crop=714:548:0:14 -oac copy -o output.avi</CODE></P> - -</BODY> -</HTML>
--- a/DOCS/zh/faq.html Mon Dec 18 15:15:21 2006 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,628 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> -<HTML> - -<HEAD> - <TITLE>FAQ -- MPlayer -- Linux下的电影播放器</TITLE> - <LINK REL="stylesheet" TYPE="text/css" HREF="../default.css"> - <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=gbk"> - <STYLE TYPE="text/css"> - dt { - font-weight : bold; - } - </STYLE> -</HEAD> - -<BODY> - - -<H1><A NAME="faq">5. FAQ </A></H1> - -<UL> - <LI><A HREF="#compilation">5.1 编译</A></LI> - <LI><A HREF="#general">5.2 一般问题</A></LI> - <LI><A HREF="#playback">5.3 播放问题</A></LI> - <LI><A HREF="#driver">5.4 视频与音频驱动问题(vo/ao)</A></LI> - <LI><A HREF="#dvd">5.5 DVD播放</A></LI> - <LI><A HREF="#features">5.6 特性要求</A></LI> - <LI><A HREF="#encoding">5.7 编码</A></LI> -</UL> - - -<H2><A NAME="compilation">5.1 编译</A></H2> - -<DL> - - <DT>Q:编译停止并出现类似这样的出错信息: - <PRE> - In file included from mplayer.c:34: - mw.h: In function `mplMainDraw': - mw.h:209: Internal compiler error in print_rtl_and_abort, at flow.c:6458 - Please submit a full bug report, - with preprocessed source if appropriate. - </PRE> - </DT> - <DD>A:这是gcc 3.0.4的一个已知的bug,升级到3.1就可以解决问题。如何安装gcc参阅<A HREF="users_against_developers.html#gcc">gcc 2.96</A>部分。</DD> - <DD> </DD> - - <DT>Q:Configure结束时出现这样的文字,MPlayer无法编译!<BR> - <CODE>"Your gcc does not support even i386 for '-march' and '-mcpu'."</CODE> - </DT> - <DD>A:你的gcc没有正确的安装,细节需要查看<CODE>configure.log</CODE>文件。</DD> - <DD> </DD> - - <DT>Q:"No such file or directory"是什么意思?</DT> - <DD>A:有可能真的没有这样文件或目录。</DD> - <DD> </DD> - - <DT>Q:gcc2.96有什么问题?</DT> - <DD>A:<B>我们强烈反对使用gcc 2.96!</B><BR> - 细节参见<A HREF="users_against_developers.html#gcc">这个</A>文件了解为什么Red Hat发布gcc 2.96,以及它有什么问题。如果你仍然 -确实确实确实确实想要使用它,总是使用最新的版本并且在configure的时候加上<CODE>--disable-gcc-checking</CODE>选项。记住是你自己选择这条路的。 -一定<B>不要</B>报告bug,一定<B>不要</B>到邮件列表上寻求帮助。如果你遇到问题我们将<B>不</B>提供任何支持。</DD> - <DD> </DD> - - <DT>Q:好极了,那么我使用Red Hat/Mandrake的gcc 3.0.1,我没问题!</DT> - <DD>A:不,因为那些编译器同样有问题。为了了解当前的编译器对MPlayer的支持状况,参见<A HREF="documentation.html#installation">安装</A>部分。</DD> - <DD> </DD> - - <DT>Q:我试图编译MPlayer,但是我得到这样的输出: - <PRE> - In file included from /usr/include/g++-v3/bits/std_cwchar.h:42, - from /usr/include/g++-v3/bits/fpos.h:40, - from /usr/include/g++-v3/bits/char_traits.h:40, - from /usr/include/g++-v3/bits/std_string.h:41, - from /usr/include/g++-v3/string:31, - from libwin32.h:36, - from DS_AudioDecoder.h:4, - from DS_AudioDec.cpp:5: - /usr/include/wchar.h: In function Long long int wcstoq(const wchar_t*, - wchar_t**, int)': - /usr/include/wchar.h:514: cannot convert `const wchar_t* __restrict' to - `const - </PRE> - </DT> - <DD>A:把你的glibc升级到最新的发行版。对于Mandrake,使用2.2.4-8mdk。</DD> - <DD> </DD> - - <DT>Q:... gcc 2.96 ... (是的,有些人还在为gcc 2.96上火!)</DT> - <DD>A:我们引用A'rpi发送到<A HREF="http://mplayerhq.hu/pipermail/mplayer-users/">mplayer-users</A>邮件列表的一封 -<A HREF="http://www.mplayerhq.hu/pipermail/mplayer-users/2001-October/005351.html">邮件</A>('ideg'的意思将在下面解释): - <BLOCKQUOTE> - <P>And we have idegs. And our idegcounter overflowed again and again.</P> - - <P>Unfortunately MPlayer is out of our control. It's used by lamers, Linux - users who can't even use Windows, and never tried to compile a kernel. They - installed (with default options) Mandrake or Red Hat or SuSE, and without - RTFM'ing they send messages saying 'it doesn't work! help me! please! i'm - new to Linux! help! oh! help me!'. We can't stop them, but at least we try - to force them to RTFM and to read the messages of ./configure and MPlayer.</P> - - <P>And you clever guys come and flame us with gcc 2.96 and binary packages. - Instead of helping users or making patches to help solve problems.</P> - - <P>Half of our spare/free time is spent by answering silly mails here and - making newer tricks and checks to configure to avoid such mails.</P> - - <P>And there is a balance. On the one side are you, clever guys, saying we - are very bad because we don't like buggy gcc 2.96, and on the other side - there are the 'new to Linux' guys who are showing us gcc 2.96 is buggy.</P> - - <P>Conclusion: We can't be good. Half the people will always say we are bad.</P> - - <P>Maybe we should close the project, make it closed source, commercial, and - provide install support for it. then we could leave current work, so - development could go faster, and we could earn lots of money with it and buy - a big house, etc etc. Do you really want it? It seems.</P> - </BLOCKQUOTE> - </DD> - <DD> </DD> - - <DT>Q:SDL输出不能工作或者编译。问题在...</DT> - <DD>A:SDL 1.2.x经过测试能够工作另外SDL 1.1.7+可能能工作。任何以前的版本肯定<B>不能</B>工作。因此如果你选择使用这样的版本,是你自己的责任。</DD> - <DD> </DD> - - <DT>Q:我在编译SDL支持的时候仍然有问题。gcc说什么"undefined reference to `SDL_EnableKeyRepeat'"。现在怎么办?</DT> - <DD>A:你把SDL库装在哪里? 如果你装在/usr/local(默认目录)中那么编辑顶层的config.mak并在"X_LIBS="之后添加"-L/usr/local/lib"。现在打make。你搞定了!</DD> - <DD> </DD> - - <DT>Q:不能编译,找不到uint64_t inttypes.h之类的东西...</DT> - <DD>A:把etc/inttypes.h复制到MPlayer目录下(<CODE>cp etc/inttypes.h .</CODE>)然后再试一次...</DD> - <DD> </DD> - - <DT>Q:我在Pentium III上运行Linux但是<CODE>./configure </CODE>没有找到SSE...</DT> - <DD>A:只有2.4.x的内核支持SSE(或者试试2.2.19或更新的版本,但准备好出问题)。</DD> - <DD> </DD> - - <DT>Q:我有G200与G400,我如何编译使用mga_vid驱动?</DT> - <DD>A:阅读<A HREF="video.html#mga_vid">mga_vid文档</A>。</DD> - <DD> </DD> - - <DT>Q:MPlayer有rpm/deb/...之类的安装包吗?</DT> - <DD>A:你能自己制作.deb安装包,查阅<A HREF="documentation.html#debian">Debian安装包的制作</A>一节。 -我们网站的<A HREF="http://www.mplayerhq.hu/dload.html">下载页</A>上有官方的Red Hat的RPM包的下载链接。</DD> - <DD> </DD> - - <DT>Q:在'make'时,MPlayer报告没有X11库。我不理解,我确实装了X!?</DT> - <DD>A:...但是你没有装X的开发包。或者没有正确安装。Red Hat下面它叫XFree86-devel*,Debian下面是xlibs-dev。 -也检查是否存在<CODE>/usr/X11</CODE>和<CODE>/usr/include/X11</CODE>的符号链接(在Mandrake系统上可能有这个问题)。 -他们用下列命令创建:<BR> - <CODE>$ ln -sf /usr/X11R6 /usr/X11</CODE><BR> - <CODE>$ ln -sf /usr/X11R6/include/X11 /usr/include/X11</CODE><BR> - 你的发行版可能不是<A HREF="http://www.pathname.com/fhs/">文件系统层次标准</A>。</DD> - <DD> </DD> - - <DT>Q:我不能编译SVGAlib。我使用2.3/2.4的内核...</DT> - <DD>A:你必须编辑SVGAlib的Makefile.cfg把<CODE>BACKGROUND = y</CODE>注释掉。</DD> - <DD> </DD> - - <DT>Q:我的MPlayer编译了libdvdcss/libdivxdecore的支持,但是当我试图起动它时,它说:<BR> - <CODE>> error while loading shared libraries: lib*.so.0: cannot load - shared object file: No such file or directory</CODE><BR> - 我检查了文件,它确实在<CODE>/usr/local/lib</CODE>里面...</DT> - <DD>A:在<CODE>/etc/ld.so.conf</CODE>里添加<CODE>/usr/local/lib</CODE>然后运行<CODE>ldconfig</CODE>。</DD> - <DD> </DD> - - <DT>Q:Hmm,奇怪。我加载mga_vid.o内核模块后在log中找到这个:<BR> - <CODE>Warning: loading mga_vid.o will taint the kernel: no license</CODE></DT> - <DD>A:最新的内核modutils要求一个标明许可证的标记(主要避免内核hackers调试非开源的驱动)。升级你的内核, -modutils和MPlayer。</DD> - <DD> </DD> - - <DT>Q:编译MEncoder过程中,在连接时出现segfaults!</DT> - <DD>A:这是连接程序的问题。把binutils升级应该有用(2.11.92.*或者更新版本应该不错)。由于它不是我们的问题, -请一定<B>不要</B>报告!</DD> - <DD> </DD> - - <DT>Q:MPlayer在pthread check时因为segmentation fault而崩溃!</DT> - <DD>A:chmod 644 /usr/lib/libc.so</DD> - <DD> </DD> - - <DT>Q:我想在Minix上编译MPlayer!</DT> - <DD>A:我也想。:)</DD> - -</DL> - - -<H2><A NAME="general">5.2 一般问题</A></H2> - -<DL> - - <DT>Q: 我怎么给MPlayer制作合适的补丁?</DT> - <DD>A: 我们做了一个<A HREF="../tech/patches.txt">短小的文件</A>描述了所有必要的细节。照上面的步骤做。</DD> - <DD> </DD> - - <DT>Q: 我怎么支持MPlayer的开发工作?</DT> - <DD>A: 我们非常乐于接受你的硬件和软件的<A HREF="http://www.mplayerhq.hu/donations.html">捐赠</A>。 -它们能帮助我们持续的改进MPlayer。</DD> - <DD> </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> </DD> - - <DT>Q:我能同时运行多个MPlayer实例吗?</DT> - <DD>A:是的。有些视频输出的驱动像xv,dga或者(x)mga是唯一的,所以你将不能够运行超过一个使用这样的视频输出驱动的MPlayer实例。 -音频驱动也在不是很严重的程度上存在这种问题。并非所有的驱动都允许在同样的设备上播放多重流。</DD> - <DD> </DD> - - <DT>Q:在左上角中有一个计时器。我怎么能去掉它?</DT> - <DD>A:按<CODE>o</CODE>或者使用<CODE>-osdlevel</CODE>选项。</DD> - <DD> </DD> - - <DT>Q:<CODE>-xy</CODE>或者<CODE>-fs</CODE>选项对x11驱动(<CODE>-vo x11</CODE>)不起作用...</DT> - <DD>A:它能起作用,但你必须用<CODE>-zoom</CODE>选项明确指定使用软件缩放(十分缓慢)。你最好是使用XF86VidMode支持: -你必须指定<CODE>-vm</CODE>和<CODE>-fs</CODE>选项,然后就搞定了。确保在你的XF86Config文件中有正确设定了modelines,并且尝试使用<A -HREF="video.html#dga">DGA驱动</A>以及<A HREF="video.html#sdl">SDL的DGA驱动</A>。它快得多。如果SDL的DGA能工作就用它,它还要更快。</DD> - <DD> </DD> - - <DT>Q:状态行上的数字的是什么意思?</DT> - <DD>A:例如: - <CODE>A: 2.1 V: 2.2 A-V: -0.167 ct: 0.042 57/57 41% 0% 2.6% 0 4 49%</CODE> - <UL> - <LI>A:以秒计算的音频位置</LI> - <LI>V:以秒计算的视频位置</LI> - <LI>A-V:以秒计算的音频视频位置差(延迟)</LI> - <LI>ct:所有完成的A-V同步纠正</LI> - <LI>播放的帧数(从最后一次搜索开始计算)</LI> - <LI>解码的帧数(从最后一次搜索开始计算)</LI> - <LI>视频解码器占用的cpu的百分比(对于slice和DR这包括了视频输出的占用)</LI> - <LI>视频输出的cpu占用</LI> - <LI>音频解码器占用的cpu的百分比</LI> - <LI>为保持A-V同步而丢弃的帧数</LI> - <LI>目前图像后处理的级别(当使用<CODE>-autoq</CODE>时)</LI> - <LI>当前cache使用量(大约50%是正常的)</LI> - </UL> - 他们中大多数是为了调试的,将在适当时候去掉。</DD> - <DD> </DD> - - <DT>Q:我不想要他们出现怎么办?</DT> - <DD>A:使用<CODE>-quiet</CODE>选项并阅读man page。</DD> - <DD> </DD> - - <DT>Q:为什么有些文件的视频输出的cpu占用是零(0%)?</DT> - <DD>A1:它不是零,但它是由解码器调用的不能被单独测量。你应该试着先用<CODE>-vo null</CODE>播放文件然后用<CODE>-vo ...</CODE>播放, -检查它们的不同来查看视频速度。</DD> - <DD>A2:你使用了直接渲染,那是由解码器自己渲染显存。在这种情况下,解码占用的百分比也包含了显示占用的百分比。</DD> - <DD> </DD> - - <DT>Q:出现关于在<CODE>/usr/lib/codecs/</CODE>下找不到文件的错误...</DT> - <DD>A:从我们的<AHREF="http://www.mplayerhq.hu/MPlayer/releases/codecs/">编解码器页</A>下载Win32编解码 -器(跟avifile的解码器包里的DLL不一样)并安装它。</DD> - <DD> </DD> - - <DT>Q:有关于MPlayer的邮件列表吗?</DT> - <DD>A:有的。看我们的主页的<A HREF="http://www.mplayerhq.hu/info.html">信息页</A>的底部来订阅。</DD> - <DD> </DD> - - <DT>Q:当我试图播放我最喜爱的视频时,我发现一个讨厌的bug!我应该报告谁?</DT> - <DD>A:请阅读<A HREF="bugreports.html">bug报告指导</A>并按照上面的步骤做。</DD> - <DD> </DD> - - <DT>Q:我用...编解码器播放文件的时候有问题。我能使用它们吗?</DT> - <DD>A:查阅<A HREF="http://www.mplayerhq.hu/DOCS/codecs-status.html">编解码器状态</A>,如果它不包含你的解码器, -阅读<A HREF="codecs.html">编解码器文件</A>,特别是<A HREF="codecs.html#importing">编解码器导入HOWTO</A>然后联系我们。</DD> - <DD> </DD> - - <DT>Q:Umm,"IdegCounter"是什么东东?</DT> - <DD>A:匈牙利语和英语的结合。匈牙利语"Ideg"是神经质的意思,发音类似于“ydaegh”。它最初用来度量A'rpi神经质, -在一些CVS的代码(umm)“神秘的”消失之后;)</DD> - <DD> </DD> - - <DT>Q:"Faszom(C)ounter"又是什么?</DT> - <DD>A:“Fasz”是你不会想要知道的匈牙利词汇,其他的跟MPlayer开发者们的邪恶的脑袋有关。</DD> - <DD> </DD> - - <DT>Q:LIRC不工作,因为...</DT> - <DD>A:你明确你使用的是<CODE>mplayer</CODE>而不是<CODE>mplayer-lirc</CODE>吗? 注意,<CODE>mplayer_lirc</CODE> -使用了很长时间,包括0.60的发行版,但是它最近又变成<CODE>mplayer</CODE>了。</DD> - <DD> </DD> - - <DT>Q:字幕非常不错,是我见过的最漂亮的,但它们降低播放速度! 我想它是不可能的了...</DT> - <DD>A:在运行<CODE>./configure</CODE>之后,编辑<CODE>config.h</CODE>并将<CODE>#undef FAST_OSD</CODE>换成 -<CODE>#define FAST_OSD</CODE>。然后重新编译。</DD> - <DD> </DD> - - <DT>Q:onscreen display(OSD)不停的闪烁!</DT> - <DD>A:你使用单缓冲的vo驱动(x11,xv)。对于xv,使用<CODE>-double</CODE>选项。也试试<CODE>-vf expand</CODE></DD> - <DD> </DD> - - <DT>Q:libavcodec这种东东到底是什么?</DT> - <DD>A:参见<A HREF="codecs.html#libavcodec">libavcodec</A>一节。</DD> - <DD> </DD> - - <DT>Q:但是Configure告诉我"Checking for libavcodec ... no"!</DT> - <DD>A:你需要从FFmpeg的CVS中获得libavcodec。阅读<A HREF="codecs.html#libavcodec">libavcodec部分</A>的说明。</DD> - <DD> </DD> - - <DT>Q:Icewm的任务条总是在全屏的时候挡住电影!</DT> - <DD>A:这不应该再发生了,但如果它确实仍然发生,使用<CODE>-fstype layer</CODE>选项并向<A -HREF="http://mplayerhq.hu/pipermail/mplayer-users/">mplayer-users</A>邮件列表报告。</DD> - <DD> </DD> - - <DT>Q:我不能访问GUI菜单。我按下右键,但我不能访问任何菜单项!</DT> - <DD>A:你使用的是FVWM吗? 试试下列方法:<BR> - Start -> Settings -> Configuration -> Base Configuration<BR> - 把"Use Applications position hints"设为"Yes"。</DD> - <DD> </DD> - - <DT>Q:我能在后台中运行MPlayer吗?</DT> - <DD>A:用法:<CODE>mplayer <options> <filename> < /dev/null &</CODE></DD> - -</DL> - - -<H2><A NAME="playback">5.3 播放问题</A></H2> - -<DL> - - <DT>Q:我能播放某些AVI文件但是我听不到声音并且有这种出错信息: - <PRE> - Detected audio codec: [divx] afm:4 (DivX audio (WMA)) - Requested audio codec family [divx] (afm=4) not available (enable it at - compile time!) - </PRE> - </DT> - <DD>A:可能文件的音频使用了一个不是MPlayer本地支持的解码器。按照README或者<A HREF="documentation.html#installation"> -安装</A>部分中的说明安装Win32解码器包。</DD> - <DD> </DD> - - <DT>Q:...avifile/aviplay能工作但MPlayer不能。</DT> - <DD>A:MPlayer不是avifile。它们之间唯一的共同之处Win32 DLL装载器。codecs(DLL)集,同步,信号分离等等完全不同 -所以不应该被比较。如果什么东西能用aviplay播放并不意味着MPlayer能工作,反之亦然。</DD> - <DD> </DD> - - <DT>Q:播放AVI文件时音频不同步。</DT> - <DD>A:试试<CODE>-bps</CODE>或<CODE>-nobps</CODE>选项。如果还没有改善,阅读<A HREF="bugreports.html"> -这个</A>并把文件上载到FTP上。</DD> - <DD> </DD> - - <DT>Q:MPlayer在使用l3codeca.acm的时候因为一些错误而退出。</DT> - <DD>A:检查<CODE>ldd /usr/local/bin/mplayer</CODE>的输出。如果它包含<BR> - <CODE>libc.so.6 => /lib/libc.so.6 (0x4???????)</CODE><BR> - "?"可以是任意数字表示没有问题,错误不在这里。如果它是:<BR> - <CODE>libc.so.6 => /lib/libc.so.6 (0x00??????)</CODE><BR> - 那就表示你的内核/libc有问题。可能你使用了一些安全补丁(例如Solar Designer的OpenWall补丁)强迫把库加载到很低的内存地址。 -因为l3codeca.acm是不可重新定位的DLL,它必须被加载到0x00400000,我们没法改变它。你应该使用没有打补丁的核心, -或者使用MPlayer的<CODE>-afm 1</CODE>选项禁用l3codeca.acm。</DD> - <DD> </DD> - - <DT>Q:我的电脑播放分辨率640x300而且是立体声的mp3的M$ DivX AVI文件时非常慢。当我使用-nosound选项时,一切正常(但没有声音)。</DT> - <DD>A:你的机器太慢或者你的声卡驱动坏了。查阅文档看你是否能提高性能。</DD> - <DD> </DD> - - <DT>Q:MPlayer由于"MPlayer interrupted by signal 4 in module: decode_video"而崩溃。</DT> - <DD>A:尝试在你用来编译MPlayer的机器上运行它。或者重新编译打开运行时CPU检测功能(<CODE>./configure --enable-runtime-cpudetection</CODE>)。 -如果没有使用上面提到的特性,不要在与编译它不同的CPU上使用MPlayer。</DD> - <DD> </DD> - - <DT>Q:我有个关于[your window manager]跟xv/xmga/sdl/x11模式下全屏的问题...</DT> - <DD>A:读取我们的<A HREF="bugreports.html">bug报告指导</A>并送一个正确的bug报告给我们</DD> - <DD> </DD> - - <DT>Q:我播放MPEG文件时出现这样的错误: Can't find codec for video format 0x10000001!</DT> - <DD>A:你的<CODE>~/.mplayer/</CODE>下的codecs.conf的版本太旧。用<CODE>/etc/</CODE>下面的文件升级它。<BR> - <B>或者</B>你的配置文件中包含<CODE>vc=</CODE>选项或者类似东西。</DD> - <DD> </DD> - - <DT>Q:当KDE下的运行MPlayer我只看到一个黑色的屏幕什么都没有。在大约一分钟之后才开始播放视频。</DT> - <DD>A:KDE的arts守护进程会阻塞声卡设备。你可以一直等到视频开始或者在控制中心中禁用arts。如果你想使用arts的音频, -将音频输出指定为我们本地的arts音频驱动<CODE>-ao arts</CODE>)。如果它失败或者没有被编译进来,尝试SDL -(<CODE>-ao sdl</CODE>)并且确保你的SDL能处理arts的音频。还有另一个选择是用artsdsp运行MPlayer。</DD> - <DD> </DD> - - <DT>Q:我有一个AVI文件,当用<CODE>-vc odivx</CODE>播放时时,出现灰色屏幕,用<CODE>-vc divx4</CODE>时,出现绿色屏幕。</DT> - <DD>A:这不是DivX文件,而是M$ MPEG4v3。更新你的codecs.conf。</DD> - <DD> </DD> - - <DT>Q:我播放电影时遇到视频音频不同步和/或者MPlayer崩溃并出现下列信息:<BR> - <CODE>DEMUXER: Too many (945 in 8390980 bytes) video packets in the buffer!</CODE></DT> - <DD>A:这可能有很多原因。 - <UL> - <LI>你的CPU<B>和/或者</B>显卡<B>和/或者</B>总线太慢。在这种情况下MPlayer会显示信息(并且掉帧数会迅速增加)。</LI> - <LI>如果它是AVI文件,也许它的交错有问题。试试<CODE>-ni</CODE>选项。</LI> - <LI>你的声卡驱动太buggy,或者你对ALSA 0.5使用了<CODE>-ao oss</CODE>。 - 参见<A HREF="sound.html">声卡部分</A>。</LI> - <LI>AVI的文件头有问题,试试<CODE>-nobps</CODE>选项,和/或者<CODE>-mc 0</CODE>。</LI> - </UL></DD> - <DD> </DD> - - <DT>Q:我有个MJPEG文件能用其它播放器播放但是MPlayer只显示一个黑色的图象。</DT> - <DD>A:在<CODE>codecs.conf</CODE>中禁用Windows DLL,或者使用<CODE>-vc ffmjpeg</CODE>选项(为此你需要为MPlayer编译libavcodec支持)。</DD> - <DD> </DD> - - <DT>Q:当我试图从我的电视选台器截取时,它能工作,但是颜色很奇怪。用其它程序没问题。</DT> - <DD>A:你的卡片有可能错误报告了它的色彩空间容量。试试YUY2而不是缺省的YV12(见<A HREF="documentation.html#tv">电视输入文档</A>)。</DD> - <DD> </DD> - - <DT>Q:每次我开始播放是,都遇到这种信息,但一切似乎都正常:<BR> - <CODE>Linux RTC init: ioctl (rtc_pie_on): Permission denied</CODE></DT> - <DD>A:你需要root权限或者一个特殊设定的内核使用计时器代码。细节参见文档的<A HREF="documentation.html#rtc">RTC部分</A>。</DD> - <DD> </DD> - - <DT>Q:我的同步有问题。一些AVI我能正常播放,另外一些却是以双倍速度播放!</DT> - <DD>A:你的声卡/驱动buggy。很有可能它的固定在44100Hz,而你试图播放22050Hz的音频的文件。试试resample音频滤镜。</DD> - <DD> </DD> - - <DT>Q:我播放所有WMV (或者其它.. )文件时都只有一个绿色/灰色的窗口和声音! MPlayer报告:<BR> - <CODE>Detected video codec: [null] drv:0 (NULL codec (no decoding))</CODE></DT> - <DD>A:更新你<CODE>codecs.conf</CODE>。</DD> - <DD> </DD> - - <DT>Q:我用我的笔记本播放文件时得到十分奇怪的CPU百分值(太大了)。</DT> - <DD>A:这是你的笔记本的电源管理/节能系统(BIOS,不是内核)的影响。起动你的笔记本<B>之前</B>插上外部电源。你也可以试试<A -HREF="http://www.brodo.de/cpufreq/">cpufreq</A>(一个Linux下的SpeedStep界面)对你是否有帮助。</DD> - <DD> </DD> - - <DT>Q:当我以root权限在我的笔记本上运行MPlayer时,音频与视频完全不同步。当我作为普通用户运行它时,它工作正常。</DT> - <DD>A:这还是电源管理的结果(见上面)。起动你的笔记本<B>之前</B>插上外部电源或者使用<CODE>-nortc</CODE>选项。</DD> - <DD> </DD> - - <DT>Q: 放一部电影的时候它突然跳跃起来并且出现下列信息:<BR> - <CODE>Badly interleaved AVI file detected - switching to -ni - mode...</CODE> - <DD>A: 糟糕的交错文件不能和<CODE>-cache</CODE>选项协同工作. 试试<CODE>-nocache</CODE>.</DD> - <DD> </DD> - -</DL> - - -<H2><A NAME="driver">5.4 视频与音频驱动问题(vo/ao)</A></H2> - -<DL> - - <DT>Q:我播放视频的时候没有声音并且得到类似这样的出错信息: - <PRE> - AO: [oss] 44100Hz 2ch Signed 16-bit (Little-Endian) - audio_setup: Can't open audio device /dev/dsp: Device or resource busy - couldn't open/init audio device -> NOSOUND - Audio: no sound!!! - Start playing... - </PRE> - </DT> - <DD>A:你是运行的KDE或者GNOME,并且起动了ARTS或者ESD音频守护进程吗? 试试禁用音频守护进程,或者使用<CODE>-ao arts</CODE> -或<CODE>-ao esd</CODE>选项让MPlayer使用ARTS或ESD。</DD> - <DD> </DD> - - <DT>Q:DGA驱动怎么了? 我找不到它!</DT> - <DD>A:<CODE>./configure</CODE>会自动检测你的DGA驱动。如果<CODE>-vo help</CODE>没有显示DGA,那你的X装的有问题。 -尝试<CODE>./configure --enable-dga</CODE>并且读取<A HREF="video.html#dga">相关文档</A>。或者,使用<CODE>-vo sdl:dga</CODE> -选项试试SDL的DGA驱动。</DD> - <DD> </DD> - - <DT>Q:很好,<CODE>-vo help</CODE>显示有DGA驱动,但是它抱怨权限。帮帮我!</DT> - <DD>A:它只能以root权限工作! 这是DGA的限制。你应该成为root(<CODE>su -</CODE>),然后再试一次。另一个解决方法是为 -MPlayerSUID root,但是这种方法<B>不被推荐!</B><BR> - <CODE>chown root /usr/local/bin/mplayer</CODE><BR> - <CODE>chmod 755 /usr/local/bin/mplayer</CODE><BR> - <CODE>chmod +s /usr/local/bin/mplayer</CODE><BR> - <BLOCKQUOTE> - <B>警告:安全风险</B><BR> - 这是一个<B>很大的</B>安全风险!<B>永远不要</B>在除了你之外还有人可以使用的服务器上这样做,因为他们能通过SUID root的 -MPlayer获得root权限。<B>你被警告过了。</B> - </BLOCKQUOTE> - </DD> - <DD> </DD> - - <DT>Q:当使用Xvideo时,我的Voodoo 3/Banshee报告说:<BR> - <CODE>X Error of failed request: BadAccess (attempt to access private - resource denied)<BR> - Major opcode of failed request: 147 (MIT-SHM)<BR> - Minor opcode of failed request: 1 (X_ShmAttach)<BR> - Serial number of failed request: 26<BR> - Current serial number in output stream:27</CODE></DT> - <DD>A:XFree86 4.0.2/4.0.3的“tdfx”驱动有这个bug。已经被解决了<A -HREF="http://www.xfree86.org/cvs/changes_4_1.html">bugfix #621 of the XFree86 4.1.0 CVS log</A>。因此,升级到XFree86 -4.1.0或者更新的版本。或者,要么是从<A HREF="http://dri.sourceforge.net">DRI的主页</A>下载(至少)0.6版本的DRI,要么 -使用CVS的DRI。</DD> - <DD> </DD> - - <DT>Q:OpenGL(<CODE>-vo gl</CODE>)输出不工作(锁死/黑色窗口/X11出错/...)。</DT> - <DD>A:你的OpenGL驱动不支持动态材质更换(glTexSubImage)。已知的是它在nVidia的二进制的家伙上不工作。同时也知道它在Utah-GLX/DRI -和Matrox G400显卡上能工作。Radeon显卡加DRI也行。其它显卡加DRI不行。它同样不能在3DFX显卡上工作,因为256x256材质大小限制。</DD> - <DD> </DD> - - <DT>Q:我有一块nVidia TNT/TNT2显卡,而我的电影的下面总有一个颜色奇怪的带子! 这个是什么故障?</DT> - <DD>A:这是nVidia二进制X驱动的一个bug。这些bug仅出现在TNT/TNT2显卡上,我们什么也干不了。要解决问题,升级到最新版本的nVidia二进制的驱动。 -如果仍然不行,对nVidia抱怨去吧!</DD> - <DD> </DD> - - <DT>Q:我使用nVidia XYZ显卡,当我单击显示GUI的显示窗口来触发GUI面板时,在我单击的地方出现一个黑色方块。我安装了最新的驱动。</DT> - <DD>A:没错,nVidia修正了上一个的错误(上面),并且引进了新的bug。让我们祝贺他们。更新:据<A -HREF="users_against_developers.html#nvidia">nVidia</A>说,这已经修正了。</DD> - <DD> </DD> - - <DT>Q:当我使用GUI时,如果使用SDL视频输出,会创建第二个视频窗口。</DT> - <DD>A:知道,目前GUI不能使用SDL。</DD> - <DD> </DD> - - <DT>Q:啊世界真是残酷...! SDL只有<CODE>x11</CODE>输出,而不是<CODE>xv</CODE>!</DT> - <DD>A:再试一次<CODE>x11</CODE>输出。现在尝试<CODE>-vo x11 -fs -zoom</CODE>。看到区别了?没有?!好,给你点启发:SDL的<CODE>x11</CODE> -输出只要xv可用就会使用xv,你不必为它担心...注意:你使用<CODE>-forcexv</CODE>或<CODE>-noxv</CODE>强制/禁用SDL使用xv</DD> - <DD> </DD> - -</DL> - - -<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> </DD> - - <DT>Q:当播放DVD时,我遇到这个错误:<BR> - <CODE>mplayer: ifo_read.c:1143: ifoRead_C_ADT_internal: Assertion - nfo_length / sizeof(cell_adr_t) >= c_adt->nr_of_vobs' failed.</CODE></DT> - <DD>A:这是已知的libdvdread 0.9.1/0.9.2的bug。使用<B>libmpdvdkit2</B>,就在MPlayer的源代码中,并且缺省使用</DD> - <DD> </DD> - - <DT>Q:我能在我的Solaris下的可爱的SPARC上编译libdvdread和libdvdcss吗?</DT> - <DD>A:天知道...据说它能工作,所以请测试它并且提供反馈。也参阅libdvdread的文件及其主页。我们不是libdvdread的作者。使用<B>libmpdvdkit2</B>, -就在MPlayer的源代码中,并且缺省使用。</DD> - <DD> </DD> - - <DT>Q:字幕怎么样? MPlayer能显示他们吗?</DT> - <DD>A:是。参见文档的<A HREF="cd-dvd.html#dvd">DVD</A>部分。</DD> - <DD> </DD> - - <DT>Q:我怎么设置我的DVD光驱的地区代码? 我没有Windows!</DT> - <DD>A:使用<A HREF="http://www.linuxtv.org/download/dvd/dvd_disc_20000215.tar.gz">regionset工具</A>。</DD> - <DD> </DD> - - <DT>Q:我一定需要(setuid) root/setuid fibmap_mplayer来播放DVD吗?</DT> - <DD>A:不,这个只用于老式的DVD支持。然而你必须有访问DVD设备适当权限(在<CODE>/dev/</CODE>里)。</DD> - <DD> </DD> - - <DT>Q:我在什么地方能找到libdvdread和libdvdcss包?</DT> - <DD>A:你不需要。使用<B>libmpdvdkit2</B>,就在MPlayer的源代码中,并且缺省使用。这些包能从<A -HREF="http://www.dtek.chalmers.se/groups/dvd">Ogle的站点</A>得到。</DD> - <DD> </DD> - - <DT>Q:可以单独播放/编码选定的chapter吗?</DT> - <DD>A:可以,试试<CODE>-chapter</CODE>选项。</DD> - <DD> </DD> - - <DT>Q:我的DVD回放慢的要死!</DT> - <DD>A:使用<CODE>-cache</CODE>选项(在man page中介绍)并尝试用hdparm工具为了DVD光驱开启DMA(在文档<A -HREF="cd-dvd.html#cd">CD部分</A>有介绍)。</DD> - <DD> </DD> - -</DL> - - -<H2><A NAME="features">5.6 特性要求</A></H2> - -<DL> - - <DT>Q:如果<B>MPlayer</B>暂停之后我试图搜索或者按任意键,<B>MPlayer</B>会停止暂停。我愿意能够在暂停时在电影中搜索。</DT> - <DD>A:很难在不失去A/V同步的情况下实现这项功能。迄今为止所有尝试都失败了,但补丁是受欢迎的。</DD> - <DD> </DD> - - <DT>Q:我想要+/- 1帧来搜索而不是10秒。</DT> - <DD>A:这不会被实现。它曾被实现过,但是它弄乱了A/V同步。如果你愿意就实现它,并且发送补丁。不要要求它。</DD> - <DD> </DD> - - <DT>Q:哪里有Windows版本?</DT> - <DD>A:它没有发行,并且将来也不会。看看Windows的情况(开源的ASF分析器,开源的ASF编码器等等)然后你就知道为什么了。 -我们不想进监狱。顺便说一下,你可以自己编译它,在<A HREF="documentation.html#cygwin">Cygwin</A>下。</DD> - <DD> </DD> - -</DL> - - -<H2><A NAME="encoding">5.7 编码</A></H2> - -<DL> - - <DT>Q:我怎么编码?</DT> - <DD>A:读取MEncoder的<A HREF="encoding.html">文档</A>。</DD> - <DD> </DD> - - <DT>Q:我怎么创建VCD?</DT> - <DD>A:试试<CODE>TOOLS</CODE>目录下的<CODE>mencvcd</CODE>脚本。使用它你能把DVD或者其它电影编码成为VCD或者SVCD格式 -甚至直接把它们刻到CD上。</DD> - <DD> </DD> - - <DT>Q: 我怎么合并两个视频文件?</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> - <CODE>cat file1 file2 > file3</CODE><BR> - <CODE>mencoder -ovc copy -oac copy -o out.avi -forceidx file3.avi</CODE></DD> - <DD> </DD> - <DT>Q:我的电视选台器工作,我能用MPlayer听到声音观看视频,但是MEncoder不把音频编码!</DT> - <DD>A:Linux的电视音频编码目前还没有实现,我们正在努力。目前它只在BSD上工作。</DD> - <DD> </DD> - - <DT>Q:我不能把DVD字幕编码成AVI!</DT> - <DD>A:你必须正确设定<CODE>-sid</CODE>选项!</DD> - <DD> </DD> - - <DT>Q:MEncoder启动时出现segfaults!</DT> - <DD>A:升级DivX4Linux。</DD> - <DD> </DD> - - <DT>Q:我如何仅对一张DVD中选定的chapter进行编码?</DT> - <DD>A:正确使用<CODE>-chapter</CODE>选项,像这样: - <CODE>-chapter 5-7</CODE></DD> - <DD> </DD> - - <DT>Q:我试图在VFAT文件系统上处理2GB+的文件。能行吗?</DT> - <DD>A:不,VFAT不支持2GB+的文件。</DD> - <DD> </DD> - - <DT>Q:为什么MEncoder显示的推荐比特率都是负的?</DT> - <DD>A:因为你编码的音频的比特率太大,在任何CD上不能用于电影。检查你是否正确安装了libmp3lame。</DD> - <DD> </DD> - -</DL> - -</BODY> -</HTML>
--- a/DOCS/zh/formats.html Mon Dec 18 15:15:21 2006 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,231 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> -<HTML> - -<HEAD> - <TITLE>格式 -- MPlayer -- Linux下的电影播放器</TITLE> - <LINK REL="stylesheet" TYPE="text/css" HREF="../default.css"> - <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=gbk"> -</HEAD> - -<BODY> - - -<H2><A NAME="formats">2.1 支持的格式</A></H2> - -<P>首先澄清一个普遍的错误是非常重要的。 当人们看到以<B>.AVI</B>为扩展名的文件时,他们立即得出结论,认定它不是MPEG文件。 -那种看法是不对的。至少不完全对。与一般人的看法相反这种文件<B>能</B>包含MPEG1视频。</P> - -<P>如你所见,一种<B>编码方式</B>与一种<B>文件格式</B>是不一样的。<BR> - 视频<B>编码格式</B>的例子有:MPEG1,MPEG2,DivX,Indeo5,3ivx。<BR> - 文件<B>格式</B>的例子有:MPG,AVI,ASF。</P> - -<P>在理论上,你能把OpenDivX视频和MP3音频放到<B>MPG</B>格式的文件中。然而,大多数播放器将无法播放它, -由于他们期待的是MPEG1视频和MP2音频(不同于<B>AVI</B>格式,<B>MPG</B>没有必要的区域来描述其视频和音频流)。 -或者你可以把MPEG1视频放到AVI文件中。<A HREF="http://ffmpeg.sourceforge.net">FFmpeg</A>和<A -HREF="encoding.html">MEncoder</A>就能制作这样的文件。</P> - - - -<H3><A NAME="video_formats">2.1.1 视频格式</A></H3> - - -<H4><A NAME="mpeg">2.1.1.1 MPEG文件</A></H4> - -<P>MPEG文件会以不同的形式出现:</P> - -<UL> - <LI>MPG:这是MPEG文件格式的最<B>基本</B>形式。它包含MPEG1视频和MP2(MPEG-1 layer 2)或者极少数是MP1音频。</LI> - <LI>DAT:这是与MPG完全相同的格式,只是换了扩展名。它在<B>Video CD</B>上使用。因为制作VCD的方法和Linux的设计, -DAT文件不能直接播放也不能作为普通的文件从VCD上复制下来。你必须使用<CODE>-vcd</CODE>选项来播放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> -</UL> - -<P>MPEG文件中的帧序列组成独立的组。这意味着你能用标准的文件工具(像<CODE>dd</CODE>,<CODE>cut</CODE>)切割和合并MPEG文件, -并且得到的文件还是完全可用的。</P> - -<P>MPG的一个重要的特性是它们有一个描述视频流长宽比的区域。例如SVCD有480x480的分辨率的视频,而在文件头中的那个区域被置为4:3, -这样它以640x480的分辨率被播放。AVI文件没有这个区域,因此他们必须在编码或者播放时用<CODE>-aspect</CODE>重新缩放。</P> - - -<H4><A NAME="avi">2.1.1.2 AVI文件</A></H4> - -<P>由微软设计,<B>AVI(Audio Video Interleaved)</B>是一种普遍的多用途格式,目前被大多数DivX和DivX4视频所使用。 -它有许多已知的弊端和缺点(比如在流播放时)。它支持1个视频流和0到99个音频流。文件大小限制是2GB,但是现在存在一种扩展格式 -称为<B>OpenDML</B>允许更大的文件。微软目前强烈反对使用它并鼓励使用ASF与WMV。不是所有人都在乎这一点。</P> - -<P>有一个hack允许AVI文件包含Ogg Vorbis音频流的,但这使他们与标准的AVI不兼容。MPlayer支持播放这种文件。 -搜索功能也被植入,但由于编码低劣的文件的混乱的文件头使这项功能被严重限制了。遗憾地是,目前唯一能建立这种文件的编码器, -NanDub,就存在这个问题。</P> - -<P><B>注意:</B>DV照相机建立的未经加工的DV流被DV grabbing utilities转换成两种不同类型的AVI文件。所以AVI将或者包含 -MPlayer可以播放的分离的音频与视频流,或者是未经加工的DV流,它的支持正在开发中的。</P> - -<P>有两种类型的AVI文件:</P> -<UL> - <LI><B>交错的:</B>音频和视频内容是交错的。这是标准使用方法。被推荐且多半都使用。一些工具以错误的同步方式建立交错的AVI。 -MPlayer认为这些文件是交错的,这会导致A/V不同步,在搜索时最为明显。这些文件应该被当作非交错的文件来播放 -(使用<CODE>-ni</CODE>选项)。</LI> - <LI><B>非交错的:</B>首先是整个视频流,然后是整个音频流。因此这需要大量的搜索,使用网络或者CD-ROM播放变的困难。</LI> -</UL> - -<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> -</UL> - -<P>任何视频和音频的编码格式都允许使用,但注意大多数播放器对VBR音频的支持都不好。文件格式允许使用VBR音频,但是大多数播放器期待CBR音频, -这样它们无法播放VBR。VBR是不常见的而且微软的AVI规格仅描述了CBR音频。大多数AVI编码器/多路编排器在使用VBR音频时会创建坏的文件。目前已知的 -只有两个例外:NanDub和<A HREF="encoding.html">MEncoder</A>。</P> - -<H4><A NAME="asf">2.1.1.3 ASF/WMV文件</A></H4> - -<P>ASF(active streaming format)格式来自微软。他们开发了ASF的两个变种,v1.0和v2.0. v1.0被他们的媒体工具(Windows媒体播放器和 -Windows媒体编码器)使用并且是保密的. v2.0被公开并申请专利:)。当然,他们是不同的,完全没有任何兼容性(这只是又一个法律游戏)。 -MPlayer>只支持v1.0格式因为没有任何人见过v2.0格式的文件:)。注意,ASF文件现在常以.WMA或者.WMV的扩展名出现。</P> - - -<H4><A NAME="mov">2.1.1.4 QuickTime/MOV文件</A></H4> - -<P>这些格式是由苹果设计的,能包含任何编码格式,CBR或者VBR。他们通常使用.QT或者.MOV的扩展名。自从MPEG4组织选择QuickTime作为 -MPEG4的推荐文件格式后,他们的MOV文件以.MPG或.MP4的扩展名(有趣的是这些文件的视频和音频流是真正的MPG和AAC文件。你甚至能用 -<CODE>-dumpvideo</CODE>和<CODE>-dumpaudio</CODE>选项提取他们。)。</P> - -<P><B>注意:</B>大多数新的QuickTime文件使用<B>Sorenson</B>的视频和QDesign Music的音频。参见我们的<A -HREF="codecs.html#sorenson">Sorenson</A>编解码器部分。</P> - - -<H4><A NAME="vivo">2.1.1.5 VIVO文件</A></H4> - -<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> - - -<H4><A NAME="fli">2.1.1.6 FLI文件</A></H4> - -<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>是的,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>是电视截取工具(据我所知:)。MPlayer -能读取它的.NUV文件(只能是NuppelVideo 5.0)。那些文件能包含未压缩的YV12,压缩的YV12+RTJpeg,压缩的YV12+lzo和压缩的YV12 RTJpeg+lzo帧。 -MPlayer能解码所有这些格式(并且用MPlayer把它们<B>编码</B>成DivX/etc!)。搜索功能能工作。</P> - - -<H4><A NAME="yuv4mpeg">2.1.1.9 yuv4mpeg文件</A></H4> - -<P><A HREF="http://mjpeg.sourceforge.net">yuv4mpeg/yuv4mpeg2</A>是用于<A HREF="http://mjpeg.sf.net">mjpegtools programs -</A>的文件格式。你能用这些工具进行这种格式的视频截取,制作,过滤或编码。这种文件格式是一个非压缩的YUV 4:2:0图象序列。</P> - - -<H4><A NAME="film">2.1.1.10 FILM文件</A></H4> - -<P>这种格式用于老的世嘉土星CD-Rom游戏。</P> - - -<H4><A NAME="roq">2.1.1.11 RoQ文件</A></H4> - -<P>RoQ文件是用于ID的一些游戏例如Quake III和Return to Castle Wolfenstein的多媒体文件。</P> - - -<H4><A NAME="ogg">2.1.1.12 OGG/OGM文件</A></H4> - -<P>这是<A HREF="http://www.xiph.org">Xiphophorus</A>的一个新的文件格式。它能包含任何视频或者音频编码格式, -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.live555.com/mplayer/">LIVE.COM Streaming Media</A>"库)。</P> - - -<H4><A NAME="pva">2.1.1.14 PVA文件</A></H4> - -<P>PVA是DVB电视附带的Windows下面的软件(比如:MultiDec,WinTV)使用的类似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> - -<H4><A NAME="gif">2.1.1.15 GIF files</A></H4> - -<P><B>GIF</B>格式是网页图象的普遍格式,有两种版本的GIF规格,GIF87a和GIF89a。主要的区别在于GIF89a允许动画。MPlayer通过 -使用libungif库或者另一个libgif-compatible的库支持这两种规格。非动画的GIF显示为单帧的视频。(使 -用<CODE>-loop</CODE>和<CODE>-fixed-vo</CODE>选项来显示更长的时间。)</P> - -<P>MPlayer目前不支持在GIF文件中搜索。GIF文件并不一定有一个固定的帧大小,或者帧速率。而且,每一帧都有独立的大小并且 -应该被放在一个固定的地方并且有固定的尺寸。帧速率是通过使用每一帧前面的一个控制块以百分之一秒为单位控制这一帧显示 -的时间长短来实现的。</P> - -<P>标准的GIF文件包含24-bit的RGB帧和最多8-bit的索引调色板。这些帧大多以LZW格式压缩,但有些GIF编码器生成未压缩的 -帧以避免LZW压缩的专利问题。</P> - -<P>如果你的发行版没有包含libungif,可以从<A HREF="http://prtr-13.ucsc.edu/~badger/software/libungif/index.shtml">libungif主页</A> -下载。技术细节你可以参考<A HREF="http://www.w3.org/Graphics/GIF/spec-gif89a.txt">GIF89a规格</A>.</P> - - - -<H3><A NAME="audio_formats">2.1.2 音频格式</A></H3> - -<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文件时遇到问题,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/OGM文件(Vorbis)</A></H4> - -<P>要求正确的安装<CODE>libogg</CODE>和<CODE>libvorbis</CODE>。</P> - - -<H4><A NAME="wma">2.1.2.4 WMA与ASF文件</A></H4> - - -<H4><A NAME="mp4">2.1.2.5 MP4文件</A></H4> - -<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>
--- a/DOCS/zh/skin.html Mon Dec 18 15:15:21 2006 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,646 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> -<html> -<head> - <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; - font-style: normal;} - em.warn {color: red; - font-style: normal;} - </style> -</head> - -<body> - - -<h1>附录D - MPlayer skin的格式</h1> -<p>本文件的目的是描述MPlayer的skin的格式。这里所包含的信息可能不对,因为</p> - -<ol type="a"> - <li>GUI不是我写的</li> - <li>GUI还没有完成</li> - <li>我可能搞错了</li> -</ol> - -<p>因此如果某个功能与它在这里被描述的工作方式不一样,不用大惊小怪</p>。 - -<p>谢谢<em>Zolt醤 Ponekker</em>的帮助。</p> - -<p><em>Andr醩 Mohari <mayday@freemail.hu></em></p> - - -<h2><a name="overview">D.1 综述</a></h2> - -<p>这虽然与skin的格式扯不上什么关系,但是你应该了解MPlayer有<b>没有</b>内建的皮肤, -因此<b>为了能够使用GUI必须安装至少一种皮肤。</b></p> - -<h3><a name="dirs">D.1.1 目录</a></h3> - -<p>skin的搜索目录(按顺序)是:</p> -<pre> - $(DATADIR)/skins/ - $(PREFIX)/share/mplayer/skins/ - ~/.mplayer/skins/ -</pre> - -<p>注意,第一个路径倚赖于MPlayer的安装配置(见<code>configure</code>脚本 -的<code>--prefix</code>和<code>--datadir</code>的参数)。</p> - -<p>所有的skin被安装到上面列出的一个目录下的自己的目录中,例如:</p> -<pre> - $(PREFIX)/share/mplayer/skins/default/ -</pre> - - -<h3><a name="images">D.1.2 图像格式</a></h3> - -<p>图像必须是真彩的(24或者32bpp)PNG图片。</p> - -<p>在主窗口(见下面)中你能使用包含“透明色”的图像:用颜色#FF00FF(<font color="#FF00FF">深红</font>) -填充的区域在MPlayer看来是完全透明的。这意味着你甚至能改变窗口外形如果你的X服务器有XShape扩展。</p> - - -<h3><a name="components">D.1.3 Skin的组成部分</a></h3> - -<p>Skin的格式是十分自由的(不是像Winamp/XMMS的那种固定格式的皮肤),所以能不能做出些东西取决于你。</p> - -<p>目前有三个要被修饰的窗口:<a href="#mainwin">主窗口</a>,<a href="#subwindow">副窗口</a>,<a href="#mainwin">播放条</a>和 -<a href="#skinmenu">Skin菜单</a>(右键单击弹出)。</p> - -<ul> - <li><p><b>主窗口</b>和/或者<b>播放条</b>是你控制MPlayer的地方。窗口的背景是图像。各种项目可以(而且必须)被放置在这里: -<em>按钮</em>,<em>滑动条</em>和<em>标签</em>。对于每一个项目,你都必须指定其位置和大小。</p> - - <p>一个<b>按钮</b>有三种状态(按下,释放,禁止),所以按钮图像必须垂直地划分成三部分。 -细节参见<a href="#main.button">按钮</a>项目。</p> - - <p><b>滑动条</b>(主要用于搜寻条和音量/平衡控制)可以有任意多的状态只要你把图像分成上下排列的足够多份。 -细节参见<a href="#main.hpotmeter">hpotmeter</a>和<a href="#main.potmeter">potmeter</a>。</p> - - <p><b>标签</b>有一点特殊:字符需要从图像文件中绘制,而图像中的字符用<a href="#fonts">字体描述文件</a>描述。 -后者一个纯文本文件规定图像中每一字符的x,y坐标和大小(图像文件和他的字体描述文件<em>共同</em> -组成一个字体)。细节参见<a href="#main.dlabel">dlabel</a>和<a href="#main.slabel">slabel</a>。</p> - - <p><em class=note><b>注意:</b>所有图像都能像<a href="#images">图像格式</a>一节中说明的使用透明色。如果X Server不支持 -XShape扩展,透明的部分将显示为黑色。如果你想使用这个特性,主窗口背景图像的宽度应该能被8整除。</em></p> - </li> - - <li><p><b>subwindow</b>是电影显示的地方。如果没有载入电影它将显示一个指定的图像(空的窗口太无聊了:-)) -<em class=note><b>注意:</b>在这里<b>不允许</b>使用透明色。</em></p> - </li> - - <li><p><b>skin菜单</b>仅仅是提供一个通过菜单控制MPlayer的方法。菜单需要两个图像:一个是基础图像 -用来显示菜单的正常状态,另一个用来显示被选择的项目。当菜单弹出时,显示第一个图像。如果你把鼠标在 -菜单条目上移动,当前选择的项目从第二个图像中复制并覆盖到当前鼠标指针下面的菜单项目上。 -(第二个图像从来不作为整体来显示)。</p> - - <p>一个菜单选项用图像中的位置和大小定义(细节参见<a href="#skinmenu">skin菜单</a>)。</p> - </li> -</ul> - -<p>还有一件重要的事情没有提到:为了使按钮,滑动条和菜单项工作,MPlayer必须知道如果他们被点击 -的话应该做什么。这是利用<a href="#guimsg">消息</a>(事件)机制完成的。对于这些项目,你必须定义当 -他们被点击时将会产生的消息。</p> - -<h3><a name="files">D.1.4 文件</a></h3> - -<p>你需要制作下列的文件构成一个skin:</p> - -<ul> - <li>一个配置文件称为<a href="#skin">skin</a>,告诉MPlayer如何将skin的不同部分放在一起, -以及如果你在窗口中某处点击的话应该做什么。</li> - <li>主窗口的背景图像。</li> - <li>主窗口上代表物件的图像(包括一个或更多字体描述文件用来显示标签)。</li> - <li>在副窗口中显示的图像(可选)。</li> - <li>skin菜单的两个图像(仅当你想要创建菜单时才需要他们)。</li> -</ul> - -<p>除了skin的配置文件之外,你能给其它文件起随便什么名字(但字体描述文件必须以<code>.fnt</code>为扩展名)。</p> - - -<h2><a name="skinfile">D.2 skin文件</a></h2> - -<p>如上所述,这是skin的配置文件。 -它是基于行的;注释行必须以'<code>;</code>'开头(只有空格和tab可以放在'<code>;</code>'之前)。</p> - -<p>文件由section组成。每一段描述一个程序的skin,使用下列的形式:</p> - -<table border=1 width="100%"> - <tr bgcolor=silver> - <td> -<pre> -section = <i>section name</i> -. -. -. -end -</pre> - </td> - </tr> -</table> - -<p>目前只有一个程序,所以你只需要一个section: -它的名称是<b>movieplayer</b>。</p> - -<p>这个段中每个窗口用下列形式的块描述:</p> - -<table border=1 width="100%"> - <tr bgcolor=silver> - <td> -<pre> -window = <i>window name</i> -. -. -. -end -</pre> - </td> - </tr> -</table> - -<p>其中<i>window name</i>可以是下面各字串中的一项:</p> - -<ul> - <li><b>main</b> -- 对于主窗口</li> - <li><b>sub</b> -- 对于副窗口</li> - <li><b>menu</b> -- 对于skin菜单</li> - <li><b>playbar</b> - 播放条</li> -</ul> - -<p>(副窗口和skin菜单块是可选的 -- 你不一定要创建菜单或者修饰副窗口 )。</p> - -<p>在一个窗口的描述块内,你能用下列形式的一行定义窗口中的每一项目:</p> - -<dl> - <dt><b><code>item = parameter</code></b></dt> - <dd>其中<code>item</code>是定义GUI项目的类型的字串,<code>parameter</code>是一个数字或者文字值 -(或者一组用逗号分开的值的列表)。</dd> -</dl> - -<p>把上述的放在一起,整个文件看起来就有点像这样:</p> - -<table border=1 width="100%"> - <tr bgcolor=silver> - <td> -<pre> -section = movieplayer - window = main - ; ... items for main window ... - end - - window = sub - ; ... items for subwindow ... - end - - window = menu - ; ... items for skin menu ... - end - - window = playbar - ; ... items for playbar ... - end -end -</pre> - </td> - </tr> -</table> - -<p>图像文件的名称必须不带目录名 -- 图像在<code>skins</code>目录中被搜索。你能(但是并不需要)规定扩展名。 -如果文件不存在,MPlayer将试图装载<code><filename>.<ext></code>文件, -<code><ext></code>可以是<code>png</code>或者<code>PNG</code>(按这个顺序尝试)。第一个匹配文件将被使用。</p> - -<p>最后是一些用来定位的语句。主窗口和副窗口可以放置在屏幕的不同的角落,通过给定<code>X</code>和<code>Y</code>坐标。 -<code>0</code>代表顶端或左端,<code>-1</code>代表中心然后<code>-2</code>代表右边或底部:</p> - -<pre> - -(0, 0)----(-1, 0)----(-2, 0) - | | | - | | | -(0,-1)----(-1,-1)----(-2,-1) - | | | - | | | -(0,-2)----(-1,-2)----(-2,-2) - -</pre> - -<table border=1 cellpadding=5 width="100%"> - <tr bgcolor="#ffffcc"> - <td>这里有个例子可以把这个搞清楚。假设你有个叫<code>main.png</code>的图像用来做主窗口: - <blockquote> - <code>base = main, -1, -1</code> - </blockquote> - MPlayer将尝试装载<code>main</code>,<code>main.png</code>,<code>main.PNG</code>文件。 - </td> - </tr> -</table> - - -<h3><a name="mainwindow">D.2.1 主窗口和播放条</a></h3> - -<p>下面是所有能用于'<code>window = main</code>' . . . '<code>end</code>'和'<code>window -= playbar</code>' . . '<code>end</code>'块中的项目的列表。</p> - -<dl> - <dt><a name="main.base"><b><code>base = image, X, Y</code></b></a></dt> - <dd>指定用于主窗口的背景图像。窗口将显示在屏幕上的<code>X,Y</code>位置,窗口的大小与图像相同。 - <div><em class=warn><b>注意:</b>这些参数目前对显示窗口不起作用。</em></div> - <div><em class=warn><b>警告:</b>图像中的透明区域(彩色的#FF00FF )在没有XShape扩展的X服务器上是 -黑色的。图像的宽度必须能被8整除。</em> </div> - </dd> - - <dt><a name="main.button"><b><code>button = image, X, Y, width, height, message</code></b></a></dt> - <dd>将一个大小为<code>width</code>*<code>height</code>的按钮放置在<code>X</code>,<code>Y</code>的位置。 -指定的<code>message</code>将在按钮被点击时产生。被<code>image</code>制定的图像必须有从上到下三个部分 -(根据按钮的可能状态),像这样: -<pre> -+------------+ -| pressed | -+------------+ -| released | -+------------+ -| disabled | -+------------+ -</pre> - </dd> - - <dt><a name="main.decoration"><b><code>decoration = enable|disable</code></b></a></dt> - <dd>允许或禁止window manager修饰主窗口。缺省设定是<b>禁止</b>。<br><br> - <div><em class="warn"><b>注意:</b>这对显示窗口无效,它们不需要。</em><div> - </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> - - <ul> - <li><code>button</code> -- 用于按钮的图像(必须有从上到下三部分,跟<a href="#main.button">button</a>中一样)</li> - <li><code>bwidth</code>,<code>bheight</code> -- 按钮的大小</li> - <li><code>phases</code> -- 用于hpotmeter的不同的状态的图像。如果你想不要这样的图像可以使用一个特殊的值<code>NULL</code>。 -图像必须像这样被垂直划分成<code>numphases</code>个部分: -<pre> -+------------+ -| phase #1 | -+------------+ -| phase #2 | -+------------+ - ... -+------------+ -| phase #n | -+------------+ -</pre> - </li> - <li><code>numphases</code> -- <code>phase</code>图像中储存的状态的数量</li> - <li><code>default</code> -- hpotmeter的缺省值(范围0到100)</li> - <li><code>X</code>,<code>Y</code> -- hpotmeter的位置</li> - <li><code>width</code>,<code>height</code> -- <code>hpotmeter</code>的宽度和高度</li> - <li><code>message</code> -- 当<code>hpotmeter</code>的值改变时产生的消息</li> - </ul> - - </dd> - - <dt><a name="main.potmeter"><b><code>potmeter = phases, numphases, default, X, Y, width, height, message</code></b></a></dt> - <dd>没有按钮的<code>hpotmeter</code>。(我猜它是用来旋转,但它只对水平拖拽作出反应)。 -描述参数参见<a href="#main.hpotmeter">hpotmeter</a>。<code>phases</code>能设为<code>NULL</code>, -但这实在没什么用处,因为那样你就看不到<code>potmeter</code>在哪里了。</dd> - - <dt><a name="main.font"><b><code>font = fontfile, fontid</code></b></a></dt> - <dd>定义一个字体。<code>fontfile</code>是以<code>.fnt</code>为扩展名的字体描述文件的名字(<b>不要</b>加上扩展名)。 -<code>fontid</code>用来代表这种字体(见<a href="#main.dlabel">dlabel</a>和<a href="#main.slabel">slabel</a>)。 -可以定义25个字体。</dd> - - <dt><a name="main.slabel"><b><code>slabel = X, Y, fontid, "text"</code></b></a></dt> - <dd>在<code>X</code>,<code>Y</code>位置放置一个静态的标签。<code>text</code>将用<code>fontid</code>代表的字体显示。 -text只能是无格式文本(<code>$x</code>之类的变量不起作用)而且必须封在一对双引号中(但是<code>"</code>字符不能是text的一部分)。 -标签使用由<code>fontid</code>代表的字体显示。</dd> - - <dt><a name="main.dlabel"><b><code>dlabel = X, Y, length, align, fontid, "text"</code></b></a></dt> - <dd>在<code>X</code>,<code>Y</code>位置放置一个动态的标签。标签被称为动态的,因为它的text周期性地刷新。标签的最大限度长度由 -<code>leghth</code>给定(它的高度是字符的高度)。如果将要显示的text比给定的宽度宽,它将滚动显示,否则它将在指定的空间之内按 -<code>align</code>参数的值对齐显示:<code>0</code>表示靠右对齐,<code>1</code>表示居中对齐,<code>2</code>表示靠左对齐。<br> -要显示的文本由<code>text</code>给定:text必须封在一对双引号中(但是<code>"</code>字符不能是text的一部分)。标签使用由 -<code>fontid</code>代表的字体显示。你能在文本中使用下列变量: - - <table align="center" border="1"> - <tr align=center><th>Variable</th><th align=left>Meaning</th></tr> - <tr><td align=center><kbd>$1</kbd></td> - <td><em>hh:mm:ss</em>格式的播放时间</td></tr> - <tr><td align=center><kbd>$2</kbd></td> - <td><em>mmmm:ss</em>格式的播放时间</td></tr> - <tr><td align=center><kbd>$3</kbd></td> - <td><em>hh</em>(小时)格式的播放时间</td></tr> - <tr><td align=center><kbd>$4</kbd></td> - <td><em>mm</em>(分)格式的播放时间</td></tr> - <tr><td align=center><kbd>$5</kbd></td> - <td><em>ss</em>(秒)格式的播放时间</td></tr> - <tr><td align=center><kbd>$6</kbd></td> - <td><em>hh:mm:ss</em>格式的电影长度</td></tr> - <tr><td align=center><kbd>$7</kbd></td> - <td><em>mmmm:ss</em>格式的电影长度</td></tr> - <tr><td align=center><kbd>$8</kbd></td> - <td><em>h:mm:ss</em>格式的电影长度</td></tr> - <tr><td align=center><kbd>$v</kbd></td> - <td><em>xxx.xx%</em>格式的音量</td></tr> - <tr><td align=center><kbd>$V</kbd></td> - <td><em>xxx.x</em>格式的音量</td></tr> - <tr><td align=center><kbd>$b</kbd></td> - <td><em>xxx.xx%</em>格式的声道平衡</td></tr> - <tr><td align=center><kbd>$B</kbd></td> - <td><em>xxx.x</em>格式的声道平衡</td></tr> - <tr><td align=center><kbd>$$</kbd></td> - <td><kbd>$</kbd>字符</td></tr> - <tr><td align=center><kbd>$a</kbd></td> - <td>一个代表音频格式的字母(none: <code>n</code>,mono: <code>m</code>,stereo: <code>t</code>)</td></tr> - <tr><td align=center><kbd>$t</kbd></td> - <td>track号(在播放列表中)</td></tr> - <tr><td align=center><kbd>$o</kbd></td> - <td>文件名</td></tr> - <tr><td align=center><kbd>$f </kbd></td> - <td>小写格式文件名</td></tr> - <tr><td align=center><kbd>$F </kbd></td> - <td>大写格式文件名</td></tr> - <tr><td align=center><kbd>$T</kbd></td> - <td>一个代表媒体流类型的字幕(文件: <code>f</code>,Video CD: <code>v</code>,DVD: <code>d</code>,URL: <code>u</code>)</td></tr> - <tr><td align=center><kbd>$p</kbd></td> - <td>"p"字符(如果电影正在播放并且字体中有"p"这个字符)</td></tr> - <tr><td align=center><kbd>$s </kbd></td> - <td>"s"字符(如果电影停止播放并且字体中有"s"这个字符)</td></tr> - <tr><td align=center><kbd>$e</kbd></td> - <td>"e"字符(如果playback被暂停并且字体中有"e"这个字符)</td></tr> - <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"><b>注意:</b><kbd>$a</kbd>,<kbd>$T</kbd>,<kbd>$p</kbd>,<kbd>$s</kbd>和<kbd>$e</kbd>变量都返回应该被显示作为特殊的符号 -(例如,"e"通常代表像<code>||</code>这样的暂停符号)的字符。你应该有一个正常字符的字体以及另一个用于符号的不同的字体。 -更多信息参见<a href="#symbols">符号</a>部分。</em> - </dd> -</dl> - - -<h3><a name="subwindow">D.2.2 副窗口</a></h3> - -<p>下列的项目能用于'<code>window = sub</code>' . . . '<code>end</code>'块。<p> - -<dl> - <dt><a name="sub.base"> <b><code>base = image, X, Y, width, height</code></b></a></dt> - <dd>在副窗口中将要显示的图像。窗口将在屏幕给定的<code>X</code>,<code>Y</code>位置出现(<code>0,0</code>是左上角)。 -你能用<code>-1</code>指定中心<code>-2</code>指定右边(<code>X</code>)和底部(<code>Y</code>)。窗口将和图像一样大。 -<code>width</code>和<code>height</code>指定窗口的大小; 他们是可选的(如果没有他们,窗口是与图像同样的大小)。</dd> - - <dt><a name="sub.background"><b><code>background = R, G, B</code></b></a></dt> - <dd>让你设置背景颜色。它在图像小于窗口时有用。 -<code>R</code>,<code>G</code>和<code>B</code>规定颜色的的红,绿和蓝色的组成部分(它们中每一个都是从0到255的十进制数字)。</dd> -</dl> - - -<h3><a name="skinmenu">D.2.3 Skin菜单</a></h3> - -<p>如前所述,菜单用两个图像显示。 -正常的菜单条目从<code>base</code>项指定的图像中获得,当前选择的条目则从<code>selected</code>项指定的图像中获得。 -你必须通过<code>menu</code>项定义每个菜单条目的位置和大小。</p> - -<p>这些是能用于'<code>window = menu</code>'. . . '<code>end</code>'之间的项目。</p> - -<dl> - <dt><a name="menu.base"><b><code>base = image</code></b></a></dt> - <dd>正常的菜单条目的图像。</dd> - - <dt><a name="menu.selected"><b><code>selected = image</code></b></a></dt> - <dd>所有条目都被选择的菜单的图像。</dd> - - <dt><a name="menu.menu"><b><code>menu = X, Y, width, height, essage</code></b></a></dt> - <dd>定义图像中一个菜单条目的<code>X,Y</code>位置和大小。当鼠标在该条目上被释放时产生<code>message</code>消息。</dd> -</dl> - - -<h2><a name="fonts">D.3 字体</a></h2> - -<p>就象在关于skin的各部分的一节中论及的,字体由一个图像和一个描述文件定义。你能将字符放置在图像中的任何地方, -但是必须确保他们的位置和大小被精确的提交给描述文件。</p> - -<p>字体描述文件随着(以<code>.fnt</code>为扩展名)能有以'<code>;</code>'开始的注释行。文件必须有像这样的行</p> - -<dl> - <dt><a name="font.image"><b><code>image = image</code></b></a></dt> - <dd>其中<code>image</code>是用于字体的图像文件的名字(你不必制定扩展名)。</dd> - - <dt><a name="font.char"><b><code>"char" = X, Y, width, height</code></b></a></dt> - <dd>这里<code>X</code>和<code>Y</code>指定<code>char</code>字符在图像中的位置(<code>0,0</code>表示左上 -角)。<code>width</code>和<code>height</code>是字符的尺寸,以象素为单位。</dd> -</dl> - -<p>这个例子中用<code>font.png</code>定义A,B,C三个字符。</p> -<table width="100%" border=1> - <tr bgcolor=silver> - <td> -<pre> -; Can be "font" instead of "font.png". -image = font.png - -; Three characters are enough for demonstration purposes :-) -"A" = 0,0, 7,13 -"B" = 7,0, 7,13 -"C" = 14,0, 7,13 -</pre> - </td> - </tr> -</table> - - -<h3><a name="symbols">D.3.1 符号</a></h3> - -<p><a href="#main.dlabel">dlabel</a>中使用的一些变量返回的一些字符有特殊的意义。这些字符应该被显示为符号, -使得播放DVD时显示一个漂亮的DVD logo而不是字符‘d’。</p> - -<p>下列的表格列出所有能被用来显示符号的字符(所以要求另一种字体)。</p> - -<table align="center" border="1"> - <tr><th align=center>字符</th><th align=left>符号</th></tr> - <tr><td align=center><kbd>p</kbd></td> - <td align=left>播放</td></tr> - <tr><td align=center><kbd>s</kbd></td> - <td align=left>停止</td></tr> - <tr><td align=center><kbd>e</kbd></td> - <td align=left>暂停</td></tr> - <tr><td align=center><kbd>n</kbd></td> - <td align=left>无声</td></tr> - <tr><td align=center><kbd>m</kbd></td> - <td align=left>单声道</td></tr> - <tr><td align=center><kbd>t</kbd></td> - <td align=left>立体声</td></tr> - <tr><td align=center><kbd>f</kbd></td> - <td align=left>媒体流是文件</td></tr> - <tr><td align=center><kbd>v</kbd></td> - <td align=left>媒体流是Video CD</td></tr> - <tr><td align=center><kbd>d</kbd></td> - <td align=left>媒体流是DVD</td></tr> - <tr><td align=center><kbd>u</kbd></td> - <td align=left>媒体流是URL</td></tr> -</table> - - -<h2><a name="guimsg">D.4: GUI信息</a></h2> - -<p>这些是能被按钮,滑动条和菜单项产生的消息。</p> - -<p><em class=note><b>注意:</b>一些信息可能不像所预想的那样工作(或者根本不工作)。你也知道,GUI还在开发中。</em></p> - - -<h3>Playback控制:</h3> -<blockquote> - <dl> - <dt><b>evNext</b></dt> - <dd>跳到播放列表中下一个track。</dd> - - <dt><b>evPause</b></dt> - <dd>暂停播放。</dd> - - <dt><b>evPauseSwitchToPlay</b></dt> - <dd>与<code>evPlaySwitchToPause</code>一起形成开关。他们能用来实现普通的播放/暂停按钮。两条信息应该被分配到 -窗口中同一位置的两个按钮上。这条信息暂停播放并使<code>evPlaySwitchToPause</code>按钮的图像显示出来(表明点击按钮能继续播放)。</dd> - - <dt><b>evPlay</b></dt> - <dd>开始播放。</dd> - - <dt><b>evPlaySwitchToPause</b></dt> - <dd>与<code>evPauseSwitchToPlay</code>对应的消息。这条信息开始播放并使<code>evPauseSwitchToPlay</code> -按钮的图像显示出来(表明点击按钮能暂停播放)。</dd> - - <dt><b>evPrev</b></dt> - <dd>跳到播放列表中上一个track。</dd> - - <dt><b>evStop</b></dt> - <dd>停止播放。</dd> - </dl> -</blockquote> - - -<h3>搜索:</h3> -<blockquote> - <dl> - <dt><b>evBackward10sec </b></dt> - <dt><b>evBackward1min </b></dt> - <dt><b>evBackward10min </b></dt> - <dd>向后搜索10秒/1分钟/10分钟。</dd> - - <dt><b>evForward10sec</b></dt> - <dt><b>evForward1min</b></dt> - <dt><b>evForward10min</b></dt> - <dd>向前搜索10秒/1分钟/10分钟。</dd> - - <dt><b>evSetMoviePosition </b></dt> - <dd>搜索到制定位置(能被滑动条使用;使用与滑动条相关的值( 0-100% ))。</dd> - </dl> -</blockquote> - - -<h3>视频控制:</h3> -<blockquote> - <dl> - <dt><b>evDoubleSize化</b></dt> - <dd>把电影窗口置为双倍大小。</dd> - - <dt><b>evFullScreen </b></dt> - <dd>切换全屏方式。</dd> - - <dt><b>evNormalSize化</b></dt> - <dd>把电影窗口置为正常大小。</dd> - </dl> -</blockquote> - - -<h3>音频控制:</h3> -<blockquote> - <dl> - <dt><b>evDecAudioBufDelay</b></dt> - <dd>减少音频缓冲延迟。</dd> - - <dt><b>evDecBalance</b></dt> - <dd>减少声道平衡。</dd> - - <dt><b>evDecVolume</b></dt> - <dd>减少音量。</dd> - - <dt><b>evIncAudioBufDelay</b></dt> - <dd>增加音频缓冲延迟。</dd> - - <dt><b>evIncBalance</b></dt> - <dd>增加声道平衡。</dd> - - <dt><b>evIncVolume</b></dt> - <dd>增加音量。</dd> - - <dt><b>evMute</b></dt> - <dd>禁音/取消禁音。</dd> - - <dt><b>evSetBalance</b></dt> - <dd>设置声道平衡(能被滑动条使用;使用与滑动条相关的值( 0-100% ))。</dd> - - <dt><b>evSetVolume</b></dt> - <dd>设置音量(能被滑动条使用;使用与滑动条相关的值( 0-100% ))。</dd> - </dl> -</blockquote> - - -<h3>其他:</h3> -<blockquote> - <dl> - <dt><b>evAbout</b></dt> - <dd>打开关于窗口。</dt> - - <dt><b>evEqualizer</b></dt> - <dd>打开/关闭均衡器。</dd> - - <dt><b>evExit</b></dt> - <dd>退出程序。</dd> - - <dt><b>evIconify</b></dt> - <dd>窗口图标化。</dd> - - <dt><b>evLoad</b></dt> - <dd>装载文件(打开一个文件浏览窗口,你能在其中选择文件)。</dd> - - <dt><b>evLoadPlay</b></dt> - <dd>功能与<code>evLoad</code>一样,但是它在文件之后装载自动地开始播放。</dd> - - <dt><b>evNone</b></dt> - <dd>空信息,它没有效果(也许CVS版本除外:-))。</dd> - - <dt><b>evPlaylist</b></dt> - <dd>打开/关闭播放列表窗口。</dd> - - <dt><b>evPlayDVD</b></dt> - <dd>尝试打开指定的DVD-ROM驱动器中的碟片。</dd> - - <dt><b>evPlayVCD</b></dt> - <dd>尝试打开指定的CD-ROM驱动器中的碟片。</dd> - - <dt><b>evPreferences</b></dt> - <dd>打开选项设置窗口。</dd> - - <dt><b>evSetAspect</b></dt> - <dd>设置显示图像的屏幕高宽比。</dd> - - <dt><b>evSetURL</b></dt> - <dd>显示URL对话窗口。</dd> - - - <dt><b>evSkinBrowser</b></dt> - <dd>打开skin浏览器窗口。</dd> - </dl> -</blockquote> - -</body> -</html>
--- a/DOCS/zh/sound.html Mon Dec 18 15:15:21 2006 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,655 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> -<HTML> - -<HEAD> - <TITLE>声音 -- MPlayer -- Linux下的电影播放器</TITLE> - <LINK REL="stylesheet" TYPE="text/css" HREF="../default.css"> - <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=gbk"> -</HEAD> - -<BODY> - - -<H3><A NAME="audio">2.3.2 音频输出设备</A></H3> - -<H4><A NAME="sync">2.3.2.1 音频/视频同步</A></H4> - -<P>MPlayer的音频接口称为<I>libao2</I>。它目前包含这些驱动:</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使用一个<EM>正确</EM>编码的声卡驱动内建的特性来实现音频/视频同步。遗憾的是有些驱动的作者 -不在乎这个功能,它在播放MP3和实现声音效果时并不需要。</P> - -<P>别的媒体播放器比如<A HREF="http://avifile.sourceforge.net">aviplay</A>或者<A -HREF="http://xine.sourceforge.net">xine</A>可能在这些驱动上工作没有问题因为他们使用内部计时器的“简单”方法。 -测试表明他们的方法没有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>(这是默认的)。如果你遇到毛刺,停止或者任何不正常的事情, -尝试<CODE>-ao sdl</CODE>(注意:你需要安装SDL库和头文件)。许多情况下SDL的音频驱动都会有帮助,也支持ESD(GNOME),ARTS(KDE)。</LI> - <LI>如果你使用ALSA 0.5的版本,那么你几乎总是不得不使用<CODE>-ao alsa5</CODE>,因为ALSA 0.5的OSS仿真很buggy, -会导致<B>MPlayer崩溃</B>并出现这样的信息:<BR> - <CODE>DEMUXER: Too many (945 in 8390980 bytes) video packets in the buffer!</CODE></LI> - <LI>在Solaris上,用<CODE>-ao sun</CODE>选项选择使用SUN的音频驱动,否则视频音频都无法工作。</LI> - <LI>如果从CD-ROM上播放时声音跳跃,打开IRQ unmasking,也就是使用命令<CODE>hdparm -u1 /dev/cdrom</CODE>(<CODE>man hdparm</CODE>)。这 -一般来说时有益的,进一步的描述在<A HREF="cd-dvd.html#drives">CD-ROM部分</A>。</LI> -</UL> - - -<H4><A NAME="experiences">2.3.2.2 声卡体验,推荐</A></H4> - -<P>Linux下的声卡驱动主要是自由版本的OSS。这些驱动在2.5的开发树中已经被<A HREF="http://www.alsa-project.org">ALSA</A>(Advanced - Linux Sound Architecture)取代,如果你的发行版中还没有使用ALSA,而你的声卡又有问题你可能应该试试。ALSA的驱动一般来说,在 -兼容性,表现和特性方面都比OSS要好,但也有些声卡只有<A HREF="http://www.opensound.com/">4Front Technologies</A>的商业版本的 -OSS驱动才支持,他们也支持一些非Linux系统。</P> - -<TABLE BORDER="1" WIDTH="100%"> - - <TR> - <TH ROWSPAN="2"><B>声卡</B></TH> - <TH COLSPAN="4"><B>驱动</B></TH> - <TH ROWSPAN="2"><B>最大kHz</B></TH> - <TH ROWSPAN="2"><B>最大声道数</B></TH> - <TH ROWSPAN="2"><B>最大打开数<FONT SIZE="-2"><A HREF=#note1>[1]</A></FONT></B></TH> - </TR> - - <TR> - <TH><B>OSS/Free</B></TH> - <TH><B>ALSA</B></TH> - <TH><B>OSS/Pro</B></TH> - <TH><B>其他</B></TH> - </TR> - - <TR> - <TD><B>VIA板载芯片(via82cxxx)只能48kHz</B></TD> - <TD><A HREF="http://sourceforge.net/project/showfiles.php?group_id=3242&release_id=59602">via82cxxx_audio</A></TD> - <TD>snd-via82xx</TD> - <TD> </TD> - <TD> </TD> - <TD>4-48 kHz或者只能使用48 kHz,取决于芯片</TD> - <TD> </TD> - <TD> </TD> - </TR> - - <TR> - <TD><B>Aureal Vortex 2</B></TD> - <TD>没有</TD> - <TD>没有</TD> - <TD>OK</TD> - <TD><A HREF="http://aureal.sourceforge.net">Linux Aureal Drivers</A><BR> - <A HREF="http://makacs.poliod.hu/~pontscho/aureal/au88xx-1.1.3.tar.bz2">缓冲大小增加到32k</A></TD> - <TD>48</TD> - <TD>4.1</TD> - <TD>5+</TD> - </TR> - - <TR> - <TD><B>SB Live!</B></TD> - <TD>模拟方式OK,SP与DIF不能工作</TD> - <TD>都OK</TD> - <TD>都OK</TD> - <TD><A HREF="http://opensource.creative.com">Creative的OSS驱动(支持SP/DIF)</A></TD> - <TD>192</TD> - <TD>4.0/5.1</TD> - <TD>32</TD> - </TR> - - <TR> - <TD><B>SB 128 PCI(es1371)</B></TD> - <TD>OK</TD> - <TD>?</TD> - <TD> </TD> - <TD> </TD> - <TD>48</TD> - <TD>立体声</TD> - <TD>2</TD> - </TR> - - <TR> - <TD><B>SB AWE 64</B></TD> - <TD>最大44kHz</TD> - <TD>48kHz听起来很糟</TD> - <TD> </TD> - <TD> </TD> - <TD>48</TD> - <TD> </TD> - <TD> </TD> - </TR> - - <TR> - <TD><B>GUS PnP</B></TD> - <TD>没有</TD> - <TD>OK</TD> - <TD>OK</TD> - <TD> </TD> - <TD>48</TD> - <TD> </TD> - <TD> </TD> - </TR> - - <TR> - <TD><B>Gravis UltraSound ACE</B></TD> - <TD>不OK</TD> - <TD>OK</TD> - <TD> </TD> - <TD> </TD> - <TD>44</TD> - <TD> </TD> - <TD> </TD> - </TR> - - <TR> - <TD><B>Gravis UltraSound MAX</B></TD> - <TD>OK</TD> - <TD>OK (?)</TD> - <TD> </TD> - <TD> </TD> - <TD>48</TD> - <TD> </TD> - <TD> </TD> - </TR> - - <TR> - <TD><B>ESS 688</B></TD> - <TD>OK</TD> - <TD>OK(?)</TD> - <TD> </TD> - <TD> </TD> - <TD>48</TD> - <TD> </TD> - <TD> </TD> - </TR> - - <TR> - <TD><B>C-Media声卡(哪一种?)</B></TD> - <TD>不OK(有咝咝声)(?)</TD> - <TD>OK</TD> - <TD> </TD> - <TD> </TD> - <TD>?</TD> - <TD> </TD> - <TD> </TD> - </TR> - - <TR> - <TD><B>Yamaha声卡(*ymf*)</B></TD> - <TD>不OK(?)(可能应该用<CODE>-ao sdl</CODE>)</TD> - <TD>只有使用ALSA 0.5的OSS模拟<B>并使用</B><CODE>-ao sdl</CODE>(!)(?)时OK</TD> - <TD> </TD> - <TD> </TD> - <TD>?</TD> - <TD> </TD> - <TD> </TD> - </TR> - - <TR> - <TD><B>使用envy24芯片的声卡(比如Terratec EWS88MT)</B></TD> - <TD>?</TD> - <TD>?</TD> - <TD>OK</TD> - <TD> </TD> - <TD>?</TD> - <TD> </TD> - <TD> </TD> - </TR> - - <TR> - <TD><B>PC扬声器或者DAC</B></TD> - <TD>OK</TD> - <TD>none</TD> - <TD> </TD> - <TD><A HREF="http://www.geocities.com/stssppnn/pcsp.html">Linux PC扬声器的OSS驱动</a></TD> - <TD>驱动可以模拟到44.1,可能更高。</TD> - <TD>单声道</TD> - <TD>1</TD> - </TR> - -</TABLE> - -<P><A NAME="note1"><B>[1]</B></A>:可以<I>同时</B>使用这个设备的程序个数。</P> - -<P>对这个文件的反馈是受欢迎的。请告诉我们你的声卡是如何与MPlayer共同工作的。</P> - -<H4><A NAME="af">2.3.2.3 Audio filters</A></H4> - -<P>老的音频插件被新的音频滤镜层取代了。音频滤镜用来在声音到达声卡之前改变声音数据的属性。激活和关闭滤镜通常是自动的但也可以强制。 -当音频数据的属性与声卡要求的不同时就会激活滤镜,不需要时就会关闭。<CODE>-af filter1,filter2,...</CODE>选项用来取代滤镜的默认行为 -或者插入不能自动插入的滤镜。滤镜将按照它们在逗号分隔的列表中出现的顺序运行。</P> - -<P>例如:<BR> - <CODE>mplayer -af resample,pan movie.avi </CODE></P> - -<P>声音将先通过resample滤镜然后通过pan滤镜。注意列表中不能包含任何空格,否则它将会失败。</P> - -<P>滤镜通常有选项用来改变他们的行为。这些选项在下面的章节会详细的解释。当选项被省略是滤镜将执行默认的设置。这里是一个 -使用带相应选项的滤镜的例子:</P> - -<P> <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="af_resample">2.3.2.3.1 升/降采样率</A></H4> - -<P>MPlayer完全支持使用<CODE>resample</CODE>插件进行声音的升/降采样率。当你使用固定采样率的声卡或者被只兼容 -最大44.1kHz的老声卡郁闷时可以使用它。这个滤镜会在需要时自动开启,但它也可以用命令行显式的开启。他有三个选项:</P> - -<DL> - <DT><CODE>srate <8000-192000></CODE></DT> - <DD>是一个整数用来设置输出的采样频率,以Hz为单位。有效范围从8kHz到192kHz。如果输入输出的采样频率相同或者这个选项 -被省略滤镜降自动卸载。高的采样频率通常会提高声音的质量,特别是跟别的滤镜一起使用的时候。</DD> - - <DT><CODE>sloppy</CODE></DT> - <DD>是一个可选的二进制选项使输出频率可以与<CODE>srate</CODE>给定的频率稍有不同。这个选项用于开始播放的过程非常慢的情况。 -它是默认打开的。</DD> - - <DT><CODE>type <0-2></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> - <CODE>mplayer -af resample=44100:0:0</CODE></P> - -<P>将resample滤镜的输出频率设定为44100Hz使用精确的输出频率缩放和线性插值算法。</P> - - -<H4><A NAME="af_channels">2.3.2.3.2 改变声道数</A></H4> - -<P><CODE>channels</CODE>滤镜用来添加和去除声道,它也可以用来实现声道的定向与复制。当音频滤镜层的输出与输入层不同 -或者当别的滤镜需要它是它将自动开启。当不需要是这个滤镜会自行卸载。选项的数目是可变的:</P> - -<DL> - <DT><CODE>nch <1-6></CODE></DT> - <DD>是<CODE>1</CODE>到<CODE>6</CODE>间的整数用来设定输出的声道数。这个选项的必须的,不设置会导致运行时错误。</DD> - - <DT><CODE>nr <1-6></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> - <CODE>mplayer -af channels=4:4:0:1:1:0:2:2:3:3 media.avi </CODE></P> - -<P>将输出声道设为4,并设定4个定向,把0声道和1声道互换,2,3声道保持原状。注意如果播放只有两个声道的媒体 -2,3声道将没有声音,但0,1声道仍然会互换。</P> - -<P>示例2:<BR> - <CODE>mplayer -af channels=6:4:0:0:0:1:0:2:0:3 media.avi </CODE></P> - -<P>将把声道数设为6,并设置4个定向,把0声道复制到0到3声道,4,5声道仍然没有声音。</P> - - -<H4><A NAME="af_format">2.3.2.3.3 采样格式转换</A></H4> - -<P><CODE>format</CODE>滤镜在不同的采样格式之间转换,当声卡或其他滤镜需要是它会自动开启。</P> - -<DL> - <DT><CODE>bps <number></CODE></DT> - <DD>可以是<CODE>1</CODE>, <CODE>2</CODE>或者<CODE>4</CODE>代表样本的字节数。这个选项是必须的,不设置会 -导致运行时错误。</DD> - - <DT><CODE>f <format></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> - <CODE>mplayer -af format=4:float media.avi</CODE></P> - -<P>将把输出格式设置为每个样本4字节的浮点数据。</P> - - -<H4><A NAME="af_delay">2.3.2.3.4 延迟</A></H4> - -<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> - <CODE>mplayer -af delay=10.5:10.5:0:0:7:0 media.avi</CODE></P> - -<P>将左前和右前声道延迟10.5ms, 两个后声道和副声道不延迟,中间声道延迟7ms。</P> - - -<H4><A NAME="af_volume">2.3.2.3.5 软件音量控制</A></H4> - -<P>软件音量控制通过<CODE>volume</CODE>音频滤镜实现,小心使用这个滤镜因为他会降低声音的信噪比。在大多数情况下最好是 -把PCM音量开到最大,不使用这个滤镜而是通过混音器的主音量控制来控制你的扬声器的输出级别。如果你的声卡使用数字PCM混音器而不是 -模拟的,而你又听到有扭曲现象,就改用主混音器。如果你的电脑连有外部放大器。(这几乎是普遍现象),可以通过调节主音量和放大器 -上的音量旋钮直到背景的咝咝声消失来使噪音级别达到最小。这个滤镜有两个选项:</P> - -<DL> - <DT><CODE>v <-200 - +60></CODE></DT> - <DD>在<CODE>-200</CODE>到<CODE>+60</CODE>之间的浮点数,代表音量大小,以分贝为单位,默认值是0分贝。</DD> - - <DT><CODE>c</CODE></DT> - <DD>二进制控制项用来打开和关闭软修饰。软修饰可以在使用很高音量的时候使声音变得更加平滑。如果扬声器的动态区域很低 -可以打开这个选项。但你必须明白这个特性会造成扭曲而且应该使作为最终手段。</DD> -</DL> - -<P>示例:<BR> - <CODE>mplayer -af volume=10.1:0 media.avi</CODE></P> - -<P>将音量增加10.1分贝并在音量太高的时候进行硬修饰。</P> - -<P>这个滤镜还有另一个特性:它检测总的最大音量并且会在MPlayer退出的时候显示出来。这个音量估计可以用来设定MEncoder -中的音量以利用最大的动态范围。</P> - - -<H4><A NAME="af_equalizer">2.3.2.3.6 均衡器</A></H4> - -<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> - <CODE>mplayer -af equalizer=11:11:10:5:0:-12:0:5:12:12 media.avi</CODE></P> - -<P>将升高高频和低频区域的声音而几乎完全消去1kHz附近的声音。</P> - - -<H4><A NAME="af_panning">2.3.2.3.7 摇动滤镜</A></H4> - -<P>使用<CODE>pan</CODE>滤镜可以把声道任意混合。它基本上是volunme滤镜和channels滤镜的组合。这个滤镜主要有 -两个用途:</P> - -<OL> - <LI>把许多声道混合到较少的声道,比如把立体声变为单声道。</LI> - <LI>在一个环绕音效系统中改变中央扬声器的“宽度”。</LI> -</OL> - -<P>这个滤镜很难使用,而且在获得想要的效果之前需要动些脑筋。这个滤镜的选项数取决于输出的声道数:</P> - -<DL> - <DT><CODE>nch <1-6></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> - <CODE>mplayer -af pan=1:0.5:0.5 -channels 1 media.avi</CODE></P> - -<P>把立体声混合成单声道。</P> - -<P>示例2:<BR> - <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> - - -<H4><A NAME="af_sub">2.3.2.3.8 副低音</A></H4> - -<P><CODE>sub</CODE>插件给音频增加一个副低音声道。用来产生副低音声道的数据是0声道和1声道音频数据的平均混合。 -混合后的声音进过4阶Butterworth滤波器低通过滤,默认去掉60Hz以上的声音,然后添加到音频流的一个单独声道中。 -警告:当你播放5.1杜比数字音效的DVD时禁用这个滤镜,否则它使副低音的声音发生混乱。这个滤镜有两个选项:</P> - -<DL> - <DT><CODE>fc <20-300></CODE></DT> - <DD>是可选的浮点数用来设定滤波器剪除声音的频率,以Hz为单位。有效值从20Hz到300Hz。想获得最好的结果应该尝试 -设置剪除频率越低越好。这样会改进立体声或者环绕音效的体验。默认的剪除频率是60Hz。</DD> - - <DT><CODE>ch <0-5></CODE></DT> - <DD>是可选的在<CODE>0</CODE>到<CODE>5</CODE>之间的整数,决定插入副声道的声道编号,默认的声道号是<CODE>5</CODE>。 -注意如果需要总的声道数会自动增加到<CODE>ch</CODE>个。</DD> -</DL> - -<P>示例:<BR> - <CODE>mplayer -af sub=100:4 -channels 5 media.avi</CODE></P> - -<P>将增加一个剪除频率为100Hz的副低音声道到输出声道4。</P> - -<H4><A NAME="af_surround">2.3.2.3.9 环绕音效解码</A></H4> - -<P>矩阵编码的环绕音效可以通过<CODE>surround</CODE>滤镜解码。杜比环绕就是矩阵编码格式的一个例子。很多两声道的音频 -实际上包含了矩阵编码。为了使用这个特性你需要一个至少支持4声道的声卡。这个滤镜有1个选项:</P> - -<DL> - <DT><CODE>d <0-1000></CODE></DT> - <DD>可选的<CODE>0</CODE>到<CODE>1000</CODE>之间的浮点数用来设定后部扬声器的延迟时间,以ms为单位。这个延迟应该 -这样设定:如果d1是从听众位置到前扬声器的距离而d2是从听众位置到后扬声器的距离,如果d1 <= d2,那么延迟<CODE>d</CODE> -应该设置为15ms,如果d1 > d2,那么设置为15 + 5*(d1-d2),<CODE>d</CODE>的默认值是20ms。</DD> -</DL> - -<P>示例:<BR> - <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> <CODE>mplayer media.avi -aop list=resample,format</CODE></P> - -<P>将让声音先通过resample插件然后再经过format插件。</P> - -<P>插件也有改变他们行为的选项。这些选项在下面将详细地解释。如果选项被省略,插件将按照默认设置运行。 -这是一个关于如何组合使用指定选项的插件的例子:</P> - -<P> <CODE>mplayer media.avi -aop - list=resample,format:fout=44100:format=0x8</CODE></P> - -<P>这将会将resample插件的输出频率设为44100Hz,format插件的输出格式设置为AFMT-U8。</P> - -<P>目前音频插件不能用于MEncoder。</P> - - -<H4><A NAME="resample">2.3.2.4.1 升/降采样率</A></H4> - -<P>MPlayer完全支持对声音升/降采样率。如果你使用固定采样率的声卡或者如果你被只兼容 -最大44.1kHz的老声卡郁闷时可以使用这个插件。是否使用这个插件是<EM>自动检测的</EM> -这个插件有一个选项:<CODE>fout</CODE>用于设置期望的输出的采样率。单位是<Hz>,默认是48kHz。</P> - -<P>用法:<BR> - <CODE>mplayer media.avi -aop list=resample:fout=<required - frequency in Hz, like 44100></CODE></P> - -<P>注意输出频率不能从默认值升高。因为升高会导致音频和视频流播放缓慢而且音频也会扭曲。</P> - - -<H4><A NAME="surround_decoding">2.3.2.4.2 环绕音效解码</A></H4> - -<P>MPlayer有一个能解码矩阵编码的环绕音效的音频插件。杜比环绕是矩阵编码格式的一个例子。 -大多数2通道音频的文件实际上包含了矩阵编码的环绕音效。为使用这个特性你需要至少支持4个声道的声卡。</P> - -<P>用法:<BR> - <CODE>mplayer media.avi -aop list=surround</CODE></P> - - -<H4><A NAME="format">2.3.2.4.3 采样格式转换</A></H4> - -<P>如果你的声卡驱动不支持带符号的16位<CODE>int</CODE>数据类型,这个插件能被用来把它转换为一个你的 -声卡能理解的格式。它有一个选项,<CODE>format</CODE>,可以设置为你在<CODE>libao2/afmt.h</CODE>中找到的数字。 -这个插件几乎很少会用到而且是面向高级用户的。记住这个插件仅仅改变采样格式而不改变采样频率或者声道数。</P> - -<P>用法:<BR> - <CODE>mplayer media.avi -aop - list=format:format=<required output format></CODE></P> - - -<H4><A NAME="delay">2.3.2.4.4 延迟</A></H4> - -<P>这个插件将声音延迟,被计划当做如何开发新的插件的例子。它不能用于任何以用户观点来说有用的东西, -在这里被提到只是为了完整的缘故。不要使用这个插件除非你是开发者。</P> - -<P>如果你有一个文件总是A/V同步失败,使用<CODE>+/-</CODE>实时调整就可以,建议使用OSD,调节更加方便。</P> - -<H4><A NAME="volume">2.3.2.4.5 软件音量控制</A></H4> - -<P>这个插件是音量控制功能的软件替代,用于哪些使用蹩脚的混音设备的机器。如果你想要改变MPlayer的输 -出音量而不改变混音器中PCM音量的设置也可以使用这个插件。它有一个<CODE>volume</CODE>选项设置初始的音量水平。 -初始音量水平能取0到255之间的值,默认值是101相当于放大0分贝。谨慎使用这个插件因为它会降低声音的信噪比。 -在大多数情况下最好是把PCM音量设为最大值,放弃这个插件并且通过混音器的主音量控制来控制你的扬声器输出水平。如果你的声卡使用 -数字PCM混音器而不是模拟的,而你又听到有扭曲现象,就改用主混音器。如果有连接到计算机的外部功放(这几乎是普遍情况),噪音水平 -能通过调整在主音量级别和功放上的旋钮而最大限度的减少,直到去除嘶嘶的背景噪音。</P> - -<P>用法:<BR> - <CODE>mplayer media.avi -aop - list=volume:volume=<0-255></CODE></P> - -<P>这插件也有压缩器或称为“软修饰”的功能。 - 压缩用于声音的动态范围十分高或者如果扬声器的动态范围十分低的的情况。注意这个特性将造成扭曲并且应该 -是最后一种被考虑的手段。</P> - -<P>Usage:<BR> - <CODE>mplayer media.avi -aop - list=volume:softclip</CODE></P> - - -<H4><A NAME="extrastereo">2.3.2.4.6 加强立体声</A></H4> - -<P>这个插件(线性地)增加左右声道的差别(像XMMS的extrastereo插件一样)使回放产生某种“现场”效果。</P> - -<P>用法:<BR> - <CODE>mplayer media.avi -aop list=extrastereo</CODE><BR> - <CODE>mplayer media.avi -aop list=extrastereo:mul=3.45</CODE></P> - -<P>默认选项(<CODE>mul</CODE>)是默认值为2.5的浮点数。如果你把它设置到0.0,你将获得单声道(两个声道的平均值)。 -如果你把它设置到1.0,声音不变,如果你把它设置为-1.0,左右声道将被交换。</P> - - -<H4><A NAME="normalizer">2.3.2.4.7 音量正则化</A></H4> - -<P>这个插件能没有变形的最大化音量。</P> - -<P>用法:<BR> - <CODE>mplayer media.avi -aop list=volnorm</CODE><BR> - -</BODY> -</HTML>
--- a/DOCS/zh/users_against_developers.html Mon Dec 18 15:15:21 2006 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,118 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> -<HTML> - -<HEAD> - <TITLE>开发者的眼泪 -- MPlayer -- Linux下的电影播放器</TITLE> - <LINK REL="stylesheet" TYPE="text/css" HREF="../default.css"> - <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=gbk"> -</HEAD> - -<BODY> - - -<H1>附录 E -- 开发者的眼泪</H1> - -<P>总在<A HREF="http://mplayerhq.hu/pipermail/mplayer-users/">mplayer-users</A>邮件列表上引起巨大争吵和怒火的主题主要有两个。第一个主题是关于</P> - - -<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在他的发行版中包括这个版本是因为 -当时GCC 3.0还没有完成,而他们需要一个在所有他们支持的平台上,包括IA64和s390都正常工作的编译器。Linux发行版<B>Mandrake</B>也照着Red Hat的例子开始 -在他们的Linux-Mandrake 8.0系列中搭载GCC 2.96。</P> - -<P><B>声明:</B>GCC小组否认于GCC 2.96有任何联系并对GCC 2.96发表了一份<A HREF="http://gcc.gnu.org/gcc-2.96.html">官方回应</A>。世界各地的开发者 -开始遇到GCC 2.96的问题,并开始推荐其他的编译程序。<A -HREF="http://www.apachelabs.org/apr-mbox/200106.mbox/%3c20010623194228.C25512@ebuilt.com%3e">Apache</A>,<A -HREF="http://www.mysql.com/downloads/mysql-3.23.html">MySQL</A>,<A -HREF="http://avifile.sourceforge.net/news-old1.htm">avifile</A>和<A -HREF="http://www.winehq.com/news/?view=92#RH%207.1%20gcc%20fixes%20compiler%20bug">Wine</A>。其他你会感兴趣的链接有:<A -HREF="http://www.realtimelinux.org/archives/rtai/20017/0144.html">Real time Linux</A>,<A -HREF="http://www.atnf.csiro.au/people/rgooch/linux/docs/kernel-newsflash.html">Linux kernel news flash about kernel 2.4.17</A>和<A -HREF="http://www.voy.com/3516/572.html">Voy Forum</A>。MPlayer同样经受这些时有时无的只要换个不同版本的GCC就可以全部解决的问题。 -有些项目开始为一些2.96的问题实现绕过的方法,但是我们拒绝修正别人的bug,尤其是其中一些绕过的方法意味着降低性能。</P> - -<P>你能<A HREF="http://www.bero.org/gcc296.html">在这个站点</A>的读到故事的另一面。GCC 2.96不允许在汇编程序中出现|(管道)字符因为它同时支持 -Intel和AT&T的语法而|字符在Intel版本中是个符号。问题是它<B>一声不吭</B>的忽略了整个汇编程序块。这个问题现在应该被修正了,GCC会显示一个警告 -而不是直接跳过。</P> - -<P><B>现状:</B>Red Hat说2.96-85以上的GCC都已经修正了。情况确实好了很多,但我们在我们的邮件列表里仍然遇到一些换了编译器之后就不存在了的问题。 -在任何情况下它都不再重要了。希望一个成熟的GCC 3.x将很好的解决这个问题。如果你想要用2.96编译的话在configure的时候加上<CODE>--disable-gcc-checking</CODE> -标记。记住你要自己负责而且<B>不要报告任何bug</B>。如果你报告,你只会被我们的邮件列表封掉,因为对于GCC 2.96我们已经有够多的争吵了。请让它平息下来。</P> - -<P>如果你的GCC 2.96有问题,你能从Red Hat的<A HREF="ftp://updates.redhat.com">ftp服务器</A>得到2.96-85的包,或者直接去找7.2或更高版本里面提供的 -3.0.4的包。你也能用<A HREF="ftp://people.redhat.com/jakub/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镜像页</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-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-XXX/configure</CODE></LI> - <LI>在编译目录中运行下列命令来编译GCC:<BR> - <CODE>做依靠自己力量</CODE></LI> - <LI>现在你可以运行下列命令安装GCC(以root身份)<BR> - <CODE>make install</CODE></LI> -</OL> - - -<H2><A NAME="binary">E.2 二进制发行版</A></H2> - -<P>MPlayer以前包含来自OpenDivX工程的源代码,那是不能以二进制形式再分发的。这个代码已经在0.90-pre1中去掉了,剩下的来自OpenDivX源码 -的<CODE>divx_vbr.c</CODE>在0.90-pre9的时候由它的作者按GPL协议发布。现在如果你觉得合适的话欢迎你制作二进制的包。</P> - -<P>二进制分发的另一个阻碍是针对CPU结构的编译优化。 MPlayer运行时CPU检测(在编译时指定<CODE>--enable-runtime-cpudetection</CODE>)。 -它默认是禁用的因为它意味着小小的速度牺牲,现在可以创建在能在Intel CPU家族的不同的成员上运行的二进制文件了。</P> - - -<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&threadid=14306">nVidia的Linux论坛</A> -的例子。许多这样的问题与异常持续不断重复的出现。我们最近跟nVidia接触过,而他们说这些错误不存在,不稳定是由于质量不好的AGP芯片造成的 -,而他们没有收到驱动bug(例如紫色条纹)的报告。因此如果你的nVidia显卡有问题,建议你升级nVidia驱动和/或者购买新的主板或者要求nVidia提供开源的驱动。 -在任何情况下,如果你使用nVidia的二进制的驱动并遇到驱动相关的问题,请你明白你几乎不能从我们这里得到帮助,因为我们在这个问题上无能为力。</P> - - -<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">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> - 然而,他也继续说他对我写的Mplayer的专题感到“惊讶”并觉得那是不公平的,他提醒我那是一个免费软件工程。“如果你不喜欢它,”Bartsch说,“你有不使用它的自由”。 -</BLOCKQUOTE> - -<P>他不答复我们的邮件。他的编辑也不答复了我们的邮件。这里引用一些不同的人关于Joe Barr的评论,方便你形成你自己的观点:</P> - -<P>Marc Rassbach有些针对这个人的<A HREF="http://daily.daemonnews.org/view_story.php3?story_id=2102">评论</A>。</P> - -<BLOCKQUOTE> - 你们都记得在LinuxWorld 2000的时候他说Linus T说‘FreeBSD只是一小撮程序员’。Linus从没说过任何这类东西。当Joe因此被讯问时, -他的反应是说BSD的支持者是白痴和蠢才。 -</BLOCKQUOTE> - -<P>一段来自<A HREF="http://mplayerhq.hu/pipermail/mplayer-users/">mplayer-users</A>邮件列表上的Robert Munro的<A -HREF="http://www.mplayerhq.hu/pipermail/mplayer-users/2001-December/009118.html">引文</A>:</P> - -<BLOCKQUOTE> - <P>他挺有意思,但不善于避免,um ...争论。 Joe Barr以前是Compuserve上的Will Zachmann上的Canopus论坛的常客。他那时是OS/2的拥护者(我也是OS/2迷)。</P> - - <P>他常常说话过头,骂人,我怀疑他有没有经历过什么困难。以他最近的专栏看来,他软化了些。 适当的阴险的幽默不是他早年的方式,完全不是。</P> -</BLOCKQUOTE> - -</BODY> -</HTML>
--- a/DOCS/zh/video.html Mon Dec 18 15:15:21 2006 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1094 +0,0 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> -<HTML> - -<HEAD> - <TITLE>视频 -- MPlayer -- Linux下的电影播放器</TITLE> - <LINK REL="stylesheet" TYPE="text/css" HREF="../default.css"> - <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=gbk"> -</HEAD> - -<BODY> - - -<H3><A NAME="video">2.3.1 视频输出设备</A></H3> - - -<H4><A NAME="mtrr">2.3.1.1 MTRR的设置</A></H4> - -<P>强烈建议你检查你的MTRR注册是否正确的设定了,因为他们能极大的提高性能。</P> - -<P>运行'<CODE>cat /proc/mtrr</CODE>':</P> - -<P><CODE> - --($:~)-- cat /proc/mtrr<BR> - reg00: base=0xe4000000 (3648MB), size= 16MB: write-combining, count=9<BR> - reg01: base=0xd8000000 (3456MB), size= 128MB: write-combining, count=1</CODE></P> - -<P>这是正确的,显示我的Matrox G400有16MB显存存。我从XFree 4.x.x得到这个,它会自动地设定MTRR注册。</P> - -<P>如果没有什么自动工作,你将不得不手工做。首先,你必须找到基地址。你有3种方法找它:</P> - -<UL> - <LI>根据X11的启动信息,例如: - <P><CODE>(--) SVGA: PCI: Matrox MGA G400 AGP rev 4, Memory @ 0xd8000000, 0xd4000000<BR> - (--) SVGA: Linear framebuffer at 0xD8000000</CODE></P></LI> - <LI>从/proc/pci(使用lspci -v命令): - <P> - <CODE>01:00.0 VGA compatible controller: Matrox Graphics, Inc.: Unknown device 0525</CODE> - <CODE>Memory at d8000000 (32-bit, prefetchable)</CODE> - </P></LI> - <LI>根据mga_vid内核驱动的信息(使用dmesg): - <P><CODE>mga_mem_base = d8000000</CODE></P></LI> -</UL> - -<P>接着让我们来确定显存大小。这十分容易,只要把显存大小变为十六进制,或者使用这个表格:</P> - -<TABLE BORDER=0> - <TR><TD> </TD><TD>1 MB</TD><TD WIDTH="10%"></TD><TD>0x100000</TD></TR> - <TR><TD></TD><TD>2 MB</TD><TD></TD><TD>0x200000</TD></TR> - <TR><TD></TD><TD>4 MB</TD><TD></TD><TD>0x400000</TD></TR> - <TR><TD></TD><TD>8 MB</TD><TD></TD><TD>0x800000</TD></TR> - <TR><TD></TD><TD>16 MB</TD><TD></TD><TD>0x1000000</TD></TR> - <TR><TD></TD><TD>32 MB</TD><TD></TD><TD>0x2000000</TD></TR> -</TABLE> - - -<P>你知道了基地址和显存大小,下面让我们进行MTRR注册!例如,对于上述32MB显存( size=0x2000000 )的Matrox显卡(base=0xd8000000)就运行:</P> - - -<P><CODE> echo "base=0xd8000000 size=0x2000000 type=write-combining" >| /proc/mtrr</CODE></P> - - -<P>并非所有CPU都支持MTRR。比如较老的K6-2[266MHz左右,步进值0]不支持MTRR,但是步进值12的就 -支持(用'<CODE>cat /proc/cpuinfo</CODE>'命令检查)。</P> - -<H4><A NAME="normal">2.3.1.2 传统显卡的视频输出</A></H4> - -<H4><A NAME="xv">2.3.1.2.1 Xv</A></H4> - -<P>在XFree86 4.0.2或者更新的版本下,你能使用XVideo扩展来使用你的显卡的硬件YUV例程。这是就是'-vo xv'所使用的。同时, -这是支持调节亮度/对比度/色相/等等的驱动(除非你使用旧的,缓慢的DirectShow DivX解码器,什么驱动它都支持),参见man page。</P> - -<P>为了使它工作,确信做如下检查:</P> - -<UL> - <LI>你必须使用XFree86 4.0.2或者更新的版本(以前的版本没有XVideo)</LI> - <LI>你的显卡确实支持硬件加速(现在的显卡都支持)</LI> - <LI>X加载了XVideo扩展,它是像这样的: - - <P><CODE> (II) Loading extension XVideo</CODE></P> - - <P>显示在/var/log/XFree86.0.log中</P> - - <P>注意: 这只是加载XFree86的扩展。在正常的安装中,这是总被加载的,这并不意味着<B>显卡的</B>XVideo支持被加载了!</P> - </LI> - <LI>你的显卡在Linux下有Xv支持。为了检查,运行'xvinfo',它是XFree86程序集的一部分。它应该显示一段很长的文字,类似于这样: - <PRE> - X_video Extension version 2.2 - screen #0 - Adaptor #0: "Savage Streams Engine" - number of ports: 1 - port base: 43 - operations supported: PutImage - supported visuals: - depth 16, visualID 0x22 - depth 16, visualID 0x23 - number of attributes: 5 - (...) - Number of image formats: 7 - id: 0x32595559 (YUY2) - guid: 59555932-0000-0010-8000-00aa00389b71 - bits per pixel: 16 - number of planes: 1 - type: YUV (packed) - id: 0x32315659 (YV12) - guid: 59563132-0000-0010-8000-00aa00389b71 - bits per pixel: 12 - number of planes: 3 - type: YUV (planar) - (...etc...) - </PRE> - <P>它必须支持YUY2 packed和YV12 planar象素格式,MPlayer才能使用它。</P> - </LI> - <LI>最后,检查MPlayer是否编译了'xv'支持。./configure可以显示出来。</LI> -</UL> - - -<H4><A NAME="xv_3dfx">2.3.1.2.1.1 3dfx显卡</A></H4> - -<P>老的的3dfx驱动存在XVideo加速的问题,它不支持YUY2或者YV12之类的格式。确定你的XFree86版本在4.2.0以上, -它在YV12和YUY2模式下工作很好。以前的版本,包括4.1.0,<B>会在YV12下崩溃</B>。如果你使用-vo xv时遇到奇怪的问题, -尝试使用SDL(它也有XVideo)看是否有帮助。细节请察看<A HREF="#sdl">SDL部分</A>。</P> - -<P><B>或者</B>,试试新的-vo tdfxfb驱动! 参见<A HREF="#tdfxfb">tdfxfb</A>部分。</P> - - -<H4><A NAME="xv_s3">2.3.1.2.1.2 S3显卡</A></H4> - -<P>S3 Savage3D应该能正常工作,不过对于Savage4,请使用XFree86 4.0.3或更新的版本(如果图象有问题,试试16bpp)。 -至于S3 Virge,虽然有xv支持,但是这种显卡实在太慢,因此你最好卖了它。</P> - -<P><B>注意</B>:目前不清楚Savage结构的那个部分缺少YV12支持,而是用驱动进行转换的(很慢)。如果你怀疑你的显卡,找一 -个新的驱动,或者在mplayer-users的邮件列表上礼貌的询问支持MMX/3DNow的驱动。</P> - - -<H4><A NAME="xv_nvidia">2.3.1.2.1.3 nVidia显卡</A></H4> - -<P>nVidia在Linux下不是很好的选择(nVidia认为,这<A HREF="users_against_developers.html#nvidia">并非真实情况</A>).. -你将不得不使用二进制的非开源的nVidia驱动,nVidia的网站可以找到。标准XFree86驱动没有这些显卡的XVideo支持, -因为nVidia没有公开源码/规格。</P> - -<P>据我所知最新的XFree86驱动包含了GeForce2和3的XVideo支持。</P> - -<P>Riva128显卡即使用nVidia的驱动也没有XVideo支持:(向nVidia抱怨去吧。</P> - - -<H4><A NAME="xv_ati">2.3.1.2.1.4 ATI显卡</A></H4> - -<UL> - <LI><A HREF="http://www.linuxvideo.org/gatos">GATOS驱动</A>(除非你有Rage128或者Radeon,否则你应该使用它)缺省打开VSYNC。 -这意味着解码速度(!)与显示器的刷新率是同步的。如果觉得播放速度缓慢,以某种方式禁用VSYNC,或者把刷新率调到到n*(电影的fps)Hz。</LI> - <LI>Radeon VE -- 目前只有XFree86的CVS里有这种显卡的驱动,4.1.0版没有。同时没有电视支持。当然, -使用MPlayer你能幸福地得到<B>加速</B>显示,有或没有<B>电视输出</B>,而且不需要任何库或者X。阅读<A HREF="#vidix">Vidix</A>一节。</LI> -</UL> - - -<H4><A NAME="xv_neomagic">2.3.1.2.1.5 NeoMagic显卡</A></H4> - -<P>这些显卡能在许多笔记本电脑里找到。不幸的是,X 4.2.0的驱动不能使用Xv,但是我们为你准备了一个经过修改,能够使用Xv -的驱动。<A HREF="http://www.mplayerhq.hu/MPlayer/contrib/NeoMagic-driver/neomagic_drv.o.4.2.0.bz2">到这里下载</A>。 -这个驱动是由Stefan Seyfried提供的。</P> - -<P>像这样修改你的XF86Config使之能进行DVD大小的内容的播放:</P> - -<P>Section "Device"<BR> - <I>[...]</I><BR> - Driver "neomagic"<BR> - <B>Option "OverlayMem" "829440"</B><BR> - <I>[...]</I><BR> - EndSection</P> - - -<H4><A NAME="xv_trident">2.3.1.2.1.6 Trident显卡</A></H4> - -<P>如果你想要在Trident显卡上使用xv,它在4.1.0下不工作,尝试XFree最新的CVS或者等候XFree 4.2.0。最新的CVS加入 -了Cyberblade XP显卡的全屏Xv支持。</P> - -<H4><A NAME="xv_powervr">2.3.1.2.1.7 Kyro/PowerVR cards</A></H4> - -<P>如果你想在一块基于Kyro的显卡(例如Hercules Prophet 4000XT)上使用Xv,你应该从<A - HREF="http://www.powervr.com/">PowerVR的网站</A>上下载驱动。</P> - - -<H4><A NAME="dga">2.3.1.2.2 DGA</A></H4> - -<H4>引言</H4> - -<P>这部分文档试图花些篇幅来解释DGA大概是什么以及MPlayer的DGA视频输出驱动能干什么(和不能干什么)。</P> - - -<H4>DGA是什么</H4> - -<P>DGA是Direct Graphics Access的简称,是一种使程序绕过X-服务器直接修改帧缓冲显存的方法。从技术角度说 -这是通过把帧缓冲显存映射到你的处理器的内存范围之内。只有你有超级用户权限的时候内核才允许这种操作。用root登录或者 -给MPlayer的执行文件设置SUID位(推荐使用!)可以做到这一点。</P> - -<P>DGA有两种版本: DGA1用于XFree 3.x.x和DGA2从XFree 4.0.1开始引入。</P> - -<P>DGA1只提供了前述的帧缓冲直接操作功能。你不得不使用XVidMode扩展来切换视频信号的分辨率。</P> - -<P>DGA2结合了XVidMode扩展的特性而且也允许切换显示的色彩深度。因此,虽然一般使用32位色X服务器,你也能切换到15位色深,反之亦然。</P> - -<P>然而DGA也有一些弊端。它似乎有些依赖于你使用的图形芯片和X服务器中控制该芯片的视频驱动。因此,它并不是对所有的系统都起作用。</P> - - -<H4>为MPLAYER安装DGA支持</H4> - -<P>首先确保X装载了DGA扩展,察看/var/log/XFree86.0.log:</P> - -<P> <CODE>(II) Loading extension XFree86-DGA</CODE></P> - -<P>可见,强烈推荐XFree86 4.0.x或更高版本,MPlayer的DGA驱动在./configure时会自动检测到,否则你可以用--enable-dga强行编译它。</P> - -<P>如果你的驱动不能切换到一个较小的分辨率,尝试使用-vm(只用于X 3.3.x),-fs,-bpp,-zoom选项找一个适合你的电影的视频模式。目前没有转换功能:(</P> - -<P>成为root。DGA需要root权限来直接写显存。如果你想用普通用户运行它,给MPlayer设置SUID root权限:</P> - -<P><CODE> - chown root /usr/local/bin/mplayer<BR> - chmod 750 /usr/local/bin/mplayer<BR> - chmod +s /usr/local/bin/mplayer</CODE></P> - -<P>它现在也能被普通用户使用了。</P> - -<BLOCKQUOTE> - <B>警告:安全风险</B><BR> - 这是一个<B>很大的</B>安全风险!<B>永远</B>不要在除了你之外还有人可以使用的服务器上这样做,因为他们能通过SUID root的MPlayer获得root权限。 -</BLOCKQUOTE> - -<P>现在使用<CODE>-vo dga</CODE>选项,开始使用(如此希望:))! - 你也应该尝试看看<CODE>-vo sdl:dga</CODE>选项能否正常工作。它快得多。</P> - - -<H4><A NAME="dga_modelines">切换分辨率</A></H4> - -<P>DGA驱动允许切换输出信号的分辨率。这样能避免使用(缓慢的)软件缩放同时又提供全屏图象。理想情况下,它将精确切换成视频数据 -的分辨率(除了为了保持长宽比),但是X服务器仅允许切换到<CODE>/etc/X11/XF86Config</CODE>(XFree 4.0.X使 -用<CODE>/etc/X11/XF86Config-4</CODE>用于区别)中预定义的分辨率。它们被所谓的modelines定义并且依赖于你的视频硬件的 -能力。X服务器启动时扫描这个配制文件并且禁用那些不适用于你的硬件的modelines。你能通过X11的log文件找出哪些方式可用。它能 -在这里找到:<CODE>/var/log/XFree86.0.log</CODE>。</P> - -<P>下面的例子对于一块Riva128芯片工作良好,使用X server的驱动模块<CODE>nv.o</CODE>。</P> - -<PRE> - Section "Modes" - Identifier "Modes[0]" - Modeline "800x600" 40 800 840 968 1056 600 601 605 628 - Modeline "712x600" 35.0 712 740 850 900 400 410 412 425 - Modeline "640x480" 25.175 640 664 760 800 480 491 493 525 - Modeline "400x300" 20 400 416 480 528 300 301 303 314 Doublescan - Modeline "352x288" 25.10 352 368 416 432 288 296 290 310 - Modeline "352x240" 15.750 352 368 416 432 240 244 246 262 Doublescan - Modeline "320x240" 12.588 320 336 384 400 240 245 246 262 Doublescan - EndSection -</PRE> - - -<H4>DGA & MPLAYER</H4> - -<P>MPlayer在有两种方法使用DGA:SDL驱动能使用它(-vo sdl:dga),DGA驱动(-vo dga)页使用它。上面说的内容对两者都有效; -在下列的几段中我将解释MPlayer中DGA驱动是如何工作的。</P> - - -<H4>特性</H4> - -<P>DGA驱动通过命令行中的-vo dga选项调用。默认操作是转换成与原来的视频尽可能接近的分辨率。它将忽略-vm和-fs选项(开启视频模式切换和全屏方式) --- 它总试图通过切换显示模式尽可能多的覆盖你的屏幕,这样阻碍你的CPU使用一个单一的附加的周期来放大图像。 -如果你不喜欢它选择的模式你能强迫它选择最接近于你通过-x和-y选项规定的分辨率的模式。使用-v选项,DGA驱动将在一大堆别的东西中打印出你 -当前XF86-Config文件支持的所有分辨率的列表。 -如果是DGA2你也能通过使用-bpp选项强迫它使用一定的色彩深度。有效的色深是15,16,24和32。这取决于你的硬件对这些色深是否本地支持, -还是通过某种(有可能很慢)的转化来完成的。</P> - -<P>如果你非常幸运,有足够显存的屏外缓冲区来存放整个图象,DGA驱动将使用双重缓冲,这能使电影播放更加平滑。它会告诉你双重缓冲是否被打开。</P> - -<P>双重缓冲的意思是在你的视频的当前帧被显示时,下一帧在屏外缓冲区中被绘制。当下一帧准备完毕时, -图形芯片被告知下一帧在显存中的位置并且直接从那里将要显示的数据读出来。在此期间其它在记忆中的缓冲器将再一次被装满新的视频数据。</P> - -<P>双重缓冲可以用-double选项开启也可以用-nodouble选项禁止。目前缺省选项是禁用双重缓冲。屏幕显示功能(OSD)在使用DGA驱动模式时必须打开双重缓冲功能。 -然而,使用双重缓冲可能导致较大的速度下降(在我的K6-II+ 525上它多占用20%的CPU时间!),下降程度取决于DGA操作你的硬件的方法。</P> - - -<H4>速度问题</H4> - -<P>一般来说,DGA帧缓冲至少应该跟X11驱动一样快同时还有全屏图象的附加好处。对MPlayer打印出的百分比速度的评价应该小心, -比如X11驱动它们并不包括X-服务器真正绘制所用的时间。开一个终端连到你的机器的串口上运行top命令看看你的机器真正在干什么...</P> - -<P>一般来说,使用DGA相对“普通的”使用X11所产生的速度提高高度依赖于你的显卡,以及X-服务器中它的模块做了多少优化。</P> - -<P>如果你的系统较慢,最好使用15或者16bit色深,因为他们仅仅要求32bit显示的显存带宽的一半。</P> - -<P>即使你的显卡自身就支持32bit色深,使用24bit的色深也是个好主意,因为它被32/32方式少传输25%的数据。</P> - -<P>我曾见过一些AVI文件能在Pentium MMX 266上播放。AMD K6-2 CPU在400 MHZ以上的应该可以工作。</P> - - -<H4>已知的BUG</H4> - -<P>嗯,据一些XFree的开发者说,DGA像头野兽。他们告诉你不要使用它。并非对任何芯片的驱动它的操作都是没有瑕疵的。</P> - -<UL> - <LI>在XFree 4.0.3的nv.o有一个bug导致奇怪的颜色。</LI> - <LI>ATI驱动在使用DGA完成之后要不只一次的切换显示模式。</LI> - <LI>一些驱动无法切换会正常的分辨率(用Ctrl-Alt-小键盘+,-来手工切换)。</LI> - <LI>一些驱动显示奇怪的颜色。</LI> - <LI>一些驱动错误报告他们映射到处理器地址空间中的显存数量,这样vo-dga将无法使用双重缓冲(SIS?)。</LI> - <LI>一些驱动好像根本找不到一个可用的模式。在这种情况下,DGA驱动将crash并报告100000x100000的无效模式之类的东西...</LI> - <LI>OSD只能在双重缓冲开启的时候才正常工作(否则会闪烁)。</LI> -</UL> - - -<H4><A NAME="sdl">2.3.1.2.3 SDL</A></H4> - -<P>SDL(Simple Directmedia Layer)基本上是一种统一的视频/音频接口。使用它的程序只要知道SDL,而不需要了解SDL实际上使用的视频或音频驱动。 -例如使用SDL的Doom移植能在svgalib,aalib,X,fbdev,和其他东西上使用,你仅需要用环境变量SDL_VIDEODRIVER规定(例如)使用的视频驱 -动。嗯,至少在理论上。</P> - -<P>在MPlayer中,我们使用它的X11驱动的软件缩放功能,用于不支持XVideo的芯片/显卡,直到我们做出我们自己的(更快,更好)的软件缩放代码。 -同时我们使用它的aalib输出,但是现在我们自己的更合适的了。它的DGA模式比我们的好,直到最近。现在明白了? :)</P> - -<P>它对一些buggy的驱动/显卡也有帮助,例如视频跳跃(不是系统缓慢的问题),或者音频延迟。</P> - -<P>SDL视频输出支持在电影下面,(如果出现)的黑条上显示字幕。</P> - -<P><B>这里是一些关于SDL输出的控制选项:</B></P> - -<DL> - <DT><CODE>-vo sdl:name</CODE></DT> - <DD>规定使用的sdl视频驱动(例如aalib,dga,x11)</DD> - - <DT><CODE>-ao sdl:name</CODE></DT> - <DD>规定使用的sdl音频驱动(例如dsp,esd,arts)</DD> - - <DT><CODE>-noxv</CODE></DT> - <DD>禁用XVideo硬件加速</DD> - - <DT><CODE>-forcexv</CODE></DT> - <DD>尝试强制XVideo加速</DD> - -</DL> - -<TABLE BORDER=0> - <TR><TD COLSPAN=4><P><B>SDL控制键:</B></P></TD></TR> - <TR><TD></TD><TD><CODE>F</CODE></TD><TD></TD><TD>切换全屏/窗口方式</TD></TR> - <TR><TD></TD><TD><CODE>C</CODE></TD><TD></TD><TD>循环切换可用的全屏方式</TD></TR> - <TR><TD></TD><TD><CODE>W与S</CODE></TD><TD></TD><TD>*和/的映射(音量控制)</TD></TR> -</TABLE> - -<H4>已知的BUG:</H4> - -<UL> - <LI>在sdl:aalib控制台驱动下按下的键将永远重复。(使用-vo aa!)它是SDL中的bug,我无法改变它(用SDL 1.2.1测试)。</LI> - <LI>不要在GUI中使用SDL!它不会像预想的那样工作。</LI> -</UL> - - -<H4><A NAME="svgalib">2.3.1.2.4 SVGAlib</A></H4> - -<H4>安装</H4> - -<P>你必须安装svgalib和它的开发包来使MPlayer编译它的SVGAlib驱动(自动检测,但是也能强制使用), -别忘了编辑/etc/vga/libvga.config来配合你的显卡&监视器。</P> - -<H4>注意</H4> - -<P>一定不要用-fs选项,因为它将导致使用软件缩放,速度会很慢,如果你确实需要,使用<CODE>-sws 4</CODE>选项, -质量会有点差,但是无论如何它更快。</P> - -<H4>EGA(4BPP)支持</H4> - -<P>SVGAlib结合了EGAlib,使得MPlayer有可能用16种颜色播放任何电影,下列的配制中可以使用:</P> - -<UL> - <LI>EGA显卡和EGA显示器: 320x200x4bpp,640x200x4bpp,640x350x4bpp</LI> - <LI>EGA显卡和CGA显示器: 320x200x4bpp,640x200x4bpp</LI> -</UL> - -<P>bpp(每象素比特数)的值必须手工设为4:<BR> - <CODE>-bpp 4</CODE><BR> - 电影可能必须被按比例缩小到EGA适合的模式:<BR> - <CODE>-vf scale=640:350</CODE>或者<BR> - <CODE>-vf scale=320:200</CODE><BR> - 为做到这一点我们需要使用快速但低质量的例程:<BR> - <CODE>-sws 4</CODE><BR> - 也许自动纠正长宽比的功能需要关闭:<BR> - <CODE>-noaspect</CODE></P> -<P><B>注意:</B>根据我的经验用<CODE>-vf eq=-20:0</CODE>稍稍降低亮度可以在EGA屏幕上获得最好的图象质量。在我的 -机器上我也要降低音频采样率,因为声音在44kHz时很差:<CODE>-srate 22050</CODE>.</P> - -<P>你只有打开<CODE>expand</CODE>滤镜才能使用OSD和字幕。具体参数参见man page。</P> - - -<H4><A NAME="fbdev">2.3.1.2.5 帧缓冲输出(FBdev)</A></H4> - -<P>是否编译FBdev目标是在./configure期间自动检测的。阅读内核源码中的帧缓冲的文档(Documentation/fb/*)来了解更多信息。</P> - -<P>如果你的显卡不支持VBE 2.0标准(较旧的ISA与PCI显卡,诸如S3 Trio64),仅支持VBE 1.2(或者更老的?): -嗯,VESAfb仍然是可用的,但是你将必须在启动Linux之前装载SciTech Display Doctor(从前叫UniVBE )。 -用DOS启动盘或随便什么。同时,别忘了注册你的UniVBE ;))</P> - -<P>FBdev输出有些除了以前说过的参数外的附加参数:</P> - -<DL> - <DT><CODE>-fb</CODE></DT> - <DD>规定使用的帧缓冲设备(/dev/fb0)</DD> - - <DT><CODE>-fbmode</CODE></DT> - <DD>使用的模式名(按照/etc/fb.modes文件)</DD> - - <DT><CODE>-fbmodeconfig</CODE></DT> - <DD>模式的配置文件方式(默认为/etc/fb.modes)</DD> - - <DT><CODE>-monitor-hfreq</CODE></DT> - <DT><CODE>-monitor-vfreq</CODE></DT> - <DT><CODE>-monitor-dotclock</CODE></DT> - <DD><STRONG>重要的</STRONG>参数,参见<CODE>example.conf</CODE></DD> -</DL> - -<P>如果你想要切换到某个具体模式,那么使用</P> - -<P><CODE> mplayer -vm -fbmode (NameOfMode) filename</CODE></P> - -<UL> - <LI><B>-vm</B>单独使用将从/etc/fb.modes中选出最适合的模式。也可以与-x和-y选项一起使用。-flip选项只有当电影的像素格式 -与视频模式的像素格式相同时才支持。注意bpp的值,fbdev驱动将尝试使用当前值,如果你设定-bpp选项,那么就是那个值。</LI> - <LI><B>-zoom</B>选项不支持(软件定标太慢了)。-fs选项不支持。你不能使用8bpp(或者更少)的模式。</LI> - <LI>你有可能想要关掉光标:<CODE>echo -e '\033[?25l'</CODE>或<CODE>setterm -cursor off</CODE><BR> - 和屏幕保护:<CODE>setterm -blank 0</CODE><BR> - 要重新开启光标:<CODE>echo -e '\033[?25h'</CODE>或<CODE>setterm -cursor on</CODE></LI> -</UL> - -<P>注意:使用VESA 帧缓冲时FBdev视频方式不能改变,也不要要求这个功能,因为它不是由于MPlayer自身的限制。</P> - - -<H4><A NAME="mga_vid">2.3.1.2.6 Matrox帧缓冲(mga_vid)</A></H4> - -<P>这一段是关于Matrox G200/G400/G450/G550 BES (Back-End Scaler)的支持,mga_vid内核驱动。它现在是由A'rpi开发, -它有三重缓冲的硬件VSYNC支持。它在帧缓冲控制台下和X下都可以工作。</P> - -<P><B>警告</B>:在非Linux系统(在FreeBSD上测试过)上,要使用<A HREF="#vidix">VIDIX</A>实现mga_vid!</P> - - -<P><B>安装:</B></P> -<OL> - <LI>为了使用它,你首先必须编译mga_vid.o:</P> - <P><CODE>cd drivers<BR> - make</CODE></P></LI> - <LI>然后创建<CODE>/dev/mga_vid</CODE>设备: - <P><CODE>mknod /dev/mga_vid c 178 0</CODE></P> - <P>然后这样加载驱动</P> - <P><CODE>insmod mga_vid.o</CODE></P></LI> - <LI>你应该使用<CODE>dmesg</CODE>命令检查显存大小的检测结果。如果不对,那么使用mga_ram_size选项(先<CODE>rmmod - mga_vid</CODE>),以MB为单位指定显卡的显存大小: - <P><CODE>insmod mga_vid.o mga_ram_size=16</CODE></P></LI> - <LI>为了使它在需要时自动地加载/卸载,首先在<CODE>/etc/modules.conf</CODE>的末尾加上下面这一行: - <P><CODE>alias char-major-178 mga_vid</CODE></P> - <P>然后把<CODE>mga_vid.o</CODE>模块复制到<CODE>/lib/modules/<kernel version>/somewhere</CODE>下的适当位置。</P> - <P>然后运行</P> - <P><CODE>depmod -a</CODE></P></LI> - <LI>你现在需要(重新)编译MPlayer,<CODE>configure</CODE>将检测到<CODE>/dev/mga_vid</CODE>并且编译'mga'驱动。如果你使用matroxfb控制台, - 在MPlayer中用<CODE>-vo mga</CODE>使用它,或者在XFree86 3.x.x或者4.x.x下的使用<CODE>-vo xmga</CODE>。</P> -</OL> - -<P>mga_vid驱动能与Xv协同工作。</P> - -<P>可以阅读<CODE>/dev/mga_vid</CODE>设备文件(例如<CODE>cat /dev/mga_vid</CODE>)来查找一些信息, -也可以通过写它来调整亮度:<CODE>echo "brightness=120" > /dev/mga_vid</CODE></P> - - -<H4><A NAME="tdfxfb">2.3.1.2.7 3dfx YUV支持(tdfxfb)</A></H4> - -<P>这个驱动使用内核的tdfx帧缓冲驱动来利用YUV加速播放电影。你需要一个支持tdfxfb的内核, -然后用<CODE>./configure --enable-tdfxfb</CODE>重新编译</P> - - -<H4><A NAME="opengl">2.3.1.2.8 OpenGL输出</A></H4> - -<P>MPlayer支持使用OpenGL显示电影,但是如果你的平台/驱动支持xv,就象使用linux的PC机那样,就使用xv,OpenGL的效果与它相比相当坏。 -如果你只有没有xv支持的X11程序,OpenGL是可用的选择。</P> - -<P>不幸的是并非所有驱动都支持这个特性。Utah-GLX驱动(针对XFree86 3.3.6)对所有显卡都支持它。访问<A -HREF="http://utah-glx.sourceforge.net">http://utah-glx.sourceforge.net</A>了解安装它的细节问题。</P> - -<P>XFree86(DRI) 4.0.3以上支持Matrox和Radeon显卡的OpenGL,4.2.0或更新版本支持Rage128。 -访问<A HREF="http://dri.sourceforge.net">http://dri.sourceforge.net</A>以寻找下载和安装指导。</P> - - -<H4><A NAME="aalib">2.3.1.2.9 AAlib -- 文本方式显示</A></H4> - -<P><B>AAlib </B>是一个用于在文本模式下显示图形的库,它使用强大的ASCII渲染器。有许多程序提供对它的支持,像Doom,Quake等等。 -MPlayer包含一个针对它的实用的驱动。如果./configure发现安装了aalib,aalib的libvo驱动将被编译。</P> - -<TABLE BORDER=0> - <TR><TD COLSPAN=4><P><B>你能在AA窗口中使用一些控制键来改变渲染参数:</B></P></TD></TR> - <TR><TD> </TD><TD><CODE>1</CODE></TD><TD> </TD><TD>减少对比度</TD></TR> - <TR><TD></TD><TD><CODE>2</CODE></TD><TD></TD><TD>增加对比度</TD></TR> - <TR><TD></TD><TD><CODE>3</CODE></TD><TD></TD><TD>减少亮度</TD></TR> - <TR><TD></TD><TD><CODE>4</CODE></TD><TD></TD><TD>增加亮度</TD></TR> - <TR><TD></TD><TD><CODE>5</CODE></TD><TD></TD><TD>打开/关闭快速渲染</TD></TR> - <TR><TD></TD><TD><CODE>6</CODE></TD><TD></TD><TD>设置抖动方式(不抖动, 误差分布算法, Floyd Steinberg算法)</TD></TR> - <TR><TD></TD><TD><CODE>7</CODE></TD><TD></TD><TD>反转图象</TD></TR> - <TR><TD></TD><TD><CODE>a</CODE></TD><TD></TD><TD>转换aa和MPlayer的控制键</TD></TR> -</TABLE> - -<P><B>下列的命令行选项能够使用:</B></P> -<DL> - <DT><CODE>-aaosdcolor=V</CODE></DT> - <DD>改变OSD颜色</DD> - - <DT><CODE>-aasubcolor=V</CODE></DT> - <DD>改变字幕颜色 - <P><I>V的值可以是:(0/正常,1/暗色,2/粗体,3/粗体字体,4/反转,5/特殊) </I></P></DD> -</DL> - -<P><B>AAlib自身也提供了大量的选项。这里是一些重要的:</B></P> -<DL> - <DT><CODE>-aadriver</CODE></DT> - <DD>设置推荐aa的驱动( X11,curses,Linux )</DD> - - <DT><CODE>-aaextended</CODE></DT> - <DD>使用所有的256个字符</DD> - - <DT><CODE>-aaeight</CODE></DT> - <DD>使用8比特的ASCII</DD> - - <DT><CODE>-aahelp</CODE></DT> - <DD>列出所有的aalib选项</DD> -</DL> - -<P>注意:渲染效果是十分消耗CPU的,特别是使用AA-on-X(在X上使用aalib),在标准的非帧缓冲控制台上的CPU消耗是最小的, -用SVGATextMode设置一个大的文本模式,然后再欣赏电影!(大力神显卡的第二个接口就不错:))(但我建议你用<CODE>-vf - 1bpp</CODE>选项在hgafb上获得图象;)</P> - -<P>如果你的计算机速度不足以渲染所有帧就使用<CODE>-framedrop</CODE>选项</P> - -<P>在终端中播放电影时使用Linux驱动你将会得到更好的速度和画面质量,不要用curses(<CODE>-aadriver Linux</CODE>)。 -但是为此你需要<CODE>/dev/vcsa<terminal></CODE>的写权限。那是aalib不能自动检测的,但vo_aa会尝试搜索最佳模式, -进一步的调节问题参见<A HREF="http://aa-project.sourceforge.net/tune/">http://aa-project.sourceforge.net/tune/</A>。</P> - - -<H4><A NAME="vesa">2.3.1.2.10 VESA -- 输出到VESA BIOS</A></H4> - -<P>这个驱动被设计并引入作为一个<B>通用的驱动</B>用于任何有VESA VBE 2.0兼容的BIOS的显卡。这驱动的另一个优点是能试图迫使在其上进行电视输出。<BR> - <B>VESA BIOS EXTENSION(VBE)3.0版 日期:1998年九月16日</B>(第70页)说:</P> - -<BLOCKQUOTE> - <B>双重控制器设计</B><BR> - VBE 3.0支持双重控制器设计基于如下假设,由于两个控制器一般是同样的OEM提供的,被同一块显卡上的一个的BIOS ROM,所以可以对程序隐藏有两个 -控制器在作用的事实。这限制了同时的使用独立的控制器的功能,但是允许VBE 3.0发布前的程序能正常工作。VBE函数00h(返回控制器信息)返回经过合并的 -两个控制器的信息,包括经过合并的可供使用的方式的列表。当程序选择一个方式时,相应的控制器被激活。然后剩下的VBE函数都作用在激活的控制器上。 -</BLOCKQUOTE> - -<P>因此,你有可能通过这个驱动得到电视输出。<BR> - (我猜想电视至少经常地是使用独立的头或者独立的输出)。</P> - -<H4>优点</H4> - -<UL> - <LI><B>即使Linux不能识别</B>你的视频硬件你或许还能看电影。</LI> - <LI>你不需要在你的Linux上安装任何图形相关的东西(像X11(或者叫XFree86),fbdev诸如此类)。这个驱动能从<B>文本方式</B>运行。</LI> - <LI>你有机会获得<B>可用的电视输出</B>。(至少已知ATI的显卡可以)。</LI> - <LI>这个驱动调用<B>int 10h</B>中断因此它不是模拟器 -- 它<B>实时</B>调用<B>真正的</B>BIOS中的<B>真正的</B>功能。(效果不错 -- - 按vm86方式)。</LI> - <LI>你可以对它使用Vidix,这样能加速视频显示<B>同时</B>也加快电视输出!(ATI显卡推荐)</LI> - <LI>如果你有VESA VBE 3.0+,而且在什么地方(配置文件,或者命令行)设置了<CODE>monitor-hfreq</CODE>, - <CODE>monitor-vfreq</CODE>, <CODE>monitor-dotclock</CODE>你将获得可能的最高的刷新率。 - (使用一般的计时公式)。要启用这个特性你必须设定你的显示器的<B>所有</B>选项。</LI> -</UL> - -<H4>缺点</H4> - -<UL> - <LI>它只能在<B>x86系统</B>上工作。</LI> - <LI>它只能由<B>root</B>使用。</LI> - <LI>它目前只能用在<B>Linux</B>上。</LI> -</UL> - -<P>使用<B>GCC 2.96</B>就不要使用这个驱动!它不能工作!</P> - -<H4>可用于VESA命令行选项</H4> -<DL> - <DT><CODE>-vo vesa:opts</CODE></DT> - <DD>当前能识别的:<B>dga</B>强迫dga方式,<B>nodga</B>禁用dga方式。在dga模式下你可以通过使用<CODE>-double</CODE>选项来使用 -双重缓冲。注意:你能 省略这些参数来开启<B>自动检测</B>dga方式。</DD> -</DL> - -<H4>已知的问题和绕过办法</H4> - -<UL> - <LI>如果你在你的Linux机器上安装了<B>NLS</B>并且从文本方式运行VESA驱动,那么MPlayer终止后你将看到<B>ROM字体</B>而不是本地的字体。 -你可以重新加载本地的字体例如在Mandrake中使用<B><I>setsysfont</I></B>。</BR> - (<B>提示:</B>相同的工具也用于fbdev的地方化)。</LI> - <LI>一些<B>Linux显卡驱动</B>不更新在DOS内存中的活动的<B>BIOS模式</B>。因此如果你有这样问题 -- 总是只从<B>文本方式</B>使用VESA驱动。 -否则,文本方式(#03)总要被激活接着你将需要重起你的计算机。</LI> - <LI>通常在终止VESA驱动之后你将看到<B>黑屏</B>。为了把你的屏幕回复原状 -- 只要切换到其它控制台(通过按<B>Alt-Fx</B>)然后再用 -同样的方法切换回你以前的控制台。</LI> - <LI>为了得到<B>可用的电视输出</B>你需要在启动导入你的电脑之前将电视连接器插上,因为视频BIOS只在自举过程中进行一次初始化。</LI> -</UL> - - -<H4><A NAME="x11">2.3.1.2.11 X11</A></H4> - -<P>尽量避免使用它。输出到X11(使用共享内存扩展),完全没有硬件加速。支持(MMX/3DNow与SSE加速,但是仍然缓慢的)软件缩放, -使用选项<CODE>-fs -zoom</CODE>。大多数显卡有硬件缩放支持,使用<CODE>-vo xv</CODE>对他们输出,或者对于Matroxes使用<CODE>-vo xmga</CODE>。</P> - -<P>问题在于大多数显卡的驱动在第二个接口/电视接口上不支持硬件加速。在那些情况下,你将看到绿色和蓝色的彩色窗口而不是电影。 -这是这个驱动起作用的地方,但是你需要强大的CPU来使用软件缩放。不要使用SDL驱动的软件输出+缩放,它的图象质量比较差!</P> - -<P>软件缩放是十分缓慢的,你最好尝试用改变视频模式的方法代替它。它十分简单。参见<A HREF="#dga_modelines">DGA一节的modelines</A>, -并且将他们插入到你的XF86Config。</P> - -<UL> - <LI>如果你有XFree86 4.x.x -- 使用<CODE>-vm</CODE>选择。它将切换到适合你的电影的分辨率。如果你的XFree86不是:</LI> - <LI>使用XFree86 3.x.x -- 你必须使用<B>CTRL-ALT-plus</B>和<B>minus</B>控制键循环可用的分辨率。</LI> -</UL> - -<P>如果你调整不到你设定的模式,检查XFree86的输出。有些驱动不能使用低分辨率视频方式所需要的低的像素频率。</P> - - -<H4><A NAME="vidix">2.3.1.2.12 VIDIX</A></H4> - -<H4>引言</H4> - -<P>VIDIX是<B>VID</B>eo <B>I</B>nterface for *ni<B>X</B>的缩写。<BR> - VIDIX被设计和引入作为快速的用户空间驱动的接口提供类似mga_vid为了Matrox显卡提供的这样视频性能的。它也十分易于移植。</P> - -<P>这个接口被设计来作为一个将存在的视频加速接口(就是mga_vid,rage128_vid,radeon_vid,pm3_vid )统一到一个固定的系统的尝试。 -它给芯片提供BES(BackEnd scalers)或OV(Video Overlays)之类的高层接口。它不为那些图像服务器该做的事情提供底层接口。 -(我不想跟X11开发组在切换图像模式上竞争)。即这接口的主要目的是充分提高视频播放的速度。</P> - -<H4>用法</H4> - -<UL> - <LI>你能使用独立的视频输出驱动:<CODE>-vo xvidix</CODE><BR> - 这个驱动被设计为使用VIDIX技术的X11的前端。它要求X服务器而且仅仅只能在X服务器下工作。注意,由于它绕过X的驱动直接 -访问硬件,显存中的暂存的图像可能被破坏。你可以通过设置XF86Config中的device部分的"VideoRam"选项限制X使用的显存大小 -来避免这种情况。你应该设置为你的显卡上显存大小减去4MB。如果你的显存小于8MB,你可以设置screen部分的"XaaNoPixmapCache"选项。</LI> - <LI>你能在若干视频的输出驱动中使用VIDIX副驱动,诸如:<BR> - <CODE>-vo vesa:vidix</CODE>(<B>只用于Linux</B>)和<CODE>-vo fbdev:vidix</CODE></LI> -</UL> - -实际上什么视频输出驱动与<B>VIDIX</B>配合使用并不重要。 - -<H4>要求</H4> - -<UL> - <LI>视频显卡应该工作于图形方式(我所以写<B>应该</B>只是因为我在文本方式下测试了它 -- 它能工作但是输出效果很可怕 ;) 对它还是使用AAlib)。<BR> - <I>注意:每个人能通过注释掉vo_vesa驱动的模式切换部分的方式尝试这个技巧。</I></LI> - <LI>MPlayer的视频输出驱动应该知道活动的视频方式和能够告诉达到VIDIX副驱动服务器的一些视频特性。</LI> -</UL> - -<H4>使用方法</H4> - -<P>当VIDIX被用作<B>副驱动</B>时(<CODE>-vo vesa:vidix</CODE>)视频方式的配置由视频输出设备执行(简单来说就是<B>vo_server</B>)。 -因此,你能对MPlayer使用与vo_server同样的命令行指令。此外,它能使用<CODE>-double</CODE>作为全局的参数。 -(我建议至少在使用ATI显卡时对VIDIX使用这个参数)。<BR> - 至于<CODE>-vo xvidix</CODE>:目前它能识别下列的选项: <CODE>-fs -zoom -x -y -double</CODE>。</P> - -<P>你还能在命令行中使用第三个副参数直接制定VIDIX的驱动:<BR> - <BR> - <code>mplayer -vo xvidix:mga_vid.so -fs -zoom -double - file.avi</code><BR> - or<BR> - <code>mplayer -vo vesa:vidix:radeon_vid.so -fs -zoom -double -bpp - 32 file.avi</code><BR> - <BR> - 但这有点危险,所以你不应该这么做。在这种情况下,被指定的驱动会被强制使用而其结果是无法预计的(它可以把你的计算机<B>锁死</B>)。 -只有在你绝对确信它能工作,而MPlayer没有自动选择它时,你才能这么做。请把情况报告给开发者。 -正确的使用方法是使用没有参数的VIDIX来使用驱动的自动检测。</P> - -<P>VIDIX是一项新技术所以它极有可能在你的系统上不能正常工作。在这种情况下,你唯一的解决办法是移植它(主要是libdha)。 -但它在X11能正常工作的那些系统的上有正常工作的希望。</P> -<P>因为VIDIX需要对硬件直接访问,所以你或者以root运行它,或者给MPlayer的二进制程序设置SUID位(<B>警告:这有安全风险</B>)。或者,你 -可以使用一个特别的内核模块,像这样:</P> - -<OL> - <LI>下载svgalib的<A HREF="http://www.arava.co.il/matan/svgalib/">开发版本</A>(比如1.9.17),<Br> - <B>或者</B><BR> - 从<A HREF="http://www.mplayerhq.hu/~alex/svgalib_helper-1.9.17-mplayer.tar.bz2">这里</A>.下载一个Alex做的 -供MPlayer使用的版本(不需要svgalib的源代码就可以编译)。</LI> - <LI>编译<CODE>svgalib_helper</CODE>目录中的模块(如果你是从svgalib的网页上下载的源代码,可以在<CODE>svgalib-1.9.17/kernel/</CODE>目 -录下找到它),然后insmod。</LI> - <LI>把<CODE>svgalib_helper</CODE>目录移到<CODE>mplayer/main/libdha/svgalib_helper</CODE>.</LI> - <LI>如果你是从svgalib的站点下载的源代码需要:删掉<CODE>libdha/Makefile</CODE>中包含"svgalib_helper"字符串 -的CFLAGS行前面的注释号。</LI> - <LI>重新编译安装libdha.</LI> -</OL> - - -<H4><A NAME="vidix_ati">2.3.1.2.12.1 ATI显卡</A></H4> - -<P>目前大部分ATI显卡都实现了本地支持,从Mach64到最新的Radeon。</P> - -<P>编译生成两个二进制文件:用于Radeon的<CODE>radeon_vid</CODE>和用于Rage 128显卡的<CODE>rage128_vid</CODE>。你可以 -强制使用其中一个或者让VIDIX系统自动载入所有可用的驱动。</P> - - -<H4><A NAME="vidix_matrox">2.3.1.2.12.2 Matrox显卡</A></H4> - -<P>Matrox G200,G400,G450和G550据报告可以工作。</P> - -<P>这个驱动支持视频均衡器比且应该几乎和<A HREF="#mga_vid">Matrox帧缓冲</A>一样快。</P> - - -<H4><A NAME="vidix_trident">2.3.1.12.3 Trident显卡</A></H4> - -<P>有一个可用于Trident Cyberblade/i1芯片的驱动,它们一般出现在VIA的Epia主板上。</P> - -<P>这个驱动有Alastair M. Robinson编写并维护,他在他的<A HREF="http://www.blackfiveservices.co.uk/EPIAVidix.shtml">主页</A>上 -提供他的最新版本的驱动下载。这个驱动会很快被加到MPlayer中,所以CVS应该已经包含最新驱动了。</P> - - -<H4><A NAME="vidix_3dlabs">2.3.1.2.12.4 3DLabs显卡</A></H4> - -<P>尽管有一个用于3DLabs GLINT R3和Permedia3芯片的驱动,但没有人测试过,所以欢迎报告信息。</P> - -<H4><A NAME="directfb">2.3.1.2.13 DirectFB</A></H4> - -<P><I>"DirectFB是设计用于嵌入系统的图形库。它能利用最小的资源开销提供最大的硬件加速效果。"</I> -- 引自<A -HREF="http://www.directfb.org">http://www.directfb.org</A>.</P> - -<P>我在这一部分中将略去DirectFB的特性。</P> - -<P>尽管MPlayer不是DirectFB支持的"video provider",这个输出驱动将开启使用DirectFB的视频播放。这将 -- -当然 -- 实现加速,在我的Matrox G400上DirectFB的速度跟XVideo一样。</P> - -<P>总是尽量使用最新的DirectFB。你可以在命令行中通过使用<CODE>-dfbopts</CODE>选项设置DirectFB的选项。 -层选择可以通过副驱动模式实现,例如:<CODE>-vo - directfb:2</CODE>(默认使用layer -1:自动选择)</P> - - -<H4><A NAME="dfbmga">2.3.1.2.14 DirectFB/Matrox(dfbmga)</A></H4> - -<P>请阅读<A HREF="#directfb">DirectFB的一般介绍部分</A>来了解概要信息。</P> - -<P>这个视频输出驱动将开启Matrox G400/G450/G550显卡上的CRTC2(第二个接口),显示<B>独立于</B>第一个接口的视频。</P> - -<P>使其工作的方法可以在<A HREF="../tech/directfb.txt">技术部分</A>和直接从Ville Syrjala的<A -HREF="http://www.sci.fi/~syrjala/directfb/Matrox_TV-out_README.txt">主页</A>获得。</P> - -<P>注意:我们没能让它工作,但是有人做到了。不管怎样,将CRTC2代码移植到<B>mga_vid</B>的工作正在进行中。</P> - -<H4><A NAME="mpegdec">2.3.1.3 MPEG解码器</A></H4> - -<H4><A NAME="dvb">2.3.1.3.1 DVB</A></H4> - -<P>MPlayer支持Siemens,Technotrend,Galaxis或Hauppauge提供的使用Siemens DVB芯片的显卡。 -最新的DVB驱动在<A HREF="http://www.linuxtv.org">Linux TV site</A>。如果你想要软件解码你需要一个至少1GHz的CPU。</P> - -<P>Configure应该能检测到你的DVB显卡。如果它没有,使用下列命令强制使用 - -<PRE> - ./configure --enable-dvb -</PRE> - -<P>如果你在非标准的路径下有ost头文件,使用下列命令设置路径</P> - -<PRE> - ./configure --with-extraincdir=<DVB source directory>/ost/include -</PRE> - -<P>然后正常编译安装。</P> - -<H4>使用方法</H4> - -<P>硬件解码(播放标准的MPEG1/2文件)使用下列命令:</P> - -<PRE> - mplayer -ao mpegpes -vo mpegpes file.mpg|vob -</PRE> - -<P>MPEG1的软件解码或转化为其他格式使用下列命令:</P> - -<PRE> - mplayer -ao mpegpes -vo mpegpes yourfile.ext - mplayer -ao mpegpes -vo mpegpes -vf expand yourfile.ext -</PRE> - -<P>注意到,DVB显卡只支持高度为288或576的PAL格式或者240或480的NTSC格式。你<B>必须</B>对其它的高度进行重新缩放, -通过在<CODE>-vf</CODE>选项中使用<CODE>scale=width:height</CODE>指定你想要宽度和高度。DVB显卡可以接受多种宽度, -像720,704,640,512,480,352等等,而且在水平方向上可以硬件缩放,所以大多数情况下你不需要作水平缩放。 -例如对于512x384(宽高比4:3)的DivX使用下列命令:</P> - -<PRE> - mplayer -ao mpegpes -vo mpegpes -vf scale=512:576 -</PRE> - -<P>如果你使用宽银幕电影而你把它放大到整个屏幕的高度,你可以使用<CODE>expand=w:h</CODE>插件来增加黑带。 -为了看640x384分辨率的DivX,使用下列命令:</P> - -<PRE> - mplayer -ao mpegpes -vo mpegpes -vf expand=640:576 file.avi -</PRE> - -<P>如果你的CPU对于播放720x576的DivX太慢,尝试横向缩放:</P> - -<PRE> - mplayer -ao mpegpes -vo mpegpes -vf scale=352:576,lavc file.avi -</PRE> - -<P>如果速度没有提高,尝试竖直缩放:</P> - -<PRE> - mplayer -ao mpegpes -vo mpegpes -vf scale=352:288,lavc file.avi -</PRE> - -<P>因为OSD和字幕使用OSD插件的扩展特性。因此,不要使用<CODE>expand=w:h</CODE>或者<CODE>expand=w:h:x:y</CODE>, -使用<CODE>expand=w:h:x:y:1</CODE>(第5个参数<CODE>:1</CODE>将开启OSD渲染)。你也许想要把图象向上移动一点来给 -字幕更大的黑色区域。如果你也想要移动字幕,因为他们可能在你电视屏幕的外面,使用<CODE>-subpos <0-100></CODE>来 -调整它(<CODE>-subpos 80</CODE>是个不错的选择)。</P> - -<P>为了在PAL电视上播放非25fps的电影或者因为CPU太慢,加上<CODE>-framedrop</CODE>选项。</P> - -<P>为了保持DivX文件的宽高比并获得最理想的缩放参数(硬件水平缩放和软件垂直缩放并且保持正确宽高比),使用最新的dvbscale插件:</P> - -<PRE> -for 4:3 TV: -vf dvbscale,scale=-1:0,expand=-1:576:-1:-1:1 -for 16:9 TV: -vf dvbscale=1024,scale=-1:0,expand=-1:576:-1:-1:1 -</PRE> - -<H4>将来</H4> - -<P>如果你有使用问题或想要了解特性通告或者参加这个问题的讨论,加入我们的<A -HREF="http://mplayerhq.hu/mailman/listinfo/mplayer-dvb">MPlayer-DVB</A>的邮件列表。 -请记住列表的语言是英语。</P> - -<P>在未来你可以期待使用DVB显卡的自带OSD特性显示OSD和字幕,还有更流畅的非25fps电影播放和实时的MPEG2和MPEG4转 -换(部分的解压)。</P> - -<H4><A NAME="dxr2">2.3.1.3.2 DXR2</A></H4> - -<P>MPlayer支持使用Creative DXR2卡的硬件加数功能</P> - -<P>首先你要正确安装DXR2的驱动。你可以在<A HREF="http://dxr2.sourceforge.net/">DXR2资源中心</A>这个站点找到驱动和 -安装方法。</P> - -<H4>用法</H4> -<DL> - <DT><CODE>-vo dxr2</CODE></DT> - <DD>启动TV输出</DD> - <DT><CODE>-vo dxr2:x11</CODE>或<CODE>-vo dxr2:xv</CODE></DT> - <DD>启动X11的叠加输出</DD> - <DT><CODE>-dxr2 <option1:option2:...></CODE></DT> - <DD>这个选项用来控制DXR2驱动</DD> -</DL> - -<P>DXR2使用的叠加芯片质量很差但它默认的设置应该对所有人都适用。OSD可能可以通过使用colorkey的绘制方法在叠加(不能 -用于TV)输出中实现。使用默认的colorkey设定你可能获得各种效果,一般情况下你可能看到colorkey环绕在字符周围或者其它 -可笑的效果。但只要你适当的调节colorkey的设定你应该可以获得可接受的效果。</P> - -<P>默认选项参见manpage。</P> - -<H4><A NAME="dxr3">2.3.1.3.3 DXR3/Hollywood+</A></H4> - -<P>MPlayer支持Creative DXR3和Sigma Designs Hollywood Plus卡的硬件加速播放。这些卡都使用SigmaDesigns的 -em8300 MPEG解码芯片</P> - -<P>首先,你将需要正确地安装DXR3/H+的驱动,版本至少0.12.0或者更新的。你能在<A -HREF="http://dxr3.sourceforge.net/">DXR3 & Hollywood Plus for Linux</A>的站点找到驱动和安装指导。Configure应该自动检测到你的显卡, -编译应该没有任何问题。</P> - -<H4>用法</H4> - -<DL> - <DT><CODE>-vo dxr3:prebuf:sync:norm=x:<device></CODE></DT> - <DD><CODE>overlay</CODE>激活overlay而不是电视输出。你必须有一个正确配置的的overlay设置来正常工作。最简单的配置overlay -的方法是先运行autocal。然后运行mplayer使用dxr3输出而不打开overlay,运行dxr3view。在dxr3view中你可以调整overlay设置 -并实时看到效果,可能这个特性在将来会被MPlayer的GUI支持。当正确设置了overlay之后你就不再需要dxr3view了。<BR> - <CODE>prebuf</CODE>打开预缓冲。预缓冲是em8300的一个特性,是它可以同时处理一帧以上的视频。这表示当你开启 -预缓冲(默认的)运行时,MPlayer将试图保持视频缓冲区里面总是填满数据的。如果你是用的一台比较慢的机器MPlayer -大概会占用接近100%的CPU。这在你播放纯MPEG流(例如DVD,SVCD之类)的时候尤其明显,因为MPlayer不需要把它重新编码成 -MPEG所以他会以很高的速度填充缓冲区。<BR> - 当不用预缓冲运行时em8300对CPU的占用率十分敏感,所以建议你打开MPlayer的<CODE>-framedrop</CODE>选项来防止进一步 -的不同步<BR> - <CODE>sync</CODE>将打开新的同步机制。这个目前是一个试验性的特性。打开这个同步特性后em8300的内部时钟将时钟被监视, -如果它开始偏离MPlayer的时钟它将被重新设置从而导致丢掉任何滞后的帧。<BR> - <CODE>norm=x</CODE>用来设置DXR3卡的电视制式而避免使用em8300setup之类的外部工具。可用的制式有5 = NTSC,4 = PAL-60, -3 = PAL。特别的制式是2(自动选择使用PAL/PAL-60)和1(自动选择使用PAL/NTSC)因为他们通过测试电影的帧速率来决定是哪个制式。 -norm = 0(默认的)不改变现在的制式。<BR> - <CODE><device></CODE> = 使用的设备号如果你有超过一块em8300显卡。 - <BR> - 任何这些选择都可以被省略<BR> - <CODE>:prebuf:sync</CODE>在播放DivX电影时似乎工作的很好。有人报告过在播放MPEG1/2文件时用<CODE>prebuf</CODE>选项有问题。 -你可能会先尝试不加任何参数,如果你遇到同步的问题,或者DVD字幕的问题,试试<CODE>:sync</CODE>。</DD> - - <DT><CODE>-ao oss:/dev/em8300_ma-X</CODE></DT> - <DD>音频输出,在其中<CODE>X</CODE>是设备号(为0如果只有一块显卡)。</DD> - - <DT><CODE>-aop list=resample:fout=xxxxx</CODE></DT> - <DD>em8300不能工作在采样率低于44100Hz的情况。如果采样率在44100Hz之下,在44100Hz和48000Hz中选择最接近的一个。 -例如对使用22050Hz的电影,因为44100Hz/2 = 22050,所以使用44100Hz,如果是24000Hz就使用48000Hz,因为48000Hz/2 = 24000如此等等。 -这对于数字音频输出不起作用(<CODE>-ac hwac3</CODE>)。</DD> - - <DT><CODE>-vf lace/fame</CODE></DT> - <DD><B>(自动插入)</B>要在em8300上观看非MPEG的内容(例如DivX或者RealVideo)你必须设置一个libavcodec(lavc)或者libfame(fame)之类的MPEG1视频滤镜 -目前lavc有更好的速度还有更高的图像质量,除非你使用时遇到问题,建议你使用他。<CODE>-vf lavc/fame</CODE>的进一步的信息可以 -参考man page。<BR> - 强烈推荐使用lavc。目前没有办法设置em8300的fps,这表示它将固定在29.97fps。因为这个强烈推荐你使用<CODE>-vf -lavc=<quality>:25</CODE>,特别是当你使用prebuffering的时候。那么为什么是25而不是29.97?嗯,原因是当使用29.97 -的时候图像有一些跳跃。目前我们还不知道原因。如果你把它设置成25到27之间的值是图像就稳定了。目前我们能做的就是接受这个事实。</DD> - - <DT><CODE>-vf expand=-1:-1:-1:-1:1</CODE></DT> - <DD>尽管DXR3的驱动能把一些OSD放到MPEG1/2/4的视频上,它比MPlayer的传统的OSD的质量差的多,并且还有一些刷新的问题。 -上面的命令行将先把输入的视频转换成MPEG4(这是必须的,对不起),然后使用一个扩展滤镜,不进行任何缩放(-1:默认值),只是把正常的OSD -放到图像上(最后的那个"1"的作用)。</DD> - - <DT><CODE>-ac hwac3</CODE></DT> - <DD>em8300支持使用芯片的数字音量输出来播放AC3音频(环绕音效)。阅读<A HREF="codecs.html#hardware_ac3">硬件AC3</A>来了解AC3的 -更进一步的信息</DD> -</DL> - - -<H4><A NAME="other">2.3.1.4 其他可视硬件</A></H4> - -<H4><A NAME="zr">2.3.1.4.1 Zr</A></H4> - -<P>这是用于那些MJPEG视频捕捉/播放卡(经过DC10+和Buz的测试,对LML33,DC10应该也能工作)的显示驱动(<CODE>-vo zr</CODE>)。 -驱动通过把每帧图像编码成为jpeg格式和然后把它发送到显卡来工作。在jpeg编码时要使用<B>libavcodec</B>,而且必须使用。</P> -用特殊的<I>cinerama</I>模式,你可以通过两个投影仪和两块MJPEG卡用真正的宽银幕方式观看电影。根据分辨率和质量的设置,这个 -驱动可能要求极强的CPU处理能力,如果你的机器太慢的话记住使用<CODE>-framedrop</CODE>,注意:我的AMD K6-2 350MHz(加上 -<CODE>-framedrop</CODE>选项)足够看VCD尺寸的东西和经过缩小的电影。</P> - -<P>这个驱动需要一个内核驱动,可以在<A HREF="http://mjpeg.sourceforge.net">http://mjpeg.sourceforge.net</A>找到, -你必须先让它工作。MJPEG卡的存在能被configure脚本自动检测到,如果自动检测失败,用这个命令强制检测 - -<PRE> - ./configure --enable-zr -</PRE> - -<P>驱动的输出可以用一些选项设置,在man page里面可以找到一份长长的可用选项的描述,一个比较短的选项列表可以运行这个命令获得</P> - -<PRE> - mplayer -zrhelp -</PRE> - - -<P>缩放和OSD (on screen display)这类功能这个驱动不能处理,但可以用视频滤镜来完成,例如你有一个分辨率是<CODE>512x272</CODE> -的电影,而你希望用你的DC10+用全屏幕观看,主要有三种可能的方法,你可以把电影宽度缩放到<CODE>768</CODE>,<CODE>384</CODE>, -或者<CODE>192</CODE>。考虑到运行速度和质量的原因,我会选择使用快速二次线型软件缩放滤镜把电影缩放到<CODE>384x204</CODE>。 -命令行是这样的</P> - -<PRE> - mplayer -vo zr -sws 0 -vf scale=384:204 movie.avi -</PRE> - -<P>画面的切割可以用<CODE>crop</CODE>滤镜也可以用驱动自己完成。假设电影太宽了,在你的机器上显示不了,那么你会想要用 -<CODE>-zrcrop</CODE>来切割电影的宽度,那么你应该输入下面的命令</P> - -<PRE> - mplayer -vo zr -zrcrop 720x320+80+0 benhur.avi -</PRE> - - 如果你想要使用<CODE>crop</CODE>滤镜,你可以运行 - -<PRE> - mplayer -vo zr -vf crop=720:320:80:0 benhur.avi -</PRE> - -<P>多个<CODE>-zrcrop</CODE>就会调用<I>cinerama</I>模式,你可以把电影投射到几个电视或者投影仪上来制造一个大银幕,设想你有 -两个投影仪,左边那个连到你的机器的<CODE>/dev/video1</CODE>而右边那个连到你的机器的<CODE>/dev/video0</CODE>上的DC10+上, -电影的分辨率是<CODE>704x288</CODE>,同时假设你希望右边的投影仪显示黑白效果而右边的投影仪显示的用质量<CODE>10</CODE>来显示jpeg帧 -那么你需要使用下列命令:</P> - -<PRE> - mplayer -vo zr -zrdev /dev/video0 -zrcrop 352x288+352+0 -zrxdoff 0 -zrbw \ - -zrcrop 352x288+0+0 -zrdev /dev/video1 -zrquality 10 movie.avi -</PRE> - -<P>你发现在第二个<CODE>-zrcrop</CODE>之前出现的选项只作用于DC10+,而第二个<CODE>-zrcrop</CODE>之后的选项作用于你的机器。 -在<I>cinerama</I>中能使用的MJPEG卡最多为4块,所以你可以制作一片<CODE>2x2</CODE>的视频墙</P> - -<P>最后还有一个重要的注意事项:不要在播放期间在播放设备上启动或停止XawTV,它将导致你的计算机崩溃。然而,<B>首先</B>启动XawTV, -<B>然后</B>启动MPlayer,等MPlayer播放结束,<B>然后</B>停止XawTV是没有问题的。</P> - -<H4><A NAME="blinken">2.3.1.4.2 Blinkenlights</A></H4> - -<P>这个驱动可以使用Blinkenlights UPD兼容协议播放。如果你不知道<A -HREF="http://www.blinkenlights.de/">Blinkenlights</A>是什么,你就不需要这个驱动。</P> - -<H4><A NAME="tv-out">2.3.1.5 电视输出支持</A></H4> - - -<H4><A NAME="tv-out_matrox">2.3.1.5.1 Matrox G400显卡</A></H4> - -<P>在Linux下你有2种方法使G400的电视输出工作:</P> - -<P><B>重要提示:</B>对于Matrox G450/G550的电视输出方法看下一节! - -<UL> - <LI><B>XFree86</B>:使用能在<A HREF="http://www.matrox.com">Matrox的站点</A>获得的驱动和HAL模块。这将在电视上实现X。 -<BR><B>这种方法不给你加速播放</B>,不像Windoze! 第二个输出头只有YUV帧缓冲,<I>BES</I>(Back End Scaler,在G200与G400与G450与 -G550显卡上的YUV缩放)无法用于它!windows的驱动以某种方式解决了这个问题,有可能是通过使用3D引擎来缩放,并用YUV帧缓冲显示图像。 -如果你确实想要使用X,使用<CODE>-vo x11 -fs -zoom</CODE>选项,但这将<B>十分缓慢</B>,而且会开启<B>Macrovision</B>版权保护 -(你能使用<A HREF="http://avifile.sourceforge.net/mgamacro.pl">这个</A>perl脚本绕过Macrovision。</LI> - <LI><B>帧缓冲</B>:在2.4的内核中可以使用<B>matroxfb模块</B>而2.2的内核中没有电视输出的特性,所以对它是没有用的。 -你必须在编译时开启所有与matroxfb相关的特性(除了MultiHead之外),并且把他们全部编译成<B>模块</B>! 你还需要开启I2C功能。 - <OL> - <LI> - 进入<CODE>TVout/matroxset</CODE>然后运行<CODE>make</CODE>。把<CODE>matroxset</CODE>安装到你的PATH中的某个地方。</LI> - <LI> - 如果你没有装<CODE>fbset</CODE>,进入<CODE>TVout/fbset</CODE>然后运行<CODE>make</CODE>。把<CODE>fbset</CODE>安装到你的PATH中的某个地方。</LI> - <LI> - 然后进入到MPlayer源码目录中的<CODE>TVout/</CODE>子目录,以root执行<CODE>./modules</CODE>。 -你的文本模式的控制台将进入到帧缓冲模式(没有方法改回来!)。</LI> - <LI>下一步,修改并运行<CODE>./matroxtv</CODE>脚本。这将给你提供一个十分简单的菜单。按<B>2</B>和<B>ENTER</B>。现在你的显示器和电视上应该有一样的图像。 -如果电视(默认PAL)图画有些奇怪的条纹,脚本不能够正确地设置分辨率(使用缺省的640x512)。试试菜单里的其他分辨率或者/和试试fbset。</LI> - </OL> - - <P>Yoh。接着的任务是使tty1上的光标(或者别的什么)消失,和关闭屏幕抑制显示。执行下列的命令:</P> - - <P><CODE>echo -e '\033[?25l'</CODE>或者<CODE>setterm -cursor off<BR>setterm -blank 0</CODE></P> - - <P>你可能想把上述内容脚本,同时也清屏.. 让光标出现的命令是:<BR><CODE>echo -e '\033[?25h'</CODE>或者<CODE>setterm -cursor on</CODE></P> - - <P>Yeah kewl。用<CODE>mplayer -vo mga -fs -screenw 640 -screenh 512 <filename></CODE>来播放电影<BR> - (如果你正在使用X,用CTRL-ALT-F1之类的快捷键换成matroxfb!)<BR> - 分辨率换成640x512如果你用的不是这个分辨率。<BR> - <B>享受超快超多特性的Matrox电视输出(比Xv还要好)!</B></P> - </LI> -</UL> - -<H4>制作一个Matrox电视输出线</H4> - -<P><B>G400的电缆线</B>:CRTC2连接器的第4根针是复合视频信号. 基线是第6,第7和第8根针。(Bal醶s R醕z提供信息)</P> - -<P><B>G400的电缆线</B>:CRTC2连接器的第1根针是复合视频信号. 基线是第5,第6,第7和第15根针。(Bal醶s R醕z提供信息)</P> - -<H4><A NAME="tv-out_matrox_g450">2.3.1.5.2 Matrox G450/G550显卡</A></H4> - -<P>这些显卡的电视输出支持最近刚被引入,而且还没有进入内核的主流。据我所知目前不能使用<B>mga_vid</B> -因为G450/G550的驱动只能工作在一种配置下面:第一个CRTC芯片(有更多特性)接第一个display(显示器),第二个 -CRTC(没有<B>BES</B> -- BES的解释看上面G400的部分)接电视上,所以你目前只能使用MPlayer的 -<I>fbdev</I>的输出设备。</P> - -<P>目前第一个CRTC不能传送到第二个头。内核的matroxfb驱动的作者 -- Petr Vandrovec -- 可能正在努力支持 -它,使用把第一个CRTC的输出同时显示在两个头上的方法,像目前G400推荐的一样,看上面的部分。</P> - -<P>需要的内核补丁和howto的细节可以从<A -HREF="http://www.bglug.ca/matrox_tvout">http://www.bglug.ca/matrox_tvout</A>下载。</P> - -<H4><A NAME="tv-out_ati">2.3.1.5.3 ATI显卡</A></H4> - -<H4>引言</H4> -<P>ATI目前不想对他的任何一种电视输出芯片提供Linux下的支持,由于他们授权的Macrovision技术。</P> - -<H4>ATI显卡在Linux上电视输出的支持情况</H4> - -<UL> - <LI><B>ATI Mach64 </B>:<A HREF="http://gatos.sf.net">gatos</A>支持。</LI> - <LI><B>ASIC Radeon VIVO </B>:<A HREF="http://gatos.sf.net">gatos</A>支持。</LI> - <LI><B>Radeon</B>和<B>Rage128</B>:MPlayer支持!查阅<a href="#vesa">VESA驱动</a>和<A HREF="#vidix">VIDIX</A>两节。</LI> - <LI><B>Rage Mobility P/M, Radeon, Rage 128, Mobility M3/M4</B>:<A - HREF="http://www.stud.uni-hamburg.de/users/lennart/projects/atitvout/">atitvout</A>支持。 -</UL> - -<P>在其它显卡上,只能使用<a href="#vesa">VESA驱动</a>,没有VIDIX可用。但需要强大的CPU。</P> - -<P>你唯一需要做的事情 -- <B>在启动你的电脑之前插上电视连接器的插头</B>因为视频BIOS只在自举期间初始化一次。</P> - - -<H4><A NAME="tv-out_voodoo">2.3.1.5.4 Voodoo 3</A></H4> - -<P>查阅<A HREF="http://www.iki.fi/too/tvout-voodoo3-3000-xfree">这个网址</A>。</P> - -<H4><A NAME="tv-out_nvidia">2.3.1.5.5 nVidia</A></H4> - -<P>首先,你必须从<A HREF="http://nvidia.com">http://nvidia.com</A>下载封闭源码的驱动,我不会描述安装和配置的过程因为 -它不属于这篇文档的范围。</P> - -<P>当XFree86, XVideo, 和3D加速都正常工作之后,根据下面的例子(改写成适合你的显卡/电视)编辑你的<CODE>XF86Config</CODE> -中你的显卡的Device部分:</P> - -<PRE> -Section "Device" - Identifier "GeForce" - VendorName "ASUS" - BoardName "nVidia GeForce2/MX 400" - Driver "nvidia" - #Option "NvAGP" "1" - Option "NoLogo" - Option "CursorShadow" "on" - - Option "TwinView" - Option "TwinViewOrientation" "Clone" - Option "MetaModes" "1024x768,640x480" - Option "ConnectedMonitor" "CRT, TV" - Option "TVStandard" "PAL-B" - Option "TVOutFormat" "Composite" - -EndSection -</PRE> - -<P>当然关键是TwinView部分。</P> - -</BODY> -</HTML>