diff --git a/DOCS/Chinese/bugreports.html b/DOCS/Chinese/bugreports.html new file mode 100644 index 0000000000..e600dbf321 --- /dev/null +++ b/DOCS/Chinese/bugreports.html @@ -0,0 +1,220 @@ + + + +
+好的bug报告对任何软件项目的发展都是十分有价值的贡献。但是就象写好的软件一样,好的问题报告也需要一些工作。请明白大多数开发者忙的要死并且会收到 +多的变态的电子邮件。所以尽管你的反馈对改进MPlayer至关重要而且非常值得赞赏,希望你理解你必须提供我们需要的所有信息并且严格遵循这个 +文件中的指导进行。
+ + +如果你觉得你有足够的技巧欢迎你尝试自己修正bug。或者也许你已经这么干了?请阅读这个简短的文件了解怎样让你的代码 +包括到MPlayer的代码中。如果你有问题可以从加入mplayer-dev-eng +邮件列表的人那里获得帮助。
+ + +首先,请先尝试MPlayer最新的CVS版本,因为你的bug在那里可能已经被修正了。发展过程进展的相当快,官方发行版的大部分问题在几天甚至几小时之内 +就被报告了,因此请仅仅使用CVS来报告bug。CVS指令能在这个页面的底部或者 +README中找到。如果这样做没有改进那么请查阅已知的bug列表和文件的其他部分。如果你的问题我们没有提到或者 +按照我们提供的步骤没有解决,那么请报告bug。
+ +请不要私下向单独的开发者报告bug。这是一项社区工作所以可能有若干人都对它感兴趣。有时其它用户已经遇到过你的麻烦并且知道如何绕过这个问题 +即使它是MPlayer代码中的bug。
+ +请尽可能详细的描述你的问题。做一些小的侦探工作来确定问题发生的情况的范围。这个bug只在一定的情况中出现吗?或是具体针对特定文件或者文件类型吗? +它是针对于唯一的编码格式还是独立于编码格式的?你能用所有的输出驱动重现它吗?你提供的信息越多我们的修复你的问题的机会就越大。别忘了也要包括下面所要求的 +有价值的信息,否则我们将无法正确分析你的问题。
+ +有篇文采飞扬的关于如何在公共论坛上提问的极好的指导是Eric S. Raymond写的 +How To Ask Questions The Smart Way。你照着那些指示做是没问题的。但是请明白我们大家都在我们的自由时间自愿地回复邮件列表。我们十分忙碌并且 +不能保证你的问题一定能得到解决甚至得到回复。
+ + +订阅mplayer-users邮件列表:
+ http://mplayerhq.hu/mailman/listinfo/mplayer-users
+ 同时,把你的bug发送到:
+ mplayer-users@mplayerhq.hu
这个列表使用的语言是英语。请遵循标准的Netiquette标准并且不要发送HTML邮件 +到任何我们的邮件列表。你将被忽略或者封掉。如果你不知道什么是HTML邮件,以及它为什么邪恶,阅读这个不错的文件。 +它解释了所有细节和关掉HTML的指令。也请注意到我们不会个别地CC(抄送)给人因此最好通过订阅来保证你会收到答案。
+ + +uname -a
ls -l /lib/libc[.-]*
X -version
gcc -v
+ ld -v
as --version
cat /proc/cpuinfo
lspci -vv
的输出。请包括MPlayer的冗长水平为1的输出,但是记住当你把它粘贴到你的邮件中时不要删减输出内容。开发者们需要所有的信息来正确的分析问题。 +你可以像这样把输出导入到一个文件中:
+ + mplayer -v [options] [filename] &> mplayer.log
如果你的问题是具体对于一个或更多的文件的,那么请上传捣乱的文件:
+ +ftp://mplayerhq.hu/MPlayer/incoming/
+ +再上传一个小的同样文件名的文本文件加上.txt的扩展名。在其中描述对于这个特别的文件你遇到的问题加上你的电子邮件地址还有MPlayer冗长水平为1的输出。 +通常文件的前1-5MB足以重现问题,但为了以防万一我们要求你运行:
+ + dd if=yourfile of=smallfile bs=1024k count=5
它将截取'your-file'的头5兆并把他们写到'small-file'里。然后,测试一下这个小文件,如果bug仍然存在那么你的样本 +对我们来说是足够了。请永远不要通过邮件的发送这样文件!把它上传,然后只发送FTP-server上的文件的路径与文件名。如果文件在网上可以获得, +那么发送准确的URL就足够了。
+ + +如果你的崩溃有一个core dump那么继续阅读下一段,否则跳过它。
+ + +请建立下面的命令文件:
+ +disass $eip-32 $eip+32
+ printf "eax=%08lX\n",$eax
+ printf "ebx=%08lX\n",$ebx
+ printf "ecx=%08lX\n",$ecx
+ printf "edx=%08lX\n",$edx
+ printf "esp=%08lX\n",$esp
+ printf "ebp=%08lX\n",$ebp
+ printf "edi=%08lX\n",$edi
+ printf "esi=%08lX\n",$esi
然后直接在你的命令行下执行下列命令:
+ + gdb mplayer --core=core -batch --command=command_file > mplayer.bug
./configure --enable-debug=3
+ make
gdb mplayer
run -v [options-to-mplayer] filename
bt
+ disass $eip-32 $eip+32
如果有什么东西特别大(比如log)最好把它压缩(最好是gzip或者bzip)之后上载到FTP server上并且在你的bug报告中只要包含路径和文件名。
+ + +如果你按照上述步骤建立了一个正确的bug报告而且你充满信心它是MPlayer中的bug,而不是因为编译错误或者文件损坏的问题,你已经阅读了文档并且
+找不到解决方案,此外你的声卡驱动正常,那么你可能想要订阅mplayer-advusers列表并把你的bug报告发到那里以便得到更快更好的答案。
+ 请听从我们的劝告,如果你在那里问新手级的问题或者问用户手册中已经回答过的问题,你将被忽略或者被骂而不会得到答案。
+ 因此,不要骂我们并且仅仅当你确实知道你在干什么并且觉得你已经是高级MPlayer用户或者是开发者再订阅 -advusers。如果你符合这些标准找出如何
+订阅应该不难...
Linux文件摘录:
+ +现代的CD-ROM光驱能达到十分高的头速度,还有一些CD-ROM光驱能运行在被正常情况低的速度上。你考虑改变CD-ROM光驱的速度可能有若干原因:
+ +你能使用hdparm或一个叫setcd的程序来降低光驱的速度。它是这样工作的:
+ + hdparm -E [speed] [cdrom device]
setcd -x [speed] [cdrom device]
你也可以试试
+ + echo current_speed:4 > /proc/ide/[cdrom device]/settings
但这样你需要root权限。下面这个命令也有用处:
+ + echo file_readahead:2000000 > /proc/ide/[cdrom device]/settings
这把文件预读取设置为2MB,对于刮伤的CD-ROM有好处。推荐你同时也用hdparm调整你的CD-ROM光驱:
+ + hdparm -d1 -a8 -u1 (cdrom device)
这开启DMA存取,预读取,和IRQ unmasking(细节解释请阅读hdparm的man page)。
+ +为了优化你的CD-ROM请参考"/proc/ide/[cdrom device]/settings
"。
MPlayer使用libdvdread
和libdvdcss
进行DVD解密和回放。这两个库包含在MPlayer源码树的libmpdvdkit/
+子目录中,你不需要单独安装他们。我们选择这种解决方案是因为我们必须修正一个libdvdread的bug,并且给libdvdcss添加一个cracked CSS keys caching support的补丁。
+这带来极大的速度提升,因为不用在每次播放之前都破解密钥。破解的密钥储存在~/.mplayer/DVDKeys
目录里面。
MPlayer也能使用系统的libdvdread
和libdvdcss
库,但这种解决方法不被推荐,因为它会导致bug,库的不兼容,并且降低速度。
使用dvdnav
DVD导航的支持正在开发,但目前还没有完成。
如果你想从硬盘上播放编码的VOB是有用。为此要编译并安装libcss0.0.1(不要更新的)(如果MPlayer检测不到它,使用-csslib /path/to/libcss.so
选项)。
可用选项的完全列表,请阅读man page。
+ + +播放标准的Video CDs:
+ +mplayer -vcd <track> [-cdrom-device device]
例子:
+ mplayer --vcd 1
+ mplayer --fs --vcd 2 --dev / hdc
-vcd
选项来播放VCD。-vcd 2
先。/dev/cdrom
。如果你的设置不同,做个符号链接,或者在命令行上用-cdrom-device
选项指定正确的设备。看编码格式状态表格来了解完整的,每日更新的列表。
+ +所有之中最重要的:
+如果你有一个Win32解码器没有列出来而且目前没有被支持,请读取解码器导入HOWTO并且帮助我们添加对它的支持。
+ + +这部分包含关于Mayo工程的DivX4和DivX5编码格式的信息,他们的第一个可用的alpha版本是 +OpenDivX 4.0 alpha 47和48。 对它们的支持以前包括仔MPlayer中,并且是默认编译的。 我们也使用其后处理代码来有选择地提高MPEG1/2电影的视觉质量。 +现在我们使用我们自己的,对于所有文件类型。
+ +这个解码器的新一代产品称为DivX4,它甚至能解码以声名狼籍的DivX编码格式制作的电影! 此外,它比本地的Win32 DivX DLL快得多比但是比libavcodec慢。 +因此,不鼓励把它当解码器用。 然而,它对编码有用。 这个编码格式的缺点之一是它目前不开放源代码。
+ +解码器可以从下列URLs之一下载:
+ + http://avifile.sourceforge.net
+ http://divx.com
解开它,然后以root身份运行./install.sh
。
注意:一定不要忘记在你的/etc/ld.so.conf
里添加/usr/local/lib
然后运行ldconfig
!
如果安装正确MPlayer会自动检测到DivX4/DivX5,然后按通常方法编译。如果没有找到,那么你没有正确地安装或配制它。
+ +DivX4Linux有两种工作方式:
+ +-vc odivx
-vc divx4
-vc odivx
方式通常更快,因为它以YV12(planar YUV 4:2:0)格式传输图象数据,这样占用少的多的总线带宽。对于packed YUV方式
+(YUY2,UYVY)使用-vc divx4
方式。对于RGB模式两者速度是相同的,差别最多是你当前的色彩深度。
注意:如果你的-vo
驱动支持直接渲染,那么-vc divx4
可以是很快甚至最快的解决方案。
FFmpeg包括一组开源的解码器包,能够以兼容方式解码以 +H263/MJPEG/RV10/DivX3/DivX4/DivX5/MP41/MP42/WMV1编码格式编码的视频流。它不仅能对其中一些进行编码, +同时提供比Win32解码器或Mayo工程的DivX4/5库更高的速度!
+ +它包含很多不错的解码器,尤其重要的是MPEG4的几个变种:DivX 3,DivX 4,DivX 5,Windows Media Video 7 (WMV1)
+ +如果你使用MPlayer发行版,在你的源码包里就有libavcodec,正常编译。如果你使用CVS的MPlayer +那么你必须从FFmpeg的CVS树中提取libavcodec因为FFmpeg 0.4.5不能用于MPlayer。你应该这样来完成:
+ +OL> +cvs -d:pserver:anonymous@cvs.ffmpeg.sourceforge.net:/cvsroot/ffmpeg login
cvs -d:pserver:anonymous@cvs.ffmpeg.sourceforge.net:/cvsroot/ffmpeg co ffmpeg
libavcodec
目录从FFmpeg的源代码里移到MPlayer的CVS树的根部。应该看起来象这样:
+ main/libavcodec
注意:CVS的MPlayer确实有libavcodec子目录,但是它确实没有包含libavcodec的源代码!你必须按照上述的步骤来得到这个库的源代码。
+ +用FFmpeg和我的Matrox G400,我甚至能在我的K6/2 500上无掉帧的观看最高分辨率的DivX电影。
+ + +前言:
+ XAnim的二进制的解码器包里面有一份关于合法捆绑软件许可的声明,除其它限制之外,禁止用户用除XAnim外的任何程序使用其解码器。然而,
+XAnim的作者到目前为止没有就解码器有关的问题对着任何人采取法律行动。
+
MPlayer可以使用XAnim的解码器解码。按照下列指令来开启它:
+ +--with-xanimlibdir
选项来告诉configure在何处可以找到XAnim的解码器。缺省的话,它在
+/usr/local/lib/xanim/mods, /usr/lib/xanim/mods and /usr/lib/xanim
里寻找。或者你可以把XANIM_MOD_DIR环境变量
+设置为XAnim解码器所在的目录。vid_cvid.xa, vid_h263.xa, vid_iv50.xa
。XAnim的视频解码器族号码是10,因此你可以使用-vfm 10
选项让MPlayer尽可能的使用他们。
测试过的解码器包括:Indeo 3.2,4.1,5.0,CVID,3ivX,h263。
+ + +MPlayer能播放Vivo(1.0和2.0)视频。对于1.0的文件最适合的解码器是FFmpeg的H263解码器,你可以用-vc ffh263
选项
+(默认的)来使用它(需要最新的libavcodec)。对于2.0个文件,使用
+ivvideo.dll这个Win32 DLL文件,将它安装在/usr/lib/win32
或者你放Win32解码器的那个什么地方。后面这个解码器不支持YV12或YUY2,
+只使用BGR,只能限定在X11和OpenGL输出方式。希望ffh263将来支持VIVO 2.0的文件。
MPEG1和MPEG2用本地的多平台的libmpeg2库解码,其源代码被包括在MPlayer中。对于buggy的MPEG 1/2视频文件我们通过截获sig11 +(segmentation fault),然后迅速再次初始化解码器,从失败的地方继续。这种恢复技术会带来无法估量的速度损失。
+ + +这是微软的又旧又差的编码格式。过去它用msvidc32.dll
的Win32解码器解码,现在我们有我们自己的开源的实现(由
+Mike Melanson提供)。
MPlayer默认将使用自己的开源的,多平台的Cinepak解码器。它支持YUV输出,所以只要硬件驱动允许它将使用硬件缩放。
+ + +推荐下载并安装RealPlayer8或者RealONE,因为MPlayer能使用他们的库来解码RealVideo 2.0或者RealVideo 3.0的视频文件。
+MPlayer的配置脚本应该在一个完全安装的RealPlayer的标准位置找到它的库。如果它没找到,用--with-reallibdir
+选项告诉configure到哪里去找。
注意:RealPlayer库目前只能用于x86平台上的Linux,FreeBSD,NetBSD和Cygwin。
+ +注意:我们不能分发RealPlayer库,它的许可证不允许这样。你必须自己搞到他们。
+ + +XViDOpenDivX编码格式的开发分支。故事发生在Mayo工程把OpenDivX变成封闭源码的DivX4的时候,那些从事于OpenDivX的非Mayo工程 +的人们感到愤怒,于是开始了XViD。所以两个项目有相同的起源。
+ +XViD目前只能从CVS中得到。这是下载和安装的指令:
+ +cvs -z3 -d:pserver:anonymous@cvs.xvid.org:/xvid login
cvs -z3 -d:pserver:anonymous@cvs.xvid.org:/xvid co xvidcore
cd xvidcore/build/generic
Makefile.linux
。make -f Makefile.linux
encore2.h
和decore.h
,把它们复制到/usr/local/include/
。--with-xvidcore=/path/to/libcore.a
选项重新编译MPlayer 。Sorenson 是苹果开发的视频编码格式。目前我们能用本地解码器解码第一个版本(SVQ1)。
+ +Sorenson解码器是默认编译使用的。
+ + +所有音频编码中最重要的是:
这是含有AC3音频的文件的默认解码器。
+ +AC3解码器能为了2,4或者6个扬声器创建音频混合输出。当配置为6个扬声器时,这个解码器向声卡驱动提供所有AC3通道的单独的输出, +允许彻底的“环绕立体声”感受而不需要使用需要hwac3解码器的外部AC3解码器。
+ +使用-channels
选项可以选择输出的通道数。使用-channels 2
获得立体声的降混频。
+对于4通道的降混频(左前,右前,左环绕和右环绕),使用-channels 4
。在这种情况下,中心通道的任何输出将与前通道均匀混合。
+-channels 6
将按照编码时的形式输出所有AC3通道-- 依次为左,右,左环绕,右环绕,中间和低频效果。
默认的输出通道数是2。
+ +为使用超过2个通道的输出,你需要使用OSS,和一块能通过SNDCTL_DSP_CHANNELS ioctl支持适当输出通道数的声卡。合适的驱动的一个例子是 +2001年8月的或者更新的emu10k1(用于Soundblaster Live!卡)(ALSA的CVS应该也能工作)。
+ + +你需要一个AC3兼容声卡,加上数字输出(SP/DIF)。声卡的驱动必须正确地支持AFMT_AC3格式(C-Media就支持)。把你的AC3解码器连接到SP/DIF输出,
+然后使用-ac hwac3
选项。这还在试验阶段但已经知道能用于C-Media声卡,使用ALSA驱动(但不能是OSS)的Soundblaster Live!
+还有DXR3/Hollywood+ MPEG译码卡。
libmad是多平台的MPEG音频解码库。它不能很好的处理损坏的文件,而且有时候搜索也有问题。
+ +为了支持它,加上--enable-mad
配置选项编译。
VIVO文件的使用的音频编码取决于它是VIVO/1.0还是VIVO/2.0。VIVO/1.0文件使用g.723音频,而VIVO/2.0文件使用Vivo Siren音频。
+他们两个都支持。你能从MPlayer站点下载g.723/Siren的Win32 DLL,
+然后把它复制到/usr/lib/win32
目录下。
至于如何安装RealPlayer库,参见RealMedia文件格式部分。
+ + +VFW(Video for Windows)是Windows的老的视频API。它的解码器以.DLL或者(很少的).DRV为扩展名。 +如果MPlayer无法播放你的AVI并显示这种信息:
+ + UNKNOWN video codec: HFYU (0x55594648)
它意味着你的AVI在编码时使用了HFYU fourcc(HFYU = HuffYUV codec,DIV3 = DivX Low Motion,等等...)
+的编码格式。现在你知道了,你必须查明Windows为了播放这个文件装载了哪一个DLL。在我们的情况下,
+system.ini
在这样的一行上包含这个信息:
VIDC.HFYU=huffyuv.dll
因此,你需要huffyuv.dll
文件。注意,音频解码器通过MSACM前缀指定:
msacm.l3acm=L3codeca.acm
这是MP3编码格式。现在你有了所有必要的信息(fourcc,解码器文件,AVI样本),把你的解码器支持要求通过邮件提交, +并把相关文件上载到我们的FTP站点:
+ + ftp://ftp.mplayerhq.hu/MPlayer/incoming/[codecname]/
DirectShow是较新的视频API,比它的前辈更恶劣。对于DirectShow事情变的困难了,
+ +system.ini
不再包含需要的信息,它们被储存在注册表里,此外
+ 新方法:使用微软的GraphEdit(快速)
+graphedit.exe
+ DirectShow Filters
项目
+ DisplayName
一项中看反斜杠后面花括号里面的文字并把它记下来(小短横分隔开的五块,就是GUID)
+ Filename
项里指定的文件
+注意:如果没有Filename
项而DisplayName
中包含类似device:dmo
的东西,
+那么这是一个DMO-Codec,MPlayer目前不支持
老方法:做个深呼吸然后开始搜索注册表...
+ +regedit
。
+ Ctrl-f
,禁用头两个复选框,填写解码器的fourcc(例如TM20)。
+ C:\WINDOWS\SYSTEM\TM20DEC.AX
)。
+ 注意:如果搜索失败,试试选上所有的复选框。你可能找到错误的内容,不过说不定你会走运...
+ +现在你有所有必要的信息(fourcc,GUID,解码器文件,AVI样本),把你的解码器支持要求通过邮件提交,并把相关文件上载到我们的FTP站点
+ + ftp://ftp.mplayerhq.hu/MPlayer/incoming/[codecname]/
[汉语] + [英语] + [匈牙利语] + [德语] + [法语] + [波兰语] + [意大利语]
+ +
如果你是首次安装:请一定要阅读从这里到安装部分末端的每件事,并且追踪你将遇到的链接。 +如果你有任何其它问题,返回到目录并搜索主题,读取FAQ,或者试图grepping整个文件。
+ +这个文件的主要原则:如果一个功能没有被编入文档,那么它不存在。如果我不说你能 +用电视选台器音频编码,你一定不能。不过健康程度的综合能力还是受欢迎的。祝你好运。你将需要它的:), +让我引用mplayer-users邮件列表中 +Chris Phillips的话作为另一个好的建议:
+ +“我以前说过新手和白痴之间的区别在于:无论,你实际上对一个系统(Linux,汽车,女孩:D) +了解多少,你应该总能够退一步想想并且保持客观,否则,你是公认的白痴IMHO。跟我住在一起的女孩认定吸 +尘器坏了因为它不吸进东西,而从不想更换袋子,因为她以前从来没有做过...那就是愚蠢,而不仅仅是不 +知道做什么...仅仅因为不是那么熟悉你的环境不是你的a)懒惰和b)忽视的借口。如此多人们似乎看到“error” +就停止...极少数似乎真正上读取了在冒号的另一边的东西”。
+ + +MPlayer是Linux 上的电影播放器(也能跑在许多其它Unices上,甚至non-x86CPU上, +参见移植部分)。它能使用众多的本地的,XAnim,RealPlayer,和Win32 DLL codecs, +播放大多数MPEG,VOB,AVI,OGG,VIVO,ASF/WMV,QT/MOV,FLI,RM,NuppelVideo,yuv4mpeg,FILM,RoQ文件。 +你还能观看VideoCD,SVCD,DVD,3ivx,RealMedia,和DivX格式 +的电影(你根本不需要avifile库)。mplayer的另一个大的特色是广泛的输出设备支持。它可以在X11,Xv,DGA, +OpenGL,SVGAlib,fbdev,AAlib,DirectFB下工作,而且你也能使用GGI和SDL(由此可以使用他们支持的各种驱动模式) +和一些低级的硬件相关的驱动模式(比如Matrox,3Dfx和Radeon,Mach64,Permedia3)!他们大多数支持软件或者硬件缩放, +因此你能在全屏下享受电影。MPlayer还支持通过硬件MPEG解码卡显示,诸如DVB +和DXR3与Hollywood+。可以使用european/ISO 8859-1,2(匈牙利语,英语,捷克语等等), +Cyrillic,朝鲜字体的清晰放大并且反锯齿的字幕(支持10种格式),和on screen display(OSD)你又觉得如何?
+ +MPlayer以GPL v2许可证发行。
+ +这个播放器能够稳如泰山的播放被破坏的MPEG文件(对一些VCD有用),而它能播放著名的windows media player
+都打不开的的坏的AVI文件。甚至,没有索引部分的AVI文件可播放,你能暂时由重建他们的索引-idx
选择,
+或者用MEncoder永久重建,使你能够seek!如你所见,稳定和质量是最重要的事情,而且他的速度是也惊人的。
这一年以前开始的... +我(A'rpi)已尝试Linux下的许多播放器(mtv,xmps,dvdview,livid/oms,videolan,xine,xanim,avifile,xmmp), +但是他们全都有一些问题。多半与特殊的文件或音频与视频的同步有关。他们中大多数不能同时播放MPEG1,MPEG2和AVI(DivX)文件。 +许多播放器也有图象质量或者速度的问题。因此,我已决定自己写/修改一个...
+ +在这章中我将试图指引你通过编译和配置MPlayer的过程,它不大容易的,不过也见得一定很难的。 +如果你遇到不同于我所解释的现象,请的通过搜索这篇文件来查找你的回答。如果你遇到链接,请跟踪他们并且细心读取他们包含的内容。 +它将花费一些时间,但是它确实是值得的。
+ +你需要一个相当新的系统。在Linux上,推荐2.4.x的内核。
+ +libvorbis
。如果可能的话尽量使用deb/rpm包装,
+或者用源代码编译(这是Vorbis CVS的每天最新的tarball)。一般地显卡可分为两种。一种(较新的显卡)支持硬件缩放和YUV加速,另一种卡没有。
+ +他们能在他们显存可以的范围中用任何分辨率显示和缩放(zoom)图像,只有很小CPU使用量(缩放不会使它增加!),所以你能得到清晰快速的全屏播放。
+ +播放Fullscreen能被任一个可以使用软件缩放(使用-zoom
或者-vop scale
参数,但是我先警告你:
+这会非常非常慢!),或者切换成较小的的分辨率,例如352x288。如果你没有YUV加速,我们推荐使用后一种方法。在MPlayer中,
+这种方法通过-vm
参数打开,它能用于下列驱动:
-bpp 8
可以使用但很慢接着编译MPlayer:
+ ++ ./configure + make + make install ++ +
到此为止,MPlayer就可以使用了。$PREFIX/share/mplayer
目录下包含了codecs.conf
文件,
+程序通过它来了解所拥有的codecs和他们的能解的码。该文件应该与主程序一起更新!
+检查在你的home目录(~/.mplayer/codecs.conf)中是否有旧的MPlayer版本留下的codecs.conf,如果有就删掉它!
Debian的用户能自己制作.deb安装包,这十分简单。直接在MPlayer的根目录执行fakeroot debian/rules binary
。
+详尽的步骤请看这里。
./configure
的输出请务必一定阅读,还有configure.log
文件,其中的信息会告诉你将什么将被编译,什么不编译。
+你也可能需要查看config.h
和config.mak
文件。
+如果你已经安装一些库文件,却没有被./configure
发现,那么检查你是否也安装了正确的头文件(通常在-dev包中)以及他们的版本符合要求。
+configure.log
通常会告诉你缺了什么。
尽管并非必需,你确实应该安装字体以使用OSD和字幕功能。下载mp-arial-iso-8859-*.zip
和/或者可选(如果存在的话)的其他语言的更新。
+阅读字幕和OSD一节来了解其细节。
+ mkdir ~/.mplayer/font + cd ~/.mplayer/font + unzip mp-arial-iso-8859-1.zip + ln -s ~/.mplayer/font/arial-24 font ++ +
GUI需要GTK(它不是GTK写成的,但是面板是的)。skin被保存为PNG格式,因此你需要安装gtk,libpng(和他们的devel包)。
+你必须在运行./configure
时使用--enable-gui
来编译它的代码。然后,你可以用下列方法之一打开GUI方式
-gui
选项gui=yes
ln -s $PREFIX/bin/mplayer $PREFIX/bin/gmplayer
,然后运行gmplayer
。
+由于技术原因,目前你不能在命令行下使用-gui
选项。
+ 提示+ +
+ 使用鼠标的中间键(2键鼠标则同时按下左右两键),会弹出一个有DVD播放选项的GTK菜单! +
因为MPlayer不自带skin,所以如果你想要使用GUI,你必须自己下载他们。参见下载页。
+他们应该被解压到系统通用的目录($PREFIX/share/mplayer/Skin
),或者解压到$HOME/.mplayer/Skin
。
+MPlayer在默认情况下会在这些的目录里寻找一个叫default的目录,
+但是你能使用-skin newskin
选项或在config文件中添加skin=newskin
来强制使用*/Skin/newskin
下的skin。
+ MPlayer能在播放电影的同时显示字幕。目前支持下列格式:
+VobSub字幕包括一个大的(几兆).sub文件,和可选的.idx和/或者.ifo文件。
+用法: 如果你有类似sample.sub
,sample.ifo
,sample.idx
之类的文件
+ -- 你必需使用-vobsub sample -vobsubid <id>
的参数(当然必要时加上路径)。
+ -vobsubid
选择类似于播放DVD时的-sid
,用它你可以选择不同的字幕轨道(语言)。
其它格式由一个单一的包含时间,位置和正文信息的文本文件组成。
+用法: 如果你有类似sample.txt
之类的文件,你必须使用-sub sample.txt
+(当然必要时加上路径)。
-subdelay<sec>
-subfps<rate>
-subpos<0-100>
如果你使用MicroDVD字幕文件时遇到电影和字幕之间的延迟不断增加的问题,很有可能你的电影文件和字幕文件的帧速度不同。
+请注意,MicroDVD字幕格式用绝对帧数来计时,因此-subfps
选项不能用于这种格式。因为MPlayer没法猜测
+字幕文件的帧速度,你必须手工修改它。在MPlayer的FTP站点的contrib
目录中有一个小的perl脚本可以替你做这种转化。
关于DVD字幕,请看DVD一节。
+ +MPlayer引入一种称为MPsub的新的字幕格式。它是我(Gabucino)设计。基本上,其主要的特性是基于动态时间 +(虽然它有基于帧的模式)。例如(引自DOCS/tech/mpsub.sub):
+ +# first number : wait this much after previous subtitle disappeared
+ # second number : display the current subtitle for this many seconds
+
+ 15 3
+ A long long, time ago...
+
+ 0 3
+ in a galaxy far away...
+
+ 0 3
+ Naboo was under an attack.
+
因此如你所见,主要的目标是使字幕的编辑/计时/合并/分割变得容易。同时,如果你 -- 比方说 -- 有一个SSA字幕但是它
+与你的电影却有严重的时间/延迟问题,你只要简单运行mplayer dummy.avi -sub source.ssa -dumpmpsub
。
+在当前目录中将生成一个dump.mpsub
文件,它包含源字幕的正文,但是使用MPsub格式。
+然后,你就能字幕中自由地添加或减去任意秒。
字幕的显示使用一种称为'OSD', On Screen Display的技术。OSD被用来显示当前的时间,音量条,进度条等等。
+ +你需要一个MPlayer字体包来使用OSD和字幕功能。有许多方法获得它:
+ +下载字体之后,把你下载的文件UNZIP到~/.mplayer
或者$PREFIX/share/mplayer
。
+然后将其中之一改名或者符合链接为font
(例如:ln -s ~/.mplayer/arial-24 ~/.mplayer/font
)。
+你现在应该在电影的左上角看见一个计时器(用"o"键可以关上它)。
OSD有3种状态:(用'o'键切换)
+你能通过在config文件中设置变量osdlevel=
来改变默认行为。
usleep()
调节A/V同步,达到+/-10ms的准确性。
+ 虽然有时同步应该调整的更好。/proc
文件系统为普通用户调整最大RTC频率。使用下列命令来允许普通用户使用RTC:
+
+ echo 1024 > /proc/sys/dev/rtc/max-user-freq
+
drivers/char/rtc.c
中的一行并且重新编译你的内核。找到下面这一段
+ + * 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))) ++ 把64改成1024。当然你应该确实明白你做了什么。 +
-nortc
选项关闭RTC支持。一些硬件连接器(在ALi1541主板上使用非DMA的DVD光驱上可以证明)RTC定时器的使用会造成跳跃的playback。
+在这些情况下,推荐使用下列的方法。-softsleep
选项打开。它有RTC的效果,但是它不使用RTC。另一方面,它要使用更多的CPU。这段将要如何能够使用V4L兼容的电视选台器观看与截取。
+ +这些代码目前没有继续开发!不要指望它不经过修改或实验就能正常工作!
+ + +./configure
将自动检测v4l的内核头文件和/dev/video*
+ 输入的存在。如果他们存在,电视支持将被编译(查看./configure
的输出)。+ 提示+ + +
+ 颜色是混乱的吗?那么,你的选台器不能在YV12颜色格式中显示。尝试一下I420(-vc rawi420
)或者YUY2, +UYVY,RGB32 (-vo sdl
)颜色格式。你可以用outfmt=YV12
选项来指定它,参见下面。 +
on
noaudio
driver
/dev/video0
)捕捉图象。device
/dev/video0
之外的设备。input
freq
outfmt
-vc rawi420
参数,否则会有fourcc冲突))。width
height
norm
channel
chanlist
us-bcast, us-cable, europe-west, europe-east, 等等
h/k | 选择前一个/下一个频道 | ||
n | 切换制式 | ||
b | 切换chanlist |
伪输出,到AAlib:)
+ mplayer -tv on:driver=dummy:width=640:height=480 -vo aa
+
+ 从标准的V4L输入
+ mplayer -tv on:driver=v4l:width=640:height=480:outfmt=i420 -vc rawi420 -vo xv
注:
+ 如果你的电视卡有一个有外部音频设备而只出现黑屏,但xawtv或类似的东西对输入的信号却工作正常,那么试试-noaudio
选项。对于上述的例子命令是:
+
+
MPlayer使用一个复杂playtree格式。它包括写在最前面作为全局设置的选项(例如mplayer -vfm 5
),和写在文件名之后,
+仅仅作用于给定的文件名或URL或whatever的选项(例如mplayer -vfm 5 movie1.avi movie2.avi -vfm 4
)。
+你能使用{和}给文件名与URL分组。它对-loop选项很有用:mplayer { 1.avi -loop 2 2.avi } -loop 3
命令将按以下顺序播放文件:
+1 1 2 1 1 2 1 1 2
+
单一文件 | mplayer [options] [path/]filename | ||
多个文件 | mplayer [default options] [path/]filename1 [options for filename1] filename2 [options for filename2] ... | ||
VCD | mplayer [options] -vcd trackno [-cdrom-device /dev/cdrom] | ||
DVD | mplayer [options] -dvd titleno [-dvd-device /dev/dvd] | ||
网址 | mplayer [options] http://site.com/file.asf (也可以使用playlist) |
+ 最新版本的MPlayer也可以象Xine一样接受URL风格的VCD和DVD轨道,就做: mplayer dvd://1
或者mplayer vcd://1
+ mplayer -vo x11 /mnt/Films/Contact/contact2.mpg + mplayer -vcd 2 + mplayer -afm 3 /mnt/DVDtrailers/alien4.vob + mplayer -dvd 1 -dvd-device /dev/hdc + mplayer -abs 65536 -delay -0.4 -nobps ~/movies/test.avi ++ +
MPlayer有一个完全可配置的,命令驱动的控制层使你可以键盘,鼠标,游戏杆或遥控器(使用LIRC)控制MPlayer。
+ +<- or -> | 快进/后退10秒 | ||
up or down | 快进/后退1分钟 | ||
pgup/pgdown | 快进/后退10分钟 | ||
< or > | 在播放列表中选下一个/上一个 | ||
p or SPACE | 暂停(按任意键) | ||
q or ESC | 停止播放并退出 | ||
+ or - | 调整音频延迟+/-0.1秒 | ||
/ or * | 减少/增加音量 | ||
f | 切换全屏 | ||
o | 切换OSD: none/seek/seek+timer | ||
z or x | 调整字幕延迟+/-0.1秒 | ||
r or t | 调整字幕位置 | ||
HOME or END | 选择上一级列表中的下一个/上一个playtree命令 | ||
INSERT or DELETE | 下一个/上一个替代source(只用于asx播放列表) | ||
(下列的控制键只有当使用 | |||
1 or 2 | 调整对比 | ||
3 or 4 | 调整亮度 | ||
5 or 6 | 调整hue | ||
7 or 8 | 调整饱和 |
, and . | 上一个/下一个文件 | ||
gray - or + | 减少/增加音量 | ||
enter | 开始播放 | ||
space | 暂停 | ||
s | 停止 | ||
a | about | ||
l | 打开文件 | ||
b | skin browser | ||
e | equalizer对话框 | ||
p | playlist对话框 | ||
f | 切换全屏 | ||
m | 切换静音 | +
h or l | 选择上一个/下一个频道 | ||
n | 切换制式 | ||
b | 切换频道列表 |
MPlayer允许你使用一个简单的config文件把任何键或按钮绑定为任何一个MPlayer控制命令。
+句法是键名后加命令。缺省config文件是$HOME/.mplayer/input.conf
但是-input
conf
+选项可以重新指定(相对路径是相对于$HOME/.mplayer
的)。
+
+
例子:
+ ++## +## MPlayer input control file +## + +RIGHT seek +10 +LEFT seek -10 +- audio_delay 0.100 ++ audio_delay -0.100 +q quit +> pt_step 1 +< pt_step -1 +ENTER pt_step 1 1 ++ +
运行mplayer -input keylist
你将得到一个完整的列表
通过运行"mplayer -input cmdlist"你可以得到一个完整的已知命令的列表
+搜索电影中的某处
+ Type 0 是以+/-val秒搜索。
+ Type 1 是以电影的val%搜索
音频延迟val秒
退出MPlayer
暂停/继续playback
有人知道?
选择playtree中的下一个/上一个输入。Val的符号决定方向.
+ 如果在要求的方向上没有其他可用entry,除非force非0,否则不会做任何动作。
类似pt_step但它跳转到上一级列表的下一个/上一个。用来跳出playtree的内部循环。
当一种以上的source可用时选择下一个/上一个(只有asx播放列表支持).
字幕延迟+/-val秒或当abs非0时跳到val秒。
切换osd模式或当level>0时把它设为level。
增加/减少音量
设置/调整视频参数。Val范围从-100到100。
切换/设置frame dropping模式。
调整字幕位置。
切换到全屏
选择下一个/上一个tv频道。
切换TV制式。
切换频道列表。
GUI的功能
Linux红外遥控 -- 使用一个容易制作的home-brewn红外线接收器,(几乎)任意一个的遥控器然后就可以用它来控制你的Linux box了! +更多内容见www.lirc.org。
+ +如果你已安装了lirc-package,configure将自动检测到它。如果一切顺利,MPlayer在启动时将显示 +"Setting up lirc support..."之类的信息。如果发生错误它将会显示。如果它不显示关于LIRC的任何信息则对LIRC的支持没有编译。就是这样:-)
+ +MPlayer的程序名是 -- 嗯,让我想想看 -- 'mplayer'。你能使用任何mplayer命令甚至传递超过一种命令只要用\n分开他们。 +不要忘记当有意义的时候(搜索,音量等等),在.lircrc中开启repeat标记。这是我的.lircrc的摘录:
+ ++begin + button = VOLUME_PLUS + prog = mplayer + config = volume 1 + repeat = 1 +end + +begin + button = VOLUME_MINUS + prog = mplayer + config = volume -1 + repeat = 1 +end + +begin + button = CD_PLAY + prog = mplayer + config = pause +end + +begin + button = CD_STOP + prog = mplayer + config = seek 0 1\npause +end ++ +
如果你不喜欢lirc-config文件的标准位置(~/.lircrc)使用-lircconf <filename>选项指定别的文件。
+ + +Slave方式把允许你为MPlayer建立简单的frontend。当它开启(用-slave
选项)时MPlayer
+将从stdin读取用new line(\n)分开的命令。
MPlayer支持通过HTTP或者MMS协议播放网络上的文件。
+ +只要直接把URL地址加到命令行中就可以进行播放。MPlayer也支持http_proxy环境变量, +并且在可能的情况下使用代理。也可以强行指定使用代理:
+ +mplayer http_proxy://proxy.micorsops.com:3128/http://micorsops.com:80/stream.asf
MPlayer能从stdin(不称为管道)输入。例如这样能从FTP上播放:
+ wget ftp://micorsops.com/something.avi -O - | mplayer -
注:当使用网络播放功能时推荐打开cache功能:
+ + wget ftp://micorsops.com/something.avi -O - | mplayer -cache 8192 -
为了制作安装包,下载cvs版本,或者.tgz和并把它解压缩,然后进入程序的目录:
+ ++ cd main + fakeroot debian/rules binary ++ +
(... mplayer检测软硬件, 编译自己然后.. ) + dpkg-deb: building package 'mplayer' in '../mplayer_0.90-1_i386.deb'.
+ +现在,成为root,然后:
+ ++ dpkg -i ../mplayer_0.90-1_i386.deb as root. ++ +
你将会看到下面这样的信息:
+ ++ eyck@incubus:/src/main$ sudo dpkg -i ../mplayer_0.90-1_i386.deb + Password: + (Reading database ... 26946 files and directories currently installed.) + Preparing to replace mplayer 0.50-1 (using ../mplayer_0.90-1_i386.deb) + Unpacking replacement mplayer ... + Setting up mplayer (0.90-1) ... ++ + +
为编译它你需要GNU make(gmake,/usr/ports/devel/gmake),本地的BSD make不能正常工作。
+ +为了运行MPlayer你将需要打开"options USER_LDT"重新编译内核(除非你使用-CURRENT,这一项在其中是默认的)。 +如果你有支持SSE的CPU也用"options CPU_ENABLE_SSE"选项来使用它(需要FreeBSD-STABLE,或者使用内核补丁)。
+ +如果MPlayer报告"CD-ROM Device '/dev/cdrom' not found!",那么请做一个符号链接:
+ln -s /dev/(your_cdrom_device) /dev/cdrom
目前对FreeBSD没有DVD支持。
+ +MPlayer在Solaris 2.6或者更新的系统上应该能够正常运行。
+ +AVI文件的回放在Solaris x86上的效果最好,因为在x86平台上你可以选择使用win32 codecs,或者使用MMX/MMX2/3DNow等指令集 +来播放MP3/DivX/DVD或者其他什么。在Solaris SPARC上,你将发现许多AVI文件的视频和/或者音频playback无法正常播放, +因为它们的视频与音频codecs使用Win32 DLL的不可用的。然而,DivX/OpenDivX电影应该可以使用libavcodec播放。
+ +在UltraSPARC上,MPlayer利用他们的VIS扩展(相当于MMX)的优势,目前只应用于libmpeg2, +libvo以及libavcodec ,但mp3lib没有。你能在400MHz CPU上观看VOB文件。你需要安装mLib。
+ +为编译它你需要GNU make(gmake,/opt/sfw/gmake),native的Solaris make不能正常工作。你用Solaris的make代替GNU make时的典型的错误信息为:
+ ++ % /usr/ccs/bin/make + make: Fatal error in reader: Makefile, line 25: Unexpected end of line seen ++ +
在Solaris SPARC上,你需要GNU C/C++编译器;GNU C/C++编译器是否设置使用GNU汇编程序没有什么关系。
+ +在Solaris x86上,你需要GNU汇编程序和GNU C/C++编译器,设置使用GNU的汇编程序!在x86平台上的mplayer代码大量使用MMX,SSE和3DNOW!
+指令集,使用Sun的汇编程序/usr/ccs/bin/as
不能编译通过。
configure脚本将试图查找你的"gcc"命令使用的汇编程序(如果自动检测失败,使用"--as=/whereever/you/have/installed/gnu-as" +选项告诉configure脚本你的系统的GNU的"as"在哪里)。
+ +在Solaris x86系统上使用没有GNU汇编程序的GCC时configure的出错信息为:
+ ++ % configure + ... + Checking assembler (/usr/ccs/bin/as) ... , failed + Please upgrade(downgrade) binutils to 2.10.1... ++ +
(解决方法:安装并且使用配置了"--with-as=gas"的gcc)
+ +当不使用GNU as的GNU C编译程序时的典型出错信息是:
+ ++ % gmake + ... + gcc -c -Iloader -Ilibvo -O4 -march=i686 -mcpu=i686 -pipe -ffast-math + -fomit-frame-pointer -I/usr/local/include -o mplayer.o mplayer.c + Assembler: mplayer.c + "(stdin)", line 3567 : Illegal mnemonic + "(stdin)", line 3567 : Syntax error + ... more "Illegal mnemonic" and "Syntax error" errors ... ++ +
关于DVD支持你必须安装打过补丁的libcss。补丁在: +http://www.tools.de/solaris/mplayer/。
+ +因为Solaris8 x86的两个bug,不能可靠地播放容量>4GB的DVD:
+ +在使用UltraSPARC CPU的Solaris上,对有些耗时的操作使用CPU的VIS指令能获得额外的速度提升。 +在MPlayer中通过Sun的mediaLib中的函数使用VIS加速功能。
+ +mediaLib的VIS加速功能用于mpeg2视频解码和视频输出驱动的颜色转换。
+ + +据报告MPlayer可以在StrongARM上编译。使用下列命令:
+ ++ ./configure --target=arm-linux --disable-css --with-x11libdir=/usr/arm/lib + --with-x11incdir=/usr/arm/lib --disable-gcc-checking ++ + +
据称可以工作正常。你可能必须使用SGIao驱动。谁有较确切的信息?
+ + +能工作。你需要下载SDL for QNX并安装它。然后使用-vo sdl:photon
和-ao sdl:nto
+选项运行MPlayer,速度应该很快。
-vo x11
输出将比Linux更加缓慢,因为QNX只有一个十分缓慢的的X仿真。使用SDL。
为编译它你需要GNU make(gmake,/usr/port/devel/gmake),native的BSD make不能正常工作,还要一个最近的binutils(包括objcopy)。
+ +因为gas的版本不同(relocation vs mmx)的限制,你需要分两步编译: 首先确保non-native的汇编程序当前在PATH中并运行gmake -k
,
+然后在确保使用native版本情况下运行gmake
。
要想MPlayer使用Win32 DLL你要用"option USER_LDT
"重新编译内核。
如果MPlayer报告找不到'/dev/cdrom'或'/dev/dvd',请做一个符号链接,例如ln -s /dev/rcd0c /dev/dvd
我们中不那么hardcore的黑客可以想要使用移植版本(/usr/port/x11/mplayer)。
+ +你必须到MPlayer的目录下,拷贝或者symlinketc/cygwin-inttypes.h
到/usr/include/inttypes.h
来使
+MPlayer顺利编译。否则,它将报告找不到intypes.h
。
有一些关于MPlayer的公开的邮件列表。用户能在下列的地址完成订阅:
+ +这个列表是关于mplayer开发的! 谈论接口与API的变化,新的库,代码优化,configure修改,另外补丁也应发送到这里。不要在这里发送bug报告, +用户问题,特性要求,吵架!这张列表应该保持低交通流量。
在这里只能询问CVS的变化。(如果你不理解为什么要做这样的改动或者你有更好的修正或者你注意到在已经提交的补丁中可能存在的bug或问题)确定你要找的开发者阅读这张列表!
+注意:在列表上的语言必须是英语,除非另有明确说明。请不要使用其它语言发送信息!
+ +注意:http://www.mplayerhq.hu/cgi-bin/htsearch有可供检索的邮件列表文档。 + + +
特殊的系统或CPU相关的bug或问题:
+./configure --disable-sse
./configure --disable-sse
等等选项-ac ffmpeg
)各种各样A-V同步和其它音频问题:
+ +一般的音频延迟或者急跳声音(对所有或者大部分文件存在): +视频输出问题:
+ +首先注意: -fs -vm和-zoom选项只是推荐,(目前)不是所有驱动器都支持。因此,如果它不起作用那不是bug。 +只有少数驱动支持缩放,对x11或dga不要指望这个。
+ +OSD与字幕闪烁:
+-- x11驱动器: 抱歉,它现在不能被修正
+-- xv驱动器: 使用-double选项
使用mga_vid时的绿色图象(-vo mga/-vo xmga):
+-- mga-vid没有正确检测你的显卡的显存大小,使用mga_ram_size选项重新载入
MEncoder(MPlayer的电影编码器)是一个简单的电影编码器,设计用来把MPlayer可播放的电影(AVI/ASF/OGG/DVD/VCD/VOB/MPG/MOV/ +VIV/FLI/RM/NUV/NET)编码成其它MPlayer可播放的格式(见下面)。它能以各种各样的编码格式进行编码,像DivX4(1或者2 pass),libavcodec, +PCM/MP3/VBR MP3音频。同时也有强大的插件系统来操控视频。
+ + +lame
的二进制文件是不够的。顺便说一下:你对lame使用的优化越少,质量越好。lame编译完成之后,
+你能通过运行make test
来测试质量。结果的数字应该少于30。如果它是400之类也不必惊慌,你不应该听到任何可觉察的质量降低。
+啊,如果你的编译程序连make test
都运行不了...好吧,把那个GCC 2.96删掉或者把lame升级到至少3.90。libjpeg
和libpng
,-- 如同安装部分中所说的准备完毕。正如你可能知道的,其它编码的工具需要安装avifile的库。MEncoder根本不需要。
+ + +-ofps
选项进行FPS修正(用于把29.97fps的VOB编码成为24fps的AVI)2-pass编码:名称来自这种方法实际把文件编码两次的事实。第一次编码(又称为pass)创建一些临时性的几兆的文件(*.log), +先不要删除他们(你可以把AVI删了)。在第二次pass中,将使用临时文件的比特率数据创建输出文件,最后产生的文件将有好得多的图象质量。如果这是你第一次听到这个, +你应该在网上查阅一些可用的指南。
+ +这个例子演示如何把DVD编码成为2-pass DivX4 AVI。只需要两个命令:
+ rm frameno.avi
-- 删掉这个文件,它可能来自以前的3-pass编码(它会干扰当前这个)
+ mencoder -dvd 2 -lavcopts
+ -vcodec=mpeg4:more_options -o movie.avi -pass 1
+ mencoder -dvd 2 -lavcopts vcodec=mpeg4:more_options
+ -o movie.avi -pass 2
3-pass编码:这是2-pass编码的扩展,对音频的编码使用一个单独的pass。这种方法提供推荐视频比特率的估计以使之能够适合CD的容量。同时, +不同于2-pass方式,音频仅仅被编码一次。示例:
+ +rm frameno.avi
mencoder <file/DVD> -ovc frameno -o frameno.avi
将创建一个只有音频的avi文件,只包含要求的音频流。不要忘记-lameopts
,如果需要的话设置它。如果你对一部长的电影进行编码,
+MEncoder在这个pass结束之后,将对于650Mb,700Mb,和800Mb的目标大小打印推荐的比特率值。
mencoder <file/DVD> -oac copy -pass 1
+ -ovc divx4 -divx4opts br=<bitrate>
又称为DivX4视频编码的第一次pass。可以选择指定在上一步结束时MEncoder打印的视频比特率。
mencoder <file/DVD> -oac copy -pass 2
+ -ovc divx4 -divx4opts br=<bitrate>
又称为DivX4视频编码的第二次pass。可以选择指定在上一步结束时MEncoder打印的视频比特率。在这次pass中,用frameno.avi
+中的音频将被插入到目的文件中..这就全部搞定了!
rm frameno.avi
-- 移去这个文件,它可能来自以前的3-pass编码(它会干扰当前这个)
+ mencoder -dvd 2 -ovc frameno
+ -o frameno.avi
+ mencoder -dvd 2
+ -lavcopts vcodec=mpeg4:more_options -oac copy -o movie.avi -pass 1
+ mencoder -dvd 2
+ -lavcopts vcodec=mpeg4:more_options -oac copy -o movie.avi -pass 2
使用内部的libavcodec控制器的2或者3-pass编码:你可以选择使用libavcodec内部的2或者3-pass方式, +它在使用libavcodec时可能能提供比使用外部的DivX4制作的2-pass控制器更好的最终比特率的精确度。
+ +rm -f lavc_stats.txt
+ mencoder -dvd 2 -ovc lavc -lavcopts vcodec=mpeg4:vpass=1 (audio-options) -o
+ movie.avi
+ mencoder -dvd 2 -ovc lavc -lavcopts vcodec=mpeg4:vpass=2 (audio-options) -o
+ movie.avi
rm -f frameno.avi lavc_stats.txt
+ mencoder -dvd 2 -ovc frameno (audio-options) -o frameno.avi
+ mencoder -dvd 2 -ovc lavc -lavcopts vcodec=mpeg4:vpass=1 -oac copy -o
+ movie.avi
+ mencoder -dvd 2 -ovc lavc -lavcopts vcodec=mpeg4:vpass=2 -oac copy -o
+ movie.avi
把电影图象的尺寸重新设置的需要经常出现。原因可能很多,例如减小输出文件的大小,把SVCD编码为到DivX。提取的DVD多半需要重新缩放,例如一个4:3的 +DVD应该是640x480,当你希望它合适1张CD,并且同时还有不错的质量的时候。SVCD是480x480的尺寸,而他们的头部包含播放器应该使用的长宽比(例如: +480x480 + 4:3 = 640x480)。 +然而当编码成为AVI(DivX)文件时,你必须了解AVI的头部不存储这个值。这样,唯一的解决方法是重新缩放。
+ +缩放过程由'scale'视频滤镜处理:-vop scale=X:Y
。其质量由-sws
选项控制。如果它没有指定,
+MEncoder将使用0:快速二次线性。
用法:
+ mencoder sample-svcd.mpg -lavcopts
+ vcodec=mpeg4:more_options -vop scale=640:480 -sws 2 -o
+ output.avi
MEncoder能用两种方式处理输入流:编码或者复制他们。这部分是关于复制的。
+ +-ovc copy
选项): 可以干的很好:)-oac copy
选项): 直接了当。可以把一个外部音频文件(MP3,Vorbis)合波到输出流中。
+使用-audiofile <filename>
选择来实现这个功能。最容易的事情。我们简单地复制视频和音频流,并用MEncoder产生索引。当然这不能修复视频和/或者音频流中可能的错误。
+这同样也可以修复交错损坏的文件,
+使它们不再需要-ni
选项。
命令:mencoder -idx input.avi -ovc copy -oac copy -o output.avi
libavcodec提供简单编码许多有趣的视频和音频格式(目前其音频编码器还不支持)的方法。 +你能编码下列的编码格式:
+ +第一个列包含应该传给vcodec
配置的编码格式的名称,比如:-lavcopts vcodec=msmpeg4
例如,对于使用MJPEG压缩:
+ mencoder -dvd 2 -o title2.avi -ovc lavc
+ -lavcopts vcodec=mjpeg
MEncoder具有从一个或多个JPEG,PNG或TGA文件创建电影的能力。通过简单的framecopy它能创建MJPEG(Motion JPEG), +MPNG(Motion PNG )或MTGA(Motion TGA)文件。
+ +处理过程的解释: + +libjpeg
解码输入图像(当解码PNG时将使用libpng)。-mf
选项的解释能在全局选项部分和manpage中被找到。
用当前目录中的所有JPEG文件创建DivX4文件:
+ mencoder \*.jpg -mf on:w=800:h=600:fps=25 -ovc divx4 -o
+ output.avi
用当前目录中的一些JPEG文件创建DivX4文件:
+ mencoder frame001.jpg,frame002.jpg -mf on:w=800:h=600:fps=25 -ovc divx4 -o
+ output.avi
用当前目录中的所有JPEG文件创建Motion JPEG(MJPEG)文件:
+ mencoder \*.jpg -mf on:w=800:h=600:fps=25 -ovc copy
+ -o output.avi
用当前目录中的所有PNG文件创建一个非压缩的文件:
+ mencoder \*.png -mf on:w=800:h=600:fps=25:type=png -ovc raw -o
+ output.avi
用当前目录中的所有PNG文件创建Motion PNG(MPNG)文件:
+ mencoder \*.png -mf on:w=800:h=600:fps=25:type=png -ovc copy
+ -o output.avi
用当前目录中的所有TGA文件创建Motion TGA(MTGA)文件:
+ mencoder \*.tga -mf on:w=800:h=600:fps=25:type=tga -ovc copy
+ -o output.avi
MEncoder有把DVD字幕提取到Vobsub格式的文件的能力。包括以.idx
和.sub
结尾的一对
+文件而且通常打包在一个单一的.rar
文档中。MPlayer能使用-vobsub
和-vobsubid
+选项播放它们。
你使用-vobsubout
选项规定输出文件的基名称(就是不包括.idx
或者.sub
的后缀)和
+-vobsuboutindex
指定字幕在输出文件中的索引号。
如果输入不是来自DVD你必须使用-ifo
来指明构造.idx
文件需要的.ifo
文件。
如果输入不是来自DVD而且你也没有.ifo
文件你将需要使用-vobsubid
选项让它了解在.idx
+文件中放置什么样的language id。
如果.idx
和.sub
文件已经存在,每次运行将追加运行获得的字幕。因此,你应该在开始之前删掉所有东西。
在进行3-pass编码的同时从DVD复制两份字幕
+ rm subtitles.idx subtitles.sub
+ mencoder -dvd 1 -vobsubout subtitles -vobsuboutindex 0
+ -sid 2 -o frameno.avi -ovc frameno
+ mencoder -dvd 1 -oac copy -ovc divx4 -pass 1
+ mencoder -dvd 1 -oac copy -ovc divx4 -pass 2 -vobsubout
+ subtitles -vobsuboutindex 1 -sid 5
从一个MPEG文件中复制法语字幕
+ rm subtitles.idx subtitles.sub
+ mencoder movie.mpg -ifo movie.ifo -vobsubout subtitles
+ -vobsuboutindex 0 -vobsuboutid fr -sid 1
MEncoder可用的选项和例子的完全列表,请参见manpage。
+ + + diff --git a/DOCS/Chinese/faq.html b/DOCS/Chinese/faq.html new file mode 100644 index 0000000000..8d2321262e --- /dev/null +++ b/DOCS/Chinese/faq.html @@ -0,0 +1,586 @@ + + + + ++ 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. ++
"Your gcc does not support even i386 for '-march' and '-mcpu'."
+ config.log
文件。--disable-gcc-checking
选项。记住是你自己选择这条路的。
+一定不要报告bug,一定不要到邮件列表上寻求帮助。如果你遇到问题我们将不提供任何支持。+ 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 ++
++And we have idegs. And our idegcounter overflowed again and again.
+ +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.
+ +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.
+ +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.
+ +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.
+ +Conclusion: We can't be good. Half the people will always say we are bad.
+ +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.
+
cp etc/inttypes.h .
)然后再试一次..../configure
没有找到SSE.../usr/X11
和/usr/include/X11
的符号链接(在Mandrake系统上可能有这个问题)。
+他们用下列命令创建:$ ln -sf /usr/X11R6 /usr/X11
$ ln -sf /usr/X11R6/include/X11 /usr/include/X11
BACKGROUND = y
注释掉。> error while loading shared libraries: lib*.so.0: cannot load
+ shared object file: No such file or directory
/usr/local/lib
里面.../etc/ld.so.conf
里添加/usr/local/lib
然后运行ldconfig
。Warning: loading mga_vid.o will taint the kernel: no license
o
或者使用-osdlevel
选项。-xy
或者-fs
选项对x11驱动(-vo x11
)不起作用...-zoom
选项明确指定使用软件缩放(十分缓慢)。你最好是使用XF86VidMode支持:
+你必须指定-vm
和-fs
选项,然后就搞定了。确保在你的XF86Config文件中有正确设定了modelines,并且尝试使用
+DGA驱动并且SDL的DGA驱动。它快得多。如果SDL的DGA能工作就用它,它还要更快。A: 2.1 V: 2.2 A-V: -0.167 ct: 0.042 57/57 41% 0% 2.6% 0 4 49%
+ -autoq
时)-quiet
选项并阅读man page。-vo null
播放文件然后用-vo ...
播放,
+检查它们的不同来查看视频速度。/usr/lib/win32/
下找不到文件的错误...mplayer
而不是mplayer-lirc
吗? 注意,mplayer-lirc
+使用了很长时间,包括0.60的发行版,但是它最近又变成mplayer
了。./configure
之后,编辑config.h
并将#undef FAST_OSD
换成
+#define FAST_OSD
。然后重新编译。-double
选项。也试试-vop expand
-icelayer
选项并向
+mplayer-users邮件列表报告。mplayer <options> <filename> < /dev/null &
+ Detected audio codec: [divx] afm:4 (DivX audio (WMA)) + Requested audio codec family [divx] (afm=4) not available (enable it at + compile time!) ++
-bps
或-nobps
选项。如果还没有改善,阅读
+这个并把文件上载到FTP上。ldd /usr/local/bin/mplayer
的输出。如果它包含libc.so.6 => /lib/libc.so.6 (0x4???????)
libc.so.6 => /lib/libc.so.6 (0x00??????)
-afm 1
选项禁用l3codeca.acm。./configure --enable-runtime-cpudetection
)。
+如果没有使用上面提到的特性,不要在与编译它不同的CPU上使用MPlayer。~/.mplayer/
下的codecs.conf的版本太旧。用/etc/
下面的文件升级它。vc=
选项或者类似东西。-ao arts
)。如果它失败或者没有被编译进来,尝试SDL
+(-ao sdl
)并且确保你的SDL能处理arts的音频。还有另一个选择是用artsdsp运行MPlayer。-vc odivx
播放时时,出现灰色屏幕,用-vc divx4
时,出现绿色屏幕。DEMUXER: Too many (945 in 8390980 bytes) video packets in the buffer!
-ni
选项。-ao oss
。
+ 参见声卡一节。-nobps
选项,和/或者-mc 0
。codecs.conf
中禁用Windows DLL,或者使用-vc ffmjpeg
选项(为此你需要为MPlayer编译libavcodec支持)。Linux RTC init: ioctl (rtc_pie_on): Permission denied
Detected video codec: [null] drv:0 (NULL codec (no decoding))
codecs.conf
。-nortc
选项。+ 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... ++
-ao arts
+选项让MPlayer使用arts。./configure
会自动检测你的DGA驱动。如果-vo help
没有显示DGA,那你的X装的有问题。
+尝试./configure --enable-dga
并且读取相关文档。或者,使用-vo sdl:dga
+选项试试SDL的DGA驱动。-vo help
显示有DGA驱动,但是它抱怨权限。帮帮我!su -
),然后再试一次。另一个解决方法是为
+MPlayerSUID root,但是这种方法不被推荐!chown root /usr/local/bin/mplayer
chmod 755 /usr/local/bin/mplayer
chmod +s /usr/local/bin/mplayer
+ 警告:安全风险+
+ 这是一个很大的安全风险!永远不要在除了你之外还有人可以使用的服务器上这样做,因为他们能通过SUID root的 +MPlayer获得root权限。你被警告过了。 +
X Error of failed request: BadAccess (attempt to access private
+ resource denied)
+ Major opcode of failed request: 147 (MIT-SHM)
+ Minor opcode of failed request: 1 (X_ShmAttach)
+ Serial number of failed request: 26
+ Current serial number in output stream:27
-vo gl
)输出不工作(锁死/黑色窗口/X11出错/...)。x11
输出,而不是xv
!x11
输出。现在尝试-vo x11 -fs -zoom
。看到区别了?没有?!好,给你点启发:SDL的x11
+输出只要xv可用就会使用xv,你不必为它担心...注意:你使用-forcexv
或-noxv
强制/禁用SDL使用xvmplayer: ifo_read.c:1143: ifoRead_C_ADT_internal: Assertion
+ nfo_length / sizeof(cell_adr_t) >= c_adt->nr_of_vobs' failed.
/dev/
里)。-chapter
选项。-cache
选项(在man page中介绍)并尝试用hdparm工具为了DVD光驱开启DMA(在文档
+CD部分介绍)。TOOLS
目录下的mencvcd
脚本。使用它你能把DVD或者其它电影编码成为VCD或者
+SVCD格式甚至直接把它们刻到CD上。-sid
选项!-chapter
选项,像这样:
+ -chapter 5-7
首先澄清一个普遍的错误是非常重要的。 当人们看到以.AVI为扩展名的文件时,他们立即得出结论,认定它不是MPEG文件。 +那种看法是不对的。至少不完全对。与一般人的看法相反这种文件能包含MPEG1视频。
+ +如你所见,一种编码方式与一种文件格式是不一样的。
+ 视频编码格式的例子有:MPEG1,MPEG2,DivX,Indeo5,3ivx。
+ 文件格式的例子有:MPG,AVI,ASF。
在理论上,你能把OpenDivX视频和MP3音频放到MPG格式的文件中。然而,大多数播放器将无法播放它, +由于他们期待的是MPEG1视频和MP2音频(不同于AVI格式,MPG没有必要的区域来描述其视频和音频流)。 +或者你可以把MPEG1视频放到AVI文件中。FFmpeg和 +MEncoder就能建立这样的文件。
+ + + +MPEG文件会以不同的形式出现:
+ +-vcd
选项来播放VCD。MPEG文件中的帧序列组成独立的组。这意味着你能用标准的文件工具(像dd
,cut
)切割和合并MPEG文件,
+并且得到的文件还是完全可用的。
MPG的一个重要的特性是它们有一个描述视频流长宽比的区域。例如SVCD有480x480的分辨率的视频,而在文件头中的那个区域被置为4:3,
+这样它以640x480的分辨率被播放。AVI文件没有这个区域,因此他们必须在编码或者播放时用-aspect
重新缩放。
由微软设计,AVI(Audio Video Interleaved)是一种普遍的多用途格式,目前被大多数DivX和DivX4视频所使用。 +它有许多已知的弊端和缺点(比如在流播放时)。它支持1个视频流和0到99个音频流。文件大小限制是2GB,但是现在存在一种扩展格式 +称为OpenDMS允许更大的文件。微软目前强烈反对使用它并鼓励使用ASF与WMV。不过没有什么人在乎。
+ +有一个hack允许AVI文件包含Ogg Vorbis音频流的,但这使他们与标准的AVI不兼容。MPlayer支持播放这种文件。 +搜索功能也被植入,但由于编码糟糕的文件的混乱的文件头使这项功能被严重限制了。遗憾地是,目前唯一能建立这种文件的编码器, +NanDub,就存在这个问题。
+ +注意:DV照相机建立的未经加工的DV流被DV grabbing utilities转换成两种不同类型的AVI文件。所以AVI将或者包含 +MPlayer可以播放的分离的音频与视频流,或者是未经加工的DV流,它的支持正在开发中的。
+ +有两种类型的AVI文件:
+-ni
选项)。MPlayer支持两种AVI文件的计时方式:
+任何视频和音频的编码格式都允许使用,但注意大多数播放器对VBR音频的支持都不好。文件格式允许使用VBR音频,但是大多数播放器期待CBR音频, +这样它们无法播放VBR。VBR是常见而且和微软AVI说明仅描述CBR音频。大多数AVI编码器/多路复用器在使用VBR音频时会创建坏的文件。目前已知的 +只有两个例外:NanDub和MEncoder。
+ + +ASF(active streaming format)格式来自微软。他们开发了ASF的两个变种,v1.0和v2.0. v1.0被他们的媒体工具(Windows媒体播放器和 +Windows媒体编码器)使用并且是保密的. v2.0被公开并申请专利:)。当然,他们是不同的,完全没有任何兼容性(那只是另一个法律游戏)。 +MPlayer只支持v1.0格式因为没有任何人见过v2.0格式的文件:)。注意,ASF文件现在常以.WMA或者.WMV的扩展名出现。
+ + +这些格式是由苹果设计的,能包含任何编码格式,CBR或者VBR。他们通常使用.QT或者.MOV的扩展名。自从MPEG4组织选择QuickTime作为
+MPEG4的推荐文件格式后,他们的MOV文件以.MPG或.MP4的扩展名(有趣的是这些文件的视频和音频流是真正的MPG和AAC文件。你甚至能用
+-dumpvideo
和-dumpaudio
选项提取他们。)。
注意:大多数新的QuickTime文件使用Sorenson视频和QDesign Music音频。参见我们的 +Sorenson编码格式一节。QDesign Music音频目前不能播放。
+ + +MPlayer乐于解码VIVO文件格式。这个格式的最大缺陷在于它没有索引块,也没有一个固定的包大小或者同步字节和大多数文件 +甚至缺乏关键帧,所以别想着搜索了!
+ +VIVO/1.0文件的视频编码格式是标准的h.263。VIVO/2.0文件的视频编码格式是一个经过修改的,非标准的h.263v2。 +音频也使一样,它可以是g.723(标准的),或Vivo Siren。
+ +关于安装指导参见VIVO视频编码格式和 +VIVO音频编码格式两节。
+ + +FLI被Autodesk Animator使用的一种很老的文件格式,但是它是网上小动画普遍使用的一种文件格式。MPlayer
+能读取并解码FLI电影寻求在它们中搜索(当使用-loop
选项循环播放时有用)。FLI文件没有关键帧,
+因此图画在搜索后短时间内将是混乱的。
是的,MPlayer能读取(demux)RealMedia(.rm)文件。搜索功能能工作,但是你必须明确地指定-forceidx
选项
+(这种格式支持关键帧)。这里是被支持的RealVideo和
+RealAudio编码格式的列表。
NuppelVideo是电视截取工具(据我所知:)。MPlayer +能读取它的.NUV文件(只能是NuppelVideo 5.0)。那些文件能包含未压缩的YV12,压缩的YV12+RTJpeg,压缩的YV12+lzo和压缩的YV12 RTJpeg+lzo帧。 +MPlayer能解码所有这些格式(并且用MEncoder把它们编码成DivX/etc!)。搜索功能能工作。
+ + +yuv4mpeg/yuv4mpeg2是用于mjpegtools programs +的文件格式。你能用这些工具进行这种格式的视频截取,制作,过滤或编码。这种文件格式是一个非压缩的YUV 4:2:0图象序列。
+ + +这种格式用于老的世嘉土星CD-ROM游戏。
+ + +RoQ文件是用于ID的一些游戏例如Quake III和Return to Castle Wolfenstein的多媒体文件。
+ + +这是Xiphophorus的一个新的文件格式。它能包含任何视频或者音频编码格式,
+CBR或者VBR。要想播放它,你需要在编译MPlayer之前安装libogg
和libvorbis
。
MPlayer是一个电影播放器而不是媒体播放器,虽然它能播放一些音频文件(他们将在下面的 +部分中列出)。不推荐这种使用MPlayer的方法,你最好使用xmms。
+ + +你可能在播放有些MP3文件时遇到问题,MPlayer将它们错误的检测为MPEG文件并且不能正常播放或者完全不能播放。
+如果要修正这个问题就必须放弃对有些被破坏的MPEG文件的支持,所以在可以预见的将来仍然会是这样。manpage中描述的
+-demuxer
标签在这些情况下可能会帮助你。
要求正确的安装libogg
和libvorbis
。
skin
文件
+ +谢谢Zolt醤 Ponekker的帮助。 +
+ ++Andr醩 Mohari <mayday@freemail.hu> +
+ + ++ $(DATADIR)/Skin/ + $(PREFIX)/share/mplayer/Skin/ + ~/.mplayer/Skin/ ++ +
+注意,第一个路径倚赖于MPlayer的安装配置(见configure
脚本
+的--prefix
和--datadir
的参数)。
+
+ $(PREFIX)/share/mplayer/Skin/default/ ++ + +
+在主窗口(见下面)中你能使用包含“透明色”的图象:用颜色#FF00FF(深红) +填充的区域在MPlayer看来是完全透明的。这意味着你甚至能改变窗口外形如果你的X服务器有XShape扩展。 +
+ + ++目前有三个要被修饰的窗口:主窗口,副窗口和 +Skin菜单(右键单击弹出)。 +
+ ++一个按钮有三种状态(按下,释放,禁止),所以按钮图象必须垂直地划分成三部分。 +细节参见按钮项目。 +
+ ++滑动条(主要用于搜寻条和音量/平衡控制)可以有任意多的状态只要你把图像分成上下排列的足够多份。 +细节参见hpotmeter和potmeter。 +
+ ++标签有一点特殊:字符需要从图象文件中绘制,而图象中的字符用字体描述文件 +描述。后者一个纯文本文件规定图像中每一字符的x,y坐标和大小(图象文件和他的字体描述文件共同 +组成一个字体)。细节参见dlabel和slabel。 +
+ ++ +注意:所有图象都能像图象格式一节中说明的使用透明色。 + +
++一个菜单选项用图象中的位置和大小定义(细节参见skin菜单)。 +
++还有一件重要的事情没有提到:为了使按钮,滑动条和菜单项工作,MPlayer必须知道如果他们被点击 +的话应该做什么。这是利用消息(事件)机制完成的。对于这些项目,你必须定义当 +他们被点击时将会产生的消息。 +
+ +.fnt
为扩展名)。
+
+
+skin
文件
+如上所述,这是skin的配置文件。
+它是基于行的;注释行必须以';
'开头(只有空格和tab可以放在';
'之前)。
+
+文件由section组成。每一段描述一个程序的skin,使用下列的形式: +
+ ++section = section name +. +. +. +end + |
+目前只有一个程序,所以你只需要一个section: +它的名称是movieplayer。 +
+ ++这个段中每个窗口用下列形式的块描述: +
+ ++window = window name +. +. +. +end + |
+其中window name可以是下面各字串中的一项: +
+ ++(副窗口和skin菜单块是可选的 -- 你不一定要建立菜单或者修饰副窗口 )。 +
+ ++在一个窗口的描述块内,你能用下列形式的一行定义窗口中的每一项目: +
+ +item = parameter
+item
是定义GUI项目的类型的字串,parameter
是一个数字或者文字值
+(或者一组用逗号分开的值的列表)。
++把上述的放在一起,整个文件看起来就有点像这样: +
+ ++section = movieplayer + window = main + ; ... items for main window ... + end + + window = sub + ; ... items for subwindow ... + end + + window = menu + ; ... items for skin menu ... + end +end + |
+图象文件的名称必须不带目录名 -- 图象在Skin
目录中被搜索。你能(但是并不需要)规定扩展名。
+如果文件不存在,MPlayer将试图装载<filename>.<ext>
文件,
+<ext>
可以是tga
,TGA
,bmp
,BMP
,
+png
或者PNG
(按这个顺序尝试)。第一个匹配文件将被使用。
+
+最后是一些用来定位的语句。主窗口和副窗口可以放置在屏幕的不同的角落,通过给定X
和Y
坐标。
+0
代表顶端或左端,-1
代表中心然后-2
代表右边或底部:
+
+ +(0, 0)----(-1, 0)----(-2, 0) + | | | + | | | +(0,-1)----(-1,-1)----(-2,-1) + | | | + | | | +(0,-2)----(-1,-2)----(-2,-2) + ++ +
+这里有个例子可以把这个搞清楚。假设你有个叫main.png 的图像用来做主窗口:
+++ +MPlayer将尝试加载+ base = main, -1, -1 ++ main ,main.tga ,main.TGA ,
+main.bmp 等等,所以将找到main.png 。
++如果你(碰巧)写了 + ++那么+ base = main.bmp, -1, -1 ++ main.bmp ,main.bmp.tga ,main.bmp.TGA ,
+main.bmp.bmp 将被搜索而且MPlayer将最终放弃搜索,因为当前目录中只有
+main.png 没有main.bmp 。
+ |
window = main
' . . . 'end
'块中的项目的列表。
+
+base = image, X, Y
+X,Y
位置,窗口的大小与图像相同。
+button = image, X, Y, width, height, message
width
*height
的按钮放置在X
,Y
的位置。
+指定的message
将在按钮被点击时产生。被image
制定的图象必须有从上到下三个部分
+(根据按钮的可能状态),像这样:
+++------------+ +| pressed | ++------------+ +| released | ++------------+ +| disabled | ++------------+ ++
decoration = enable|disable
+hpotmeter = button, bwidth, bheight, phases, numphases, default, X, Y, width, height, message
+
+
+X
,Y
位置放置一个大小为width
*height
的水平滑动条。
+所用的图象可以划分成不同的部分用来显示滑动条的不同状态(例如,你能做一个音量滑动条,当音量从最小变到最大时,
+滑动条的颜色从绿色变成红色。)。hpotmeter
可以有一个能被水平拖曳的按钮。
+
+button
-- 用于按钮的图像(必须有从上到下三部分,跟button中一样)bwidth
,bheight
-- 按钮的大小phases
-- 用于hpotmeter的不同的状态的图象。如果你想不要这样的图象可以使用一个特殊的值NULL
。
+图象必须像这样被垂直划分成numphases
个部分:
+++------------+ +| phase #1 | ++------------+ +| phase #2 | ++------------+ + ... ++------------+ +| phase #n | ++------------+ ++
numphases
-- phase
图象中储存的状态的数量default
-- hpotmeter的缺省值(范围0到100)X
,Y
-- hpotmeter的位置width
,height
-- hpotmeter
的宽度和高度message
-- 当hpotmeter
的值改变时产生的消息vpotmeter
项目,但是它目前还没有被实现。
+
+potmeter = phases, numphases, default, X, Y, width, height, message
+hpotmeter
。(我猜它是用来旋转,但它只对水平拖拽作出反应)。
+描述参数参见hpotmeter。phases
能设为NULL
,
+但这实在没什么用处,因为那样你就看不到potmeter
在哪里了。
+font = fontfile, fontid
+fontfile
是以.fnt
为扩展名的字体描述文件的名字(不要加上扩展名)。
+fontid
用来代表这种字体(见dlabel和slabel)。
+可以定义25个字体。
+slabel = X, Y, fontid, "text"
+X
,Y
位置放置一个静态的标签。text
将用fontid
代表的字体显示。
+text只能是无格式文本($x
之类的变量不起作用)而且必须封在一对双引号中(但是"
字符不能是text的一部分)。
+标签使用由fontid
代表的字体显示。
+dlabel = X, Y, length, align, fontid, "text"
+X
,Y
位置放置一个动态的标签。标签被称为动态的,因为它的text周期性地刷新。标签的最大限度长度由
+leghth
给定(它的高度是字符的高度)。如果将要显示的text比给定的宽度宽,它将滚动显示,否则它将在指定的空间之内按
+align
参数的值对齐显示:0
表示靠右对齐,1
表示居中对齐,2
表示靠左对齐。
+text
给定:text必须封在一对双引号中(但是"
字符不能是text的一部分)。标签使用由
+fontid
代表的字体显示。你能在文本中使用下列变量:
+
+Variable | Meaning |
---|---|
$1 | +hh:mm:ss格式的播放时间 |
$2 | +mmmm:ss格式的播放时间 |
$3 | +hh(小时)格式的播放时间 |
$4 | +mm(分)格式的播放时间 |
$5 | +ss(秒)格式的播放时间 |
$6 | +hh:mm:ss格式的电影长度 |
$7 | +mmmm:ss格式的电影长度 |
$8 | +h:mm:ss格式的电影长度 |
$v | +xxx.xx%格式的音量 |
$V | +xxx.x格式的音量 |
$b | +xxx.xx%格式的声道平衡 |
$B | +xxx.x格式的声道平衡 |
$$ | +$字符 |
$a | +一个代表音频格式的字母(none: n ,mono: m ,stereo: t ) |
$t | +track号(在播放列表中) |
$o | +文件名 |
$f | +小写格式文件名 |
$F | +大写格式文件名 |
$T | +一个代表媒体流类型的字幕(文件: f ,Video CD: v ,DVD: d ,URL: u ) |
$p | +"p"字符(如果电影正在播放并且字体中有"p"这个字符) |
$s | +"s"字符(如果电影停止播放并且字体中有"s"这个字符) |
$e | +"e"字符(如果playback被暂停并且字体中有"e"这个字符) |
||
这样的暂停符号)的字符。你应该有一个正常字符的字体以及另一个用于符号的不同的字体。
+更多信息参见符号部分。
+
+window = sub
' . . . 'end
'块。
+
+base = image, X, Y, width, height
+X
,Y
位置出现(0,0
是左上角)。
+你能用-1
指定中心-2
指定右边(X
)和底部(Y
)。窗口将和图象一样大。
+width
和height
指定窗口的大小; 他们是可选的(如果没有他们,窗口是与图象同样的大小)。
+background = R, G, B
+R
,G
和B
规定颜色的的红,绿和蓝色的组成部分(它们中每一个都是从0到255的十进制数字)。
+base
项指定的图象中获得,当前选择的条目则从selected
项指定的图象中获得。
+你必须通过menu
项定义每个菜单条目的位置和大小。
+
+
+这些是能用于'window = menu
'. . . 'end
'之间的项目。
+
base = image
+selected = image
+menu = X, Y, width, height, message
+X,Y
位置和大小。当鼠标在该条目上被释放时产生message
消息。
+
+字体描述文件随着(以.fnt
为扩展名)能有以';
'开始的注释行。文件必须有像这样的行
image = image
+image
是用于字体的图象文件的名字(你不必制定扩展名)。
+"char" = X, Y, width, height
+X
和Y
指定char
字符在图象中的位置(0,0
表示左上角)。
+width
和height
是字符的尺寸,以象素为单位。
+font.png
定义A,B,C三个字符。
++; 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 + |
+下列的表格列出所有能被用来显示符号的字符(所以要求另一种字体)。 +
+ +字符 | 符号 |
---|---|
p | +播放 |
s | +停止 |
e | +暂停 |
n | +无声 |
m | +单声道 |
t | +立体声 |
f | +媒体流是文件 |
v | +媒体流是Video CD |
d | +媒体流是DVD |
u | +媒体流是URL |
+注意:当前只有'p', 's', 'e', 'n', 'm'和't'能被使用。 +
+ ++注意:一些信息可能不像所预想的那样工作(或者根本不工作)。你也知道,GUI还在开发中。
+ + +++ + ++
+- evNext +
- 跳到播放列表中下一个track。 + +
- evPause +
- 暂停播放。 + +
- evPauseSwitchToPlay +
- 与
evPlaySwitchToPause
一起形成开关。他们能用来实现普通的播放/暂停按钮。两条信息应该被分配到 +窗口中同一位置的两个按钮上。这条信息暂停播放并使evPlaySwitchToPause
按钮的图象显示出来(表明点击按钮能继续播放)。 + +- evPlay +
- 开始播放。 + +
- evPlaySwitchToPause +
- 与
evPauseSwitchToPlay
对应的消息。这条信息开始播放并使evPauseSwitchToPlay
+按钮的图象显示出来(表明点击按钮能暂停播放)。 + +- evPrev +
- 跳到播放列表中上一个track。 + +
- evStop +
- 停止播放。 +
++ + ++
+- evBackward10sec +
- evBackward1min +
- evBackward10min +
- 向后搜索10秒/1分钟/10分钟。 + +
- evForward10sec +
- evForward1min +
- evForward10min +
- 向前搜索10秒/1分钟/10分钟。 + +
- evSetMoviePosition +
- 搜索到制定位置(能被滑动条使用;使用与滑动条相关的值( 0-100% ))。 +
++ + ++
+- evDoubleSize化 +
- 把电影窗口置为双倍大小。 + +
- evFullScreen +
- 切换全屏方式。 + +
- evNormalSize化 +
- 把电影窗口置为正常大小。 +
++ + ++
+- evDecAudioBufDelay +
- 减少音频缓冲延迟。 + +
- evDecBalance +
- 减少声道平衡。 + +
- evDecVolume +
- 减少音量。 + +
- evIncAudioBufDelay +
- 增加音频缓冲延迟。 + +
- evIncBalance +
- 增加声道平衡。 + +
- evIncVolume +
- 增加音量。 + +
- evMute +
- 禁音/取消禁音。 + +
- evSetBalance +
- 设置声道平衡(能被滑动条使用;使用与滑动条相关的值( 0-100% ))。 + +
- evSetVolume +
- 设置音量(能被滑动条使用;使用与滑动条相关的值( 0-100% ))。 +
++ + + diff --git a/DOCS/Chinese/sound.html b/DOCS/Chinese/sound.html new file mode 100644 index 0000000000..3e9db6a46d --- /dev/null +++ b/DOCS/Chinese/sound.html @@ -0,0 +1,230 @@ + + + + ++
+- evAbout +
- 打开关于窗口。 + +
- evEqualizer +
- 打开/关闭均衡器。 + +
- evExit +
- 退出程序。 + +
- evIconify +
- 窗口图标化。 + +
- evLoad +
- 装载文件(打开一个文件浏览窗口,你能在其中选择文件)。 + +
- evLoadPlay +
- 功能与
evLoad
一样,但是它在文件之后装载自动地开始播放。 + +- evNone +
- 空信息,它没有效果(也许CVS版本除外:-))。 + +
- evPlayList +
- 打开/关闭播放列表窗口。 + +
- evPreferences +
- 打开选项设置窗口。 + +
- evSkinBrowser +
- 打开skin浏览器窗口。 +
MPlayer的音频接口称为libao2。它目前包含这些驱动:
+ +一般: | |||
oss | OSS(ioctl)驱动(支持硬件AC3中转) | ||
sdl | SDL驱动(支持升/降采样率,ESD,ARTS等等) | ||
nas | NAS(Network Audio System)驱动 | ||
alsa5 | 本地的ALSA 0.5驱动 | ||
alsa9 | 本地的ALSA 0.9驱动(支持硬件AC3中转) | ||
sun | BSD和Solaris8用户的SUN音频驱动(/dev/audio ) | ||
arts | 本地的ARTS驱动(主要针对KDE用户) |
事实上,Linux声卡驱动有兼容问题。可能需要一定时间找到你最理想的设置。
+ +-ao oss
(这是默认的)。如果你遇到毛刺,停止或者任何不正常的事情,
+尝试-ao sdl
(注意:你需要安装SDL库和头文件)。许多情况下SDL的音频驱动都会有帮助,也支持ESD,
+ARTS,和升/降采样率。(ESD是GNOME的音频守护进程,ARTS是KDE的)。-ao alsa5
,因为ALSA 0.5的OSS仿真很buggy,
+会导致MPlayer崩溃并出现这样的信息:DEMUXER: Too many (945 in 8390980 bytes) video packets in the buffer!
-ao oss
和-ao sdl
之间选择。你也能使用-ao alsa9
。它能工作,
+但是可能出现不同步或者声音消失之类的问题。在Solaris和FreeBSD系统上,用-ao sun
选项使用SUN的音频驱动,否则视频音频都无法工作。
VIA板载芯片(via82cxxx)只能48kHz | ||
驱动: | 在sourceforge.net | |
Aureal Vortex 2 | ||
OSS: | 没有驱动 | |
OSS/Pro: | OK | |
ALSA: | 没有驱动 | |
Max kHz: | 48 | |
驱动: | aureal.sourceforge.net | |
驱动2: | 在Pontscho的主页 + (缓冲大小增加到32k) | |
GUS PnP | ||
OSS: | 没有驱动 | |
OSS/Pro: | OK | |
ALSA: | OK | |
Max kHz: | 48 | |
SB Live! | ||
OSS: | 模拟方式很好,SP与DIF不能工作 | |
ALSA: | 两个都很好 | |
Max kHz: | 192 | |
SB AWE 64 | ||
OSS: | max 44kHz | |
ALSA: | 48kHz听起来很糟 | |
Max kHz: | 48 | |
Gravis UltraSound ACE | ||
OSS: | 不是很好 | |
ALSA: | OK | |
Max kHz: | 44 | |
Gravis UltraSound MAX | ||
OSS: | OK | |
ALSA: | OK(?) | |
Max kHz: | 48 | |
ESS 688 | ||
OSS: | OK | |
ALSA: | OK(?) | |
Max kHz: | 48 | |
C-Media声卡(那种?) | ||
OSS: | 不是很好(有嘶嘶声) (?) | |
ALSA: | OK(?) | |
Max kHz: | ? | |
Yamaha声卡(*ymf*) | ||
OSS: | 不是很好(?)(-ao sdl ) | |
ALSA: | 仅在使用ALSA 0.5的OSS仿真和-ao sdl (!)(?)时很好 | |
Max kHz: | ? | |
使用envy24芯片(Terratec EWS88MT之类)的声卡 | ||
OSS: | ? | |
OSS/Pro: | OK | |
ALSA: | ? | |
Max kHz: | ? | |
PC Speaker或者DAC | ||
OSS: | OK(使用SDL驱动:-ao sdl ) | |
ALSA: | 没有驱动 | |
Max kHz: | 驱动模拟44.1,也许更高。 | |
驱动: | ftp://ftp.infradead.org/pub/pcsp |
在Linux上,高度推荐2.4.x的内核。2.2的内核没有经过测试。
+ +如果从CD-ROM播放时声音跳跃,开启IRQ unmasking,例如。hdparm -u1 /dev/cdrom
(man hdparm
)。
+这在大多数情况下有好处,更详细的描述在CD-ROM部分。
与另一个像XMMS一样的程序共享你的声卡是强烈不推荐的!如果其它音频程序使用ESD,用-vo sdl:esd
选项
+启动MPlayer可以把两个音频流混合起来。事实上,选项-vo sdl:esd
甚至在单独播放Mplayer时也可以对ESD使用。
对这个文件的反馈是受欢迎的。请告诉我们你的声卡是如何与MPlayer共同工作的。
+ + +MPlayer支持音频插件。音频插件s用于在声音到达声卡之前改变音频数据的属性。他们用-aop
开关加上
+list=插件1,插件2,...
参数打开。必须有list
参数用来确定应该使用哪些插件,以及他们执行的顺序。例如:
mplayer media.avi -aop list=resample,format
将让声音先通过重新采样插件然后再经过格式化插件。
+ +插件也有改变他们行为的开关。这些开关在下面将详细地解释。如果开关被省略,插件将按照默认设置运行。 +这是一个关于如何组合使用指定参数的插件的例子:
+ + mplayer media.avi -aop
+ list=resample,format:fout=44100:format=0x8
这将会将重新采样插件的输出频率设为44100Hz格式化插件的输出格式设置为AFMT-U8。
+ +目前音频插件不能用于MEncoder。
+ + +MPlayer完全支持对声音升/降采样率。如果你使用固定采样率的声卡或者如果你被只兼容
+最大44.1kHz的老声卡郁闷时可以使用这个插件。你硬件的限制是不能自动检测的,因此你必须明确地规定采样频率。
+这个插件有一个参数:fout
用于设置期望的输出的采样率。默认是48kHz,单位是<Hz>。
用法:
+ mplayer media.avi -aop list=resample:fout=<required
+ frequency in Hz, like 44100>
注意输出频率不能从默认值升高。因为升高会导致音频和视频流播放缓慢而且音频也会扭曲。
+ + +MPlayer有一个能解码矩阵编码的环绕音效的音频插件。杜比环绕是矩阵编码格式的一个例子。 +大多数2通道音频的文件实际上包含了矩阵编码的环绕音效。为使用这个特性你需要至少支持4个声道的声卡。
+ +用法:
+ mplayer media.avi -aop list=surround
如果你的声卡驱动不支持带符号的16位int
数据类型,这个插件能被用来把它转换为一个你的
+声卡能理解的格式。它有一个参数,format
,可以设置为你在libao2/afmt.h
中找到的数字。
+这个插件几乎很少会用到而且是面向高级用户的。记住这个插件仅仅改变采样格式而不改变采样频率或者声道数。
用法:
+ mplayer media.avi -aop
+ list=format:format=<required output format>
这个插件将声音延迟,被计划当做如何开发新的插件的例子。它不能用于任何以用户观点来说有用的东西, +在这里被提到只是为了完整的缘故。不要使用这个插件除非你是开发者。
+ + +这个插件是音量控制功能的软件替代,用于哪些使用蹩脚的混音设备的机器。如果你想要改变MPlayer
+的输出音量而不改变混音器中PCM音量的设置也可以使用这个插件。它有一个volume
参数初始的音量水平。
+初始音量水平能取0到255之间的值,默认值是101相当于放大0分贝。谨慎使用这个插件因为它会降低声音的信噪比。
+在大多数情况下最好是把PCM音量设为最大是,放弃这个插件并且通过混音器的主音量控制来控制你的扬声器输出水平。
+如果有连接到计算机的外部功放(这几乎是普遍情况),噪音水平能通过调整在主音量级别和功放上的旋钮而最大限度的减少,
+直到去除嘶嘶的背景噪音。
Usage:
+ mplayer media.avi -aop
+ list=volume:volume=<0-255>
这插件也有压缩器或称为“软控制”的功能。 + 压缩用于声音的动态范围十分高或者如果扬声器的动态范围十分低的的情况。注意这个特性将造成扭曲并且应该 +是最后一种被考虑的手段。
+ +Usage:
+ mplayer media.avi -aop
+ list=volume:softclip
这个插件(线性地)增加左右声道的差别(像XMMS的extrastereo插件一样)使回放产生某种“现场”效果。
+ +Usage:
+ mplayer media.avi -aop list=extrastereo
+ mplayer media.avi -aop list=extrastereo:mul=3.45
默认参数(mul
)是默认值为2.5的浮点数。如果你把它设置到0.0,你将获得单声道(两个声道的平均值)。
+如果你把它设置到1.0,声音不变,如果你把它设置为-1.0,左右声道将被交换。
这个插件能没有变形的最大化音量。
+ +用法:
+ mplayer media.avi -aop list=volnorm
+
+
+
谁应该在什么时候写点什么。
+ + + diff --git a/DOCS/Chinese/users_against_developers.html b/DOCS/Chinese/users_against_developers.html new file mode 100644 index 0000000000..a71ba73256 --- /dev/null +++ b/DOCS/Chinese/users_against_developers.html @@ -0,0 +1,117 @@ + + + + +总在mplayer-users邮件列表上引起巨大争吵和怒火的主题主要有两个。第一个主题是关于
+ + +背景:GCC2.95系列是GNU官方发行版而GCC的2.95.3版本是这个系列中bug最少的。我们从来没有遇到过可以归罪于GCC 2.95.3的编译问题。 +从RedHat Linux 7.0开始,Red Hat在他们的发行版里包括了一个打满补丁的CVS版本的GCC,命名为2.96。Red Hat在他的发行版中包括这个版本是因为 +当时GCC 3.0还没有完成,而他们需要一个在所有他们支持的平台上,包括IA64和s390都正常工作的编译器。Linux发行版Mandrake也照着Red Hat的例子开始 +在他们的Linux-Mandrake 8.0系列中搭载GCC 2.96。
+ +声明:GCC小组否认于GCC 2.96有任何联系并对GCC 2.96发表了一份官方回应。世界各地的开发者 +开始遇到GCC 2.96的问题,并开始推荐其他的编译程序。 +Apache, +MySQL,avifile和 +Wine。 +其他你会感兴趣的链接有: +Real time Linux, +Linux kernel news flash about kernel 2.4.17和 +Voy Forum。 +MPlayer同样经受这些时有时无的只要换个不同版本的GCC就可以全部解决的问题。有些项目开始为一些2.96的问题实现绕过的方法,但是我们拒绝修正别人的bug, +尤其是其中一些绕过的方法意味着降低性能。
+ +你能在这个站点的读到故事的另一面。GCC 2.96不允许在汇编程序中出现|(管道)字符因为它同时支持 +Intel和AT&T的语法而|字符在Intel版本中是个符号。问题是它一声不吭的忽略了整个汇编程序块。这个问题现在应该被修正了,GCC会显示一个警告 +而不是直接跳过。
+ +现状:Red Hat说2.96-85以上的GCC都已经修正了。情况确实好了很多,但我们在我们的邮件列表里仍然遇到一些换了编译器之后就不存在了的问题。
+在任何情况下它都不再重要了。希望一个成熟的GCC 3.x将很好的解决这个问题。如果你想要用2.96编译的话在configure的时候加上--disable-gcc-checking
+标记。记住你要自己负责而且不要报告任何bug。如果你报告,你只会被我们的邮件列表封掉,因为对于GCC 2.96我们已经有够多的争吵了。请让它平息下来。
如果你的GCC 2.96有问题,你能从Red Hat的ftp服务器得到2.96-85的包,或者直接去找7.2或更高版本里面提供的 +3.0.4的包。你也能用gcc-3.1的包(非官方的,但是工作地不错)和你能把他们跟你已经有的2.96 +装在一起。MPlayer检测到它并且使用3.1取代2.96。如果你不想要或者无法使用二进制包,下面教你怎么从源代码编译GCC 3.1:
+ +gcc-core-3.1.tar.gz
。这包括了完整的C编译程序,
+对MPlayer是足够了。如果你也想要C++,Java或其它一些GCC的高级特性gcc-3.1.tar.gz
可能更适合你。tar -xvzf gcc-core-3.1.tar.gz
mkdir gcc-build
cd gcc-build
+ ../gcc-3.1/configure
做依靠自己力量
make install
这以前是第二大的问题从0.90-pre1之后已经解决。MPlayer以前包含来自OpenDivX工程的源代码,那是不能以二进制形式再分发的。这个代码已经被去掉, +现在如果你觉得合适的话欢迎你制作二进制的包。
+ +二进制分发的另一个阻碍是针对CPU结构的编译优化。 MPlayer运行时CPU检测(在编译时指定--enable-runtime-cpudetection
)。
+它默认是禁用的因为它意味着小小的速度牺牲,现在可以创建在能在Intel CPU家族的不同的成员上运行的二进制文件了。
我们讨厌nVidia仅仅提供二进制的驱动(用于XFree86)的作法,他们通常都很buggy。我们在 +mplayer-users上已有许多关于这些封闭源代码的驱动和他们的低质量,不稳定以及糟糕的用户和专家 +支持的报告。这里有一个来自 +nVidia的Linux论坛的例子。许多这样的问题与异常持续不断重复的出现。我们最近跟nVidia接触过,而他们说这些错误不存在,不稳定是由于质量不好的AGP芯片造成的 +,而他们没有收到驱动bug(例如紫色条纹)的报告。因此如果你的nVidia显卡有问题,建议你升级nVidia驱动和/或者购买新的主板或者要求nVidia提供开源的驱动。 +在任何情况下,如果你使用nVidia的二进制的驱动并遇到驱动相关的问题,请你明白你几乎不能从我们这里得到帮助,因为我们在这个问题上无能为力。
+ + +Joe Barr因为写了一篇一点都不讨人喜欢的MPlayer评论而变得 +声名狼籍。他发现MPlayer难以安装,但是然而他由不太喜欢阅读文档 +。他同样得出结论认为开发者是不友好的,文件是不完整和侮辱性的。你自己判断吧。他继续在他的 +2002年的Linux十大预言中否定mplayer,接下来在 +xine的评论中他继续扇风点火。富有讽刺意味的是在那篇文章结束时他引用的 +他与xine原作者的G黱ter Bartsch的争论,完美地总结整个情况:
+ ++ 然而,他也继续说他对我写的Mplayer的专题感到“惊讶”并觉得那是不公平的,他提醒我那是一个免费软件工程。“如果你不喜欢它,”Bartsch说,“你有不使用它的自由”。 ++ +
他不答复我们的邮件。他的编辑也不答复了我们的邮件。这里引用一些不同的人关于Joe Barr的评论,方便你形成你自己的观点:
+ +Marc Rassbach有些针对这个人的评论。
+ ++ 你们都记得在LinuxWorld 2000的时候他说Linus T说‘FreeBSD只是一小撮程序员’。Linus从没说过任何这类东西。当Joe因此被讯问时, +他的反应是说BSD的支持者是白痴和蠢才。 ++ +
一段来自mplayer-users邮件列表上的Robert Munro的 +引文:
+ +++ + + diff --git a/DOCS/Chinese/video.html b/DOCS/Chinese/video.html new file mode 100644 index 0000000000..1eb5c893a8 --- /dev/null +++ b/DOCS/Chinese/video.html @@ -0,0 +1,1016 @@ + + + + +他挺有意思,但不善于避免,um ...争论。 Joe Barr以前是Compuserve上的Will Zachmann上的Canopus论坛的常客。他那时是OS/2的拥护者(我也是OS/2迷)。
+ +他常常说话过头,骂人,我怀疑他有没有经历过什么困难。以他最近的专栏看来,他软化了些。 适当的阴险的幽默不是他早年的方式,完全不是。
+
强烈建议你检查你的MTRR注册是否正确的设定了,因为他们能极大的提高性能。
+ +运行'cat /proc/mtrr
':
+ --($:~)-- cat /proc/mtrr
+ reg00: base=0xe4000000 (3648MB), size= 16MB: write-combining, count=9
+ reg01: base=0xd8000000 (3456MB), size= 128MB: write-combining, count=1
这是正确的,显示我的Matrox G400有16MB显存存。我从XFree 4.x.x得到这个,它会自动地设定MTRR注册。
+ +如果没有什么自动工作,你将不得不手工做。首先,你必须找到基地址。你有3种方法找它:
+ +(--) SVGA: PCI: Matrox MGA G400 AGP rev 4, Memory @ 0xd8000000, 0xd4000000
+ (--) SVGA: Linear framebuffer at 0xD8000000
+ 01:00.0 VGA compatible controller: Matrox Graphics, Inc.: Unknown device 0525
+ Memory at d8000000 (32-bit, prefetchable)
+
mga_mem_base = d8000000
接着让我们来确定显存大小。这十分容易,只要把显存大小变为十六进制,或者使用这个表格:
+ +1 MB | 0x100000 | ||
2 MB | 0x200000 | ||
4 MB | 0x400000 | ||
8 MB | 0x800000 | ||
16 MB | 0x1000000 | ||
32 MB | 0x2000000 |
你知道了基地址和显存大小,下面让我们进行MTRR注册!例如,对于上述32MB显存( size=0x2000000 )的Matrox显卡(base=0xd8000000)就执行:
+ + + echo "base=0xd8000000 size=0x2000000 type=write-combining" >| /proc/mtrr
并非所有CPU都支持MTRR。比如较老的K6-2[266MHz左右,步进值0]不支持MTRR,但是步进值12的就支持(用'cat /proc/cpuinfo
'命令检查)。
在XFree86 4.0.2或者更新的版本下,你能使用XVideo扩展来使用你的显卡的硬件YUV例程。这是就是'-vo xv'所使用的。同时, +这是支持调节亮度/对比度/色相/等等的驱动(除非你使用旧的,缓慢的DirectShow DivX解码器,什么驱动它都支持),参见man page。
+ +为了使它工作,确信做如下检查:
+ + (II) Loading extension XVideo
显示在/var/log/XFree86.0.log中
+ +注意: 这只是加载XFree86的扩展。在正常的安装中,这是总被加载的,这并不意味着显卡的XVideo支持被加载了!
++ 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...) ++
它必须支持YUY2 packed和YV12 planar象素格式,MPlayer才能利用它。
+老的的3dfx驱动存在XVideo加速的问题,它不支持YUY2或者YV12,诸如此类。确定你的XFree86版本在4.2.0以上, +它在YV12和YUY2模式下工作很好。以前的版本,包括4.1.0,会在YV12下崩溃。如果你使用-vo xv时遇到奇怪的问题, +尝试使用SDL(它也有XVideo)看是否有帮助。细节请察看SDL部分。
+ +或者,试试新的-vo tdfxfb驱动! 参见tdfxfb部分。
+ + +S3 Savage3D应该能正常工作,不过对于Savage4,请使用XFree86 4.0.3或更新的版本(如果图象有问题,试试16bpp)。 +至于S3 Virge,虽然有xv支持,但是这种显卡实在太慢,因此你最好买了它。
+ +注意:Savage显卡能显示YV12图像但是速度很慢(它需要做YV12->YUY2转化,因为Savage的硬件不能显示YV12)。 +因此当这个文档在什么地方说“这个有YV12输出,用这个,它快”的时候,并不完全是这样。试试 +这个驱动, +它使用MMX2完成这个任务,比X自己的驱动快。
+ + +nVidia在Linux下不是很好的选择(nVidia认为,这并非真实情况).. +你将不得不使用二进制的非开源的nVidia驱动,nVidia的网站可以找到。标准XFree86驱动没有这些显卡的XVideo支持, +因为nVidia没有公开源码/规格。
+ +据我所知最新的XFree86驱动包含了GeForce2和3的XVideo支持。
+ +Riva128显卡即使用nVidia的驱动也没有XVideo支持:(向nVidia抱怨去吧。
+ + +这些显卡能在许多笔记本电脑里找到。不幸的是,X 4.2.0的驱动不能使用Xv,但是我们为你准备了一个经过修改,能够使用Xv的驱动。 +到这里下载。 +这个驱动是由Stefan Seyfried提供的。
+ +像这样修改你的XF86Config使之能进行DVD大小的内容的回放:
+ +Section "Device"
+ [...]
+ Driver "neomagic"
+ Option "OverlayMem" "829440"
+ [...]
+ EndSection
如果你想要在Trident显卡上使用xv,它在4.1.0下不工作,尝试XFree最新的CVS或者等候XFree 4.2.0。最新的CVS加入了Cyberblade XP显卡的全屏xv支持。
+ + +这篇文件试图花些篇幅来解释DGA大概是什么以及MPlayer的DGA视频输出驱动能做什么(以及不能做什么)。
+ + +DGA是Direct Graphics Access的简称,是一种使程序绕过X-服务器直接修改帧缓冲显存的方法。从技术角度说这是通过把帧缓冲显存映射到你的处理器的内存范围之内。 +只有你有超级用户权限的时候内核才允许这种操作。用root登录或者给MPlayer的执行文件设置SUID位(推荐使用!)可以做到这一点。
+ +DGA有两种版本: DGA1用于XFree 3.x.x和DGA2从XFree 4.0.1开始引入。
+ +DGA1只提供了前述的帧缓冲直接操作功能。你不得不使用XVidMode扩展来切换视频信号的分辨率。
+ +DGA2结合了XVidMode扩展的特性而且也允许切换显示的色彩深度。因此,虽然一般使用32位色X服务器,你也能切换到15位色深,反之亦然。
+ +然而DGA也有一些弊端。它似乎有些依赖于你使用的图形芯片和X服务器中控制该芯片的视频驱动。因此,它并不是对所有的系统都起作用...
+ + +首先确保X装载了DGA扩展,察看/var/log/XFree86.0.log:
+ + (II) Loading extension XFree86-DGA
可见,强烈推荐XFree86 4.0.x或更高版本,MPlayer的DGA驱动在./configure时会自动检测到,否则你可以用--enable-dga强行编译它。
+ +如果你的驱动不能切换到一个较小的分辨率,尝试使用选项-vm(只用于X 3.3.x),-fs,-bpp,-zoom找一个你的电影适合的视频模式。目前没有转换功能:(
+ +成为root。DGA需要root权限来直接写显存。如果你想用普通用户运行它,给MPlayer设置SUID root权限:
+ +
+ chown root /usr/local/bin/mplayer
+ chmod 750 /usr/local/bin/mplayer
+ chmod +s /usr/local/bin/mplayer
它现在也能被普通用户使用了。
+ ++ 警告:安全风险+ +
+ 这是一个很大的安全风险!永远不要在除了你之外还有人可以使用的服务器上这样做,因为他们能通过SUID root的MPlayer获得root权限。 +
现在使用-vo dga
选项,开始使用(如此希望:))!
+ 你也应该尝试看看-vo sdl:dga
选项能否正常工作。它快得多。
DGA驱动允许切换输出信号的分辨率。这样能避免使用(缓慢的)软件缩放同时又提供全屏图象。理想情况下,它将精确切换成视频数据的分辨率(除了为了保持长宽比),
+但是X服务器仅允许切换到/etc/X11/XF86Config
(XFree 4.0.X使用/etc/X11/XF86Config-4
用于区别)中预定义的分辨率。
+它们被所谓的modelines定义并且依赖于你的视频硬件的能力。X服务器启动时扫描这个配制文件并且禁用那些不适用于你的硬件的modelines。你能通过X11的log文件找出
+哪些方式可用。它能在这里找到:
+/var/log/XFree86.0.log
。
modeline定义分辨率的一些例子参见附录A。
+ + +MPlayer在两个地方使用DGA:SDL驱动能使用它(-vo sdl:dga)以及在DGA驱动(-vo dga)中使用。上面说的内容对两者都有效; +在下列的几段中我将解释MPlayer中DGA驱动是如何工作的。
+ + +DGA驱动通过命令行中的-vo dga选项调用。默认操作是转换成与原来的视频尽可能接近的分辨率。它将忽略-vm和-fs选项(开启视频模式切换和全屏方式) +-- 它总试图通过切换显示模式尽可能多的覆盖你的屏幕,这样阻碍你的CPU使用一个单一的附加的周期来放大图像。 +如果你不喜欢它选择的模式你能强迫它选择最接近于你通过-x和-y选项规定的分辨率的模式。使用-v选项,DGA驱动将在一大堆别的东西中打印出你 +当前XF86-Config文件支持的所有分辨率的列表。 +如果是DGA2你也能通过使用-bpp选项强迫它使用一定的色彩深度。有效的色深是15,16,24和32。这取决于你的硬件对这些色深是否本地支持, +还是通过某种(有可能很慢)的转化来完成的。
+ +如果你非常幸运,有足够显存的屏外缓冲区来存放整个图象,DGA驱动将使用双重缓冲,这能使电影播放更加平滑。它会告诉你双重缓冲是否被打开。
+ +双重缓冲的意思是在你的视频的当前帧被显示时,下一帧在屏外缓冲区中被绘制。当下一帧准备完毕时, +图形芯片被告知下一帧在显存中的位置并且直接从那里将要显示的数据读出来。在此期间其它在记忆中的缓冲器将再一次被装满新的视频数据。
+ +双重缓冲可以用-double选项开启也可以用-nodouble选项禁止。目前缺省选项是禁用双重缓冲。屏幕显示功能(OSD)在使用DGA驱动模式时必须打开双重缓冲功能。 +然而,使用双重缓冲可能导致较大的速度下降(在我的K6-II+ 525上它多占用20%的CPU时间!),下降程度取决于DGA操作你的硬件的方法。
+ + +一般来说,DGA帧缓冲至少应该跟X11驱动一样快同时还有全屏图象的附加好处。对MPlayer打印出的百分比速度的评价应该小心, +比如X11驱动它们并不包括X-服务器真正绘制所用的时间。开一个终端连到你的机器的串口上运行top命令看看你的机器真正在干什么...
+ +一般来说,使用DGA相对“普通的”使用X11所产生的速度提高高度依赖于你的显卡,以及X-服务器中它的模块做了多少优化。
+ +如果你的系统较慢,最好使用15或者16bit色深,因为他们仅仅要求32bit显示的显存带宽的一半。
+ +即使你的显卡自身就支持32bit色深,使用24bit的色深也是个好主意,因为它被32/32方式少传输25%的数据。
+ +我曾见过一些AVI文件能在Pentium MMX 266上播放。AMD K6-2 CPU在400 MHZ以上的应该可以工作。
+ + +嗯,据一些XFree的开发者说,DGA像头野兽。他们告诉你不要使用它。并非对任何芯片的驱动它的操作都是没有瑕疵的。
+ ++ 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 ++ +
这些条目在我的Riva128芯片上工作的很好,使用nv.o的X服务器驱动模块。
+ + +如果你在使用DGA驱动时遇到麻烦请别介意,发一个bug报告给我(e-mail地址在下面)。请用-v选项启动MPlayer并且在bug报告中包括所有以vo-dga开始的输出行:
+ +请一并附带你使用的X11的版本,显卡和你的CPU类型。X11驱动模块(在XF86-Config中定义)也可能有帮助。谢谢!
+ +Acki (acki@acki-netz.de,www.acki-netz.de)
+ + +SDL(Simple Directmedia Layer)基本上是一种统一的视频/音频接口。使用它的程序只要知道SDL,而不需要了解SDL实际上使用的视频或音频驱动。 +例如使用SDL的Doom移植能在svgalib,aalib,X,fbdev,和其他东西上使用,你仅需要用环境变量SDL_VIDEODRIVER规定(例如)使用的视频驱动。嗯,至少在理论上。
+ +在MPlayer中,我们使用它的X11驱动的软件缩放功能,用于不支持XVideo的芯片/显卡,直到我们做出我们自己的(更快,更好)的软件缩放代码。 +同时我们使用它的aalib输出,但是现在我们自己的更合适的了。它的DGA模式比我们的好,直到最近。现在明白了? :)
+ +它对一些buggy的驱动/显卡也有帮助,例如视频跳跃(不是系统缓慢的问题),或者音频延迟。
+ +SDL视频输出支持在电影下面,(如果出现)的黑条上显示字幕。
+ +这里是一些关于SDL输出的控制选项:
+ +-vo sdl:name
-ao sdl:name
-noxv
-forcexv
SDL控制键: | |||
F | 切换全屏/窗口方式 | ||
C | 循环切换可用的全屏方式 | ||
W与S | *和/的映射(音量控制) |
你必须安装svgalib和它的开发包来使MPlayer编译它的SVGAlib驱动(自动检测,但是也能强制使用), +别忘了编辑/etc/vga/libvga.config来配合你的显卡&监视器。
+ +一定不要用-fs选项,因为它将导致使用软件缩放,速度会很慢,如果你确实需要,使用-sws 4
选项,
+质量会有点差,但是无论如何它更快。
SVGAlib结合了EGAlib,使得MPlayer有可能用16种颜色播放任何电影,下列的配制中可以使用:
+ +bpp(每象素比特数)的值必须手工设为4:
+ -bpp 4
+ 电影可能必须被按比例缩小到EGA适合的模式:
+ -vop scale=640:350
或者
+ -vop scale=320:200
+ 为做到这一点我们需要使用快速但低质量的例程:
+ -sws 4
+ 也许自动纠正长宽比的功能需要关闭:
+ -noaspect
是否编译FBdev目标是在./configure期间自动检测的。阅读内核源码中的帧缓冲的文档(Documentation/fb/*)来了解更多信息。
+ +如果你的显卡不支持VBE 2.0标准(较旧的ISA与PCI显卡,诸如S3 Trio64),仅支持VBE 1.2(或者更老的?): +嗯,VESAfb仍然是可用的,但是你将必须在启动Linux之前装载SciTech Display Doctor(从前叫UniVBE )。 +用DOS启动盘或随便什么。同时,别忘了注册你的UniVBE ;))
+ +FBdev输出有些除了以前说过的参数外的附加参数:
+ +-fb
-fbmode
-fbmodeconfig
-monitor_hfreq
-monitor_vfreq
-monitor_dotclock
example.conf
如果你想要切换到某个具体模式,那么使用
+ + mplayer -vm -fbmode (NameOfMode) filename
echo -e '\033[?25l'
或setterm -cursor off
setterm -blank 0
echo -e '\033[?25h'
或setterm -cursor on
注意:使用VESA 帧缓冲时FBdev视频方式不能改变,也不要要求这个功能,因为它不是由于MPlayer自身的限制。
+ + + + +这一段是关于Matrox G200/G400/G450/G550 BES (Back-End Scaler)的支持,mga_vid内核驱动。它现在是由我(A'rpi)开发的, +它有三重缓冲的硬件VSYNC支持。它在帧缓冲控制台下和X下都可以工作。
+ +警告:在非Linux系统上,使用VIDIX 实现mga_vid!
+ + +安装:
+cd drivers
+ make
mknod /dev/mga_vid c 178 0
然后这样加载驱动
+insmod mga_vid.o
insmod mga_vid.o mga_ram_size=16
/etc/modules.conf
的末尾加上下面这一行:
+ alias char-major-178 mga_vid
然后把mga_vid.o
模块复制到/lib/modules/<kernel version>/somewhere
下的适当位置。
然后运行
+depmod -a
mga_vid驱动能与Xv协同工作。
+ +可以阅读/dev/mga_vid
设备文件(例如cat /dev/mga_vid
)来查找一些信息,
+也可以通过写它来调整亮度:echo "brightness=120" > /dev/mga_vid
这个驱动使用内核的tdfx帧缓冲驱动来利用YUV加速播放电影。你需要一个支持tdfxfb的内核,
+然后用./configure --enable-tdfxfb
重新编译
MPlayer支持使用OpenGL显示电影,但是如果你的平台/驱动支持xv,就象使用linux的PC机那样,就使用xv,OpenGL的效果与它相比相当坏。 +如果你只有没有xv支持的X11程序,OpenGL是可用的选择。
+ +不幸的是并非所有驱动都支持这个特性。Utah-GLX驱动(针对XFree86 3.3.6)对所有显卡都支持它。访问 +http://utah-glx.sourceforge.net了解安装它的细节问题。
+ +XFree86(DRI)>= 4.0.3支持Matrox和Radeon显卡的OpenGL,4.2.0或更新版本支持Rage128。 +访问http://dri.sourceforge.net以寻找下载和安装指导。
+ + +AAlib 是一个用于在文本模式下显示图形的库,它使用强大的ASCII渲染器。有许多程序提供对它的支持,像Doom,Quake等等。 +MPlayer包含一个针对它的实用的驱动。如果./configure发现安装了aalib,aalib的libvo驱动将被编译。
+ +你能在AA窗口中使用一些控制键来改变渲染参数: | |||
1 | 减少对比度 | ||
2 | 增加对比度 | ||
3 | 减少亮度 | ||
4 | 增加亮度 | ||
5 | 打开/关闭快速渲染 | ||
6 | 设置抖动方式(不抖动, 误差分布算法, Floyd Steinberg算法) | ||
7 | 反转图象 | ||
a | 转换aa和MPlayer的控制键 |
下列的命令行选项能够使用:
+-aaosdcolor=V
-aasubcolor=V
V的值可以是:(0/正常,1/暗色,2/粗体,3/粗体字体,4/反转,5/特殊)
AAlib自身也提供了大量的选项。这里是一些重要的:
+-aadriver
-aaextended
-aaeight
-aahelp
注意:渲染效果是十分消耗CPU的,特别是使用AA-on-X(在X上使用aalib),在标准的非帧缓冲控制台上的CPU消耗是最小的, +用SVGATextMode设置一个大的文本模式,然后再欣赏电影!(大力神显卡的第二个接口就不错:))(任何人能加强fbdev做hgafb? +的转化与抖动的效率将是不错的:)
+ +如果你的计算机速度不足以渲染所有帧就使用-framedrop
选项
在终端中播放电影时使用Linux驱动你将会得到更好的速度和画面质量,不要用curses(-aadriver Linux
)。
+但是为此你需要/dev/vcsa<terminal>
的写权限。那是aalib不能自动检测的,但vo_aa会尝试搜索最佳模式,
+进一步的调节问题参见http://aa-project.sourceforge.net/tune/。
这个驱动被设计并引入作为一个通用的驱动用于任何有VESA VBE 2.0兼容的BIOS的显卡。这驱动的另一个优点是能试图迫使在其上进行电视输出。
+ VESA BIOS EXTENSION(VBE)3.0版 日期:1998年九月16日(第70页)说:
+ 双重控制器设计+ +
+ VBE 3.0支持双重控制器设计基于如下假设,由于两个控制器一般是同样的OEM提供的,被同一块显卡上的一个的BIOS ROM,所以可以对程序隐藏有两个 +控制器在作用的事实。这限制了同时的使用独立的控制器的功能,但是允许VBE 3.0发布前的程序能正常工作。VBE函数00h(返回控制器信息)返回经过合并的 +两个控制器的信息,包括经过合并的可供使用的方式的列表。当程序选择一个方式时,相应的控制器被激活。然后剩下的VBE函数都作用在激活的控制器上。 +
因此,你有可能通过这个驱动得到电视输出。
+ (我猜想电视至少经常地是使用独立的头或者独立的输出)。
使用GCC 2.96就不要使用这个驱动!它将不能工作!
+ +这些命令行的选项目前可用于VESA:
+-vo vesa:opts
-screenw, -screenh, -bpp
-x, -y
-zoom
-fs
-fs -zoom
-double
尽量避免使用它。输出到X11(使用共享内存扩展),完全没有硬件加速。支持(MMX/3DNow与SSE加速,但是仍然缓慢的)软件缩放,
+使用选项-fs -zoom
。大多数显卡有硬件缩放支持,使用-vo xv
对他们输出,或者对于Matroxes使用-vo xmga
。
问题在于大多数显卡的驱动在第二个接口/电视接口上不支持硬件加速。在那些情况下,你将看到绿色和蓝色的彩色窗口而不是电影。 +这是这个驱动方便利用的地方,但是你需要强大的CPU来使用软件缩放。不要使用SDL驱动的软件输出+缩放,它的图象质量太差!
+ +软件缩放是十分缓慢的,你最好尝试用改变视频模式的方法代替它。它十分简单。参见DGA一节的modelines, +并且将他们插入到你的XF86Config。
+ +-vm
选择。它将切换到适合你的电影的分辨率。如果你的XFree86不是:如果你调整不到你设定的模式,检查XFree86的输出。有些驱动不能使用低分辨率视频方式所需要的低的像素频率。
+ + + + +VIDIX是VIDeo Interface for *niX的缩写。
+ VIDIX被设计和引入作为快速的用户空间驱动的接口提供类似mga_vid为了Matrox显卡提供的这样视频性能的。它也十分易于移植。
这个接口被设计来作为一个将存在的视频加速接口(就是mga_vid,rage128_vid,radeon_vid,pm3_vid )统一到一个固定的系统的尝试。 +它给芯片提供BES(BackEnd scalers)或OV(Video Overlays)之类的高层接口。它不为那些图像服务器该做的事情提供底层接口。 +(我不想跟X11开发组在切换图像模式上竞争)。即这接口的主要目的是充分提高视频回放的速度。
+ +-vo xvidix
-vo vesa:vidix
(只用于Linux)和-vo fbdev:vidix
:vidix
副驱动。
+
+当VIDIX被用作副驱动时(-vo vesa:vidix
)视频方式的配置由视频输出设备执行(简单来说就是vo_server)。
+因此,你能对MPlayer使用与vo_server同样的命令行指令。此外,它能使用-double
作为全局的参数。
+(我建议至少在使用ATI显卡时对VIDIX使用这个参数)。
+ 至于-vo xvidix
:目前它能识别下列的选项: -fs -zoom -x -y -double
。
你还能在命令行中使用第三个副参数直接制定VIDIX的驱动:
+
+ mplayer -vo xvidix:mga_vid.so -fs -zoom -double
+ file.avi
+ or
+ mplayer -vo vesa:vidix:radeon_vid.so -fs -zoom -double -bpp
+ 32 file.avi
+
+ 但这有点危险,所以你不应该这么做。在这种情况下,被指定的驱动会被强制使用而其结果是无法预计的(它可以把你的计算机锁死)。
+只有在你绝对确信它能工作,而MPlayer没有自动选择它时,你才能这么做。请把情况报告给开发者。
+正确的使用方法是使用没有参数的VIDIX来使用驱动的自动检测。
VIDIX是十分新的技术所以在你的系统(OS=abc CPU=xyz)上它极有可能不能正常工作。在这种情况下,你唯一的解决办法是移植它(主要libdha)。 +但它在X11能正常工作的那些系统的上有正常工作的希望。
+ ++ 警告:安全风险+ +
+ 不幸的是你必须有ROOT权限才能使用VIDIX因为需要直接硬件写入。至少给MPlayer的可执行文件设置SUID位。 +
这是特别为了VIDIX植入的视频均衡器。你能通过man page里描述的1-8数字键或者命令行参数来使用它。MPlayer能识别下列的选项:
+ +-brightness
-contrast
-saturation
-hue
-red_intensity
-green_intensity
-blue_intensity
每一参数的取值可以从-1000到+1000。
+ 每一参数的默认值0。
注意:并非所有驱动都支持所有这些参数。目前只有radeon_vid.so完全支持视频均衡器。 + 其它驱动部分地仅仅部分地支持这些选择。
+ +例子:
+ mplayer -vo vesa:vidix -brightness -300 -contrast 200
+ filename.avi
+ or
+ mplayer -vo xvidix -red_intensity -50 -saturation 400 -hue 300
+ filename.vob
这是用于那些MJPEG视频捕捉/回放显卡(经过DC10+和Buz的测试,对LML33,DC10应该也能工作)的显示驱动(-vo zr
)。
+驱动通过把每帧图像编码成为jpeg格式和然后把它发送到显卡来工作。在jpeg编码时要使用libavcodec,而且必须使用。
-framedrop
,注意:我的AMD K6-2 350MHz(加上
+-framedrop
选项)足够看VCD尺寸的东西和经过缩小的电影
+
+这个驱动需要一个内核驱动,可以在http://mjpeg.sourceforge.net找到, +你必须先让它工作。MJPEG卡的存在能被configure脚本自动检测到,如果自动检测失败,用这个命令强制检测 + +
+ ./configure --enable-zr ++ +
驱动的输出可以用一些选项设置,在man page里面可以找到一份长长的可用选项的描述,一个比较短的选项列表可以运行这个命令获得 + +
+ mplayer -zrhelp ++ + +
缩放和OSD (on screen display)这类功能这个驱动不能处理,但可以用视频滤镜来完成,例如你有一个分辨率是512x272
+的电影,而你希望用你的DC10+用全屏幕观看,主要有三种可能的方法,你可以把电影宽度缩放到768
,384
,
+或者192
。考虑到运行速度和质量的原因,我会选择使用快速二次线型软件缩放滤镜把电影缩放到384x204
。
+命令行是这样的
+
+
+ mplayer -vo zr -sws 0 -vop scale=384:204 movie.avi ++ +
画面的切割可以用crop
滤镜也可以用驱动自己完成。假设电影太宽了,在你的机器上显示不了,那么你会想要用
+-zrcrop
来切割电影的宽度,那么你应该输入下面的命令
+
+
+ mplayer -vo zr -zrcrop 720x320+80+0 benhur.avi ++ + 如果你想要使用
crop
滤镜,你可以运行
+
++ mplayer -vo zr -vop crop=720:320:80:0 benhur.avi ++ +
多个-zrcrop
就会调用cinerama模式,你可以把电影投射到几个电视或者投影仪上来制造一个大银幕,设想你有
+两个投影仪,左边那个连到你的机器的/dev/video1
而右边那个连到你的机器的/dev/video0
上的DC10+上,
+电影的分辨率是704x288
,同时假设你希望右边的投影仪显示黑白效果而右边的投影仪显示的用质量10
来显示jpeg帧
+那么你需要使用下列命令:
+
+
+ mplayer -vo zr -zrdev /dev/video0 -zrcrop 352x288+352+0 -zrxdoff 0 -zrbw \ + -zrcrop 352x288+0+0 -zrdev /dev/video1 -zrquality 10 movie.avi ++ +
你发现在第二个-zrcrop
之前出现的选项只作用于DC10+,而第二个-zrcrop
之后的选项作用于你的机器。
+在cinerama中能使用的MJPEG卡最多为4块,所以你可以制作一片2x2
的视频墙
最后还有一个重要的注意事项:不要在回放期间在回放设备上启动或停止XawTV,它将导致你的计算机崩溃。然而,首先启动XawTV, +然后启动MPlayer,等MPlayer播放结束,然后停止XawTV是没有问题的。
+ + +MPlayer支持Siemens,Technotrend,Galaxis或Hauppauge提供的使用Siemens DVB芯片的显卡。 +最新的DVB驱动在Linux TV site。如果你想要软件解码你需要一个至少1GHz的CPU。
+ +Configure应该能检测到你的DVB显卡。如果它没有,使用下列命令强制使用 + +
+ ./configure --enable-dvb ++ +
如果你在非标准的路径下有ost头文件,使用下列命令设置路径
+ ++ ./configure --with-extraincdir=<DVB source directory>/ost/include ++ +
然后就可以按正常程序编译安装。
+ +硬件解码(播放标准的MPEG1/2文件)使用下列命令:
+ ++ mplayer -ao mpegpes -vo mpegpes file.mpg|vob ++ +
MPEG1的软件解码或转化为其他格式使用下列命令:
+ ++ mplayer -ao mpegpes -vo mpegpes -vop lavc yourfile.ext + mplayer -ao mpegpes -vo mpegpes -vop fame,expand yourfile.ext ++ +
注意到,DVB显卡只支持高度为288或576的PAL格式或者240或480的NTSC格式。你必须对其它的高度进行重新缩放,
+通过在-vop
选项中使用scale=width:height
指定你想要宽度和高度。DVB显卡可以接受多种宽度,
+像720,704,640,512,480,352等等,而且在水平方向上可以硬件缩放,所以大多数情况下你不需要作水平缩放。
+例如对于512x384(宽高比4:3)的DivX使用下列命令:
+ mplayer -ao mpegpes -vo mpegpes -vop lavc,scale=512:576 ++ +
如果你使用宽银幕电影而你把它放大到整个屏幕的高度,你可以使用expand=w:h
插件来增加黑带。
+为了看640x384分辨率的DivX,使用下列命令:
+ mplayer -ao mpegpes -vo mpegpes -vop lavc,expand=640:576 file.avi ++ +
如果你的CPU对于播放720x576的DivX太慢,尝试横向缩放:
+ ++ mplayer -ao mpegpes -vo mpegpes -vop lavc,scale=352:576 file.avi ++ +
如果速度没有提高,尝试竖直缩放:
+ ++ mplayer -ao mpegpes -vo mpegpes -vop lavc,scale=352:288 file.avi ++ +
因为OSD和字幕使用OSD插件的扩展特性。因此,不要使用expand=w:h
或者expand=w:h:x:y
,
+使用expand=w:h:x:y:1
(第5个参数:1
将开启OSD渲染)。你也许想要把图象向上移动一点来给
+字幕更大的黑色区域。如果你也想要移动字幕,因为他们可能在你电视屏幕的外面,使用-subpos <0-100>
来
+调整它(-subpos 80
是个不错的选择)。
为了在PAL电视上播放非25fps的电影或者因为CPU太慢,加上-framedrop
选项。
为了保持DivX文件的宽高比并获得最理想的缩放参数(硬件水平缩放和软件垂直缩放并且保持正确宽高比),使用最新的dvbscale插件:
+ ++for 3:4 TV: -vop lavc,expand=-1:576:-1:-1:1,scale=-1:0,dvbscale +for 16:9 TV: -vop lavc,expand=-1:576:-1:-1:1,scale=-1:0,dvbscale=1024 ++ +
如果你有使用问题或想要了解特性通告或者参加这个问题的讨论,加入我们的MPlayer-DVB的邮件列表。 +请记住列表的语言是英语。
+ +在未来你可以期待使用DVB显卡的自带OSD特性显示OSD和字幕,还有更流畅的非25fps电影回放和实时的MPEG2和MPEG4转换(部分的解压)。
+ + +MPlayer支持Creative DXR3和Sigma Designs Hollywood Plus卡的硬件加速回放。这些卡都使用SigmaDesigns的 +em8300 MPEG解码芯片
+ +首先,你将需要正确地安装DXR3/H+的驱动,版本至少0.12.0或者更新的。你能在 +DXR3 & Hollywood Plus for Linux的站点找到驱动和安装指导。Configure应该自动检测到你的显卡,编译应该没有任何问题。
+ +-vo dxr3:noprebuf:<device>
noprebuf
设定关闭预缓冲。预缓冲是em8300的一个特性,是它可以同时处理一帧以上的视频。这表示当你开启
+预缓冲(默认的)运行时,MPlayer将试图保持视频缓冲区里面总是填满数据的。如果你是用的一台比较慢的机器MPlayer
+大概会占用接近100%的CPU。这在你播放纯MPEG流(例如DVD,SVCD之类)的时候尤其明显,因为MPlayer不需要把它重新编码成
+MPEG所以他会以很高的速度填充缓冲区。noprebuf
+当不用预缓冲运行时em8300对CPU的占用率十分敏感,所以建议你打开MPlayer的-framedrop
选项来防止进一步
+的不同步<device>
= 使用的设备号如果你有超过一块em8300显卡。
+ dxr3:fame
能正常工作,dxr3:1
能正常工作,
+但是dxr3:1:avcodec
将无法工作。-ao oss:/dev/em8300_ma-X
X
是设备号(为0如果只有一块显卡)。-aop list=resample:fout=xxxxx
-ac hwac3
)。
+
+ -vop lace/fame
-vop lavc/fame
的进一步的信息可以
+参考man page。
+
+ -ac hwac3
为了使用overlay请在启动MPlayer之前先运行em8300包中的dxr3view。当鼠标光标在窗口上时你能通过按T
键来设置
+dxr3view中的各种选项。
MPEG1/2格式应该能被MPlayer自动发现而且它将使用DXR3的硬件加速来播放它。否则没有,你可以使用-vc mpegpes
强制硬件加速。
+同时,如果你计划使用任何后处理你必须使用滤镜-vc mpeg12
。
在一些情况下,使用硬件解码(-vc mpegpes
)时字幕可能与A/V流不同步。这是个已知的bug。em8300也不适于处理比较大的字幕,
+可能会有1到2秒的停顿,在这种情况下,唯一的处理方法是使用-vc mpeg12
来播放带有字幕的DVD。当用-vc mpeg12
+选项运行时MPlayer会把视频重新编码成MPEG(即使它已经是MPEGE了)。这表示它需要更多的CPU,同时你可能会损失一些画面质量。
在Linux下你有2种方法使G400的电视输出工作:
+ +注意:对于Matrox G450/G550的电视输出方法看下一节! + +
-vo x11 -fs -zoom
选项,但这将十分缓慢,而且会开启Macrovision版权保护
+(你能使用这个perl脚本绕过Macrovision。TVout/matroxset
然后运行make
。把matroxset
安装到你的PATH中的某个地方。fbset
,进入TVout/fbset
然后运行make
。把fbset
安装到你的PATH中的某个地方。TVout/
子目录,以root执行./modules
。
+你的文本模式的控制台将进入到帧缓冲模式(没有方法改回来!)。./matroxtv
脚本。这将给你提供一个十分简单的菜单。按2和ENTER。现在你的显示器和电视上应该有一样的图像。
+如果电视(默认PAL)图画有些奇怪的条纹,脚本不能够正确地设置分辨率(使用缺省的640x512)。试试菜单里的其他分辨率或者/和试试fbset。Yoh。接着的任务是使tty1上的光标(或者别的什么)消失,和关闭屏幕抑制显示。执行下列的命令:
+ +echo -e '\033[?25l'
或者setterm -cursor off
setterm -blank 0
你可能想把上述内容脚本,同时也清屏.. 让光标出现的命令是:echo -e '\033[?25h'
或者setterm -cursor on
Yeah kewl。用mplayer -vo mga -fs -screenw 640 -screenh 512 <filename>
来播放电影
+ (如果你正在使用X,用CTRL-ALT-F1之类的快捷键换成matroxfb!)
+ 分辨率换成640x512如果你用的不是这个分辨率。
+ 享受超快超多特性的Matrox电视输出(比Xv还要好)!
这些显卡的电视输出支持最近刚被引入,而且还没有进入内核的主流。据我所知目前不能使用mga_vid +因为G450/G550的驱动只能工作在一种配置下面:第一个CRTC芯片(有更多特性)接第一个display(显示器),第二个 +CRTC(没有BES -- BES的解释看上面G400的部分)接电视上,所以你目前只能使用MPlayer的 +fbdev的输出设备。
+ +目前第一个CRTC不能传送到第二个头。内核的matroxfb驱动的作者 -- Petr Vandrovec -- 可能正在努力支持 +它,使用把第一个CRTC的输出同时显示在两个头上的方法,像目前G400推荐的一样,看上面的部分。
+ +需要的内核补丁和howto的细节可以从 +http://www3.sympatico.ca/dan.eriksen/matrox_tvout下载。
+ +ATI目前不想对他的任何一种电视输出芯片提供Linux下的支持,主要是由于他们的授权的Macrovision技术。
+ +在其它显卡上,只能使用VESA驱动,没有VIDIX可用。需要强大的CPU。
+ +你唯一需要做的事情 -- 在启动你的电脑之前插上电视连接器的插头因为视频BIOS只在自举期间初始化一次。
+ + +查阅这个网址。
+ + +