强烈你检查你的MTRR注册是否正确的设定了Q因Z们能极大的提高性能?/p>
q行'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
q是正确的,昄我的Matrox G400?6MB昑֭存。我从XFree 4.x.x得到q个Q它会自动地讑֮MTRR注册?/p>
如果没有什么自动工作,你将不得不手工做。首先,你必L到基地址。你?U方法找它:
(--) 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
接着让我们来定昑֭大小。这十分ҎQ只要把昑֭大小变ؓ十六q制Q或者用这个表|
1 MB | 0x100000 | ||
2 MB | 0x200000 | ||
4 MB | 0x400000 | ||
8 MB | 0x800000 | ||
16 MB | 0x1000000 | ||
32 MB | 0x2000000 |
你知道了基地址和显存大,下面让我们进行MTRR注册Q例如,对于上述32MB昑֭( size=0x2000000 )的Matrox昑֍(base=0xd8000000)p行:
echo "base=0xd8000000 size=0x2000000 type=write-combining" >| /proc/mtrr
q所有CPU都支持MTRR。比如较老的K6-2[266MHz左右Q步q?]不支持MTRRQ但是步q?2的就支持(?cat /proc/cpuinfo
'命o??/p>
在XFree86 4.0.2或者更新的版本下,你能使用XVideo扩展来用你的显卡的gYUV例程。这是就?-vo xv'所使用的。同Ӟq是支持调节亮度/Ҏ?色相/{等的驱?除非你用旧的,~慢的DirectShow DivX解码器,什么驱动它都支?Q参见man page?/p>
Z使它工作Q确信做如下查:
(II) Loading extension XVideo
昄?var/log/XFree86.0.log?/p>
注意Q?q只是加载XFree86的扩展。在正常的安装中Q这是总被加蝲的,qƈ不意味着昑֍?/strong>XVideo支持被加载了Q?/p>
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...)
它必L持YUY2 packed和YV12 planar象素格式QMPlayer才能使用它?/p>
老的?dfx驱动存在XVideo加速的问题Q它不支持YUY2或者YV12之类的格式。确定你的XFree86版本?.2.0以上Q它在YV12和YUY2模式下工作很好。以前的版本Q包?.1.0Q?strong>会在YV12下崩?/strong>。如果你使用-vo xv旉到奇怪的问题Q尝试用SDL(它也有XVideo)看是否有帮助。细节请察看SDL部分?/p>
或?/strong>Q试试新?vo tdfxfb驱动Q?参见tdfxfb部分?/p>
S3 Savage3D应该能正常工作,不过对于Savage4Q请使用XFree86 4.0.3或更新的版本(如果图象有问题,试试16bpp)。至于S3 VirgeQ虽然有xv支持Q但是这U显卡实在太慢,因此你最好卖了它?/p>
注意Q目前不清楚Savagel构的那个部分缺YV12支持Q而是用驱动进行{换的(很慢)。如果你怀疑你的显卡,找一个新的驱动,或者在mplayer-users的邮件列表上CD的询问支持MMX/3DNow的驱动?/p>
nVidia在Linux下不是很好的选择(nVidia认ؓQ这q真实情况).. 你将不得不用二q制的非开源的nVidia驱动QnVidia的网站可以找到。标准XFree86驱动没有q些昑֍的XVideo支持Q因为nVidia没有公开源码/规格?/p>
据我所知最新的XFree86驱动包含了GeForce2?的XVideo支持?/p>
Riva128昑֍即用nVidia的驱动也没有XVideo支持:(向nVidia抱怨去吧?/p>
2.3.1.2.1.2 S3昑֍
2.3.1.2.1.3 nVidia昑֍
2.3.1.2.1.4 ATI昑֍
Q而且不需要Q何库或者X。阅?a >Vidix一节?
q些昑֍能在许多W记本电脑里扑ֈ。不q的是,X 4.2.0的驱动不能用XvQ但是我们ؓ你准备了一个经q修改,能够使用Xv 的驱动?a >到这里下?/a>。这个驱动是由Stefan Seyfried提供的?/p>
像这样修改你的XF86Config使之能进行DVD大小的内容的播放Q?/p>
Section "Device"
[...]
Driver "neomagic"
Option "OverlayMem" "829440"
[...]
EndSection
如果你想要在Trident昑֍上用xvQ它?.1.0下不工作Q尝试XFree最新的CVS或者等候XFree 4.2.0。最新的CVS加入了Cyberblade XP昑֍的全屏Xv支持?/p>
如果你想在一块基于Kyro的显?例如Hercules Prophet 4000XT)上用XvQ你应该?a >PowerVR的网?/a>上下载驱动?/p>
q部分文档试图花些篇q来解释DGA大概是什么以及MPlayer的DGA视频输出驱动能干什?和不能干什??/p>
DGA是Direct Graphics Access的简Uͼ是一UɽE序l过X-服务器直接修改~冲昑֭的方法。从技术角度说q是通过把~冲昑֭映射C的处理器的内存范围之内。只有你有超U用h限的时候内核才允许q种操作。用rootd或者给MPlayer的执行文件设|SUID?推荐使用Q?可以做到q一炏V?/p>
DGA有两U版本: DGA1用于XFree 3.x.x和DGA2从XFree 4.0.1开始引入?/p>
DGA1只提供了前述的~冲直接操作功能。你不得不用XVidMode扩展来切换视频信L分L率?/p>
DGA2l合了XVidMode扩展的特性而且也允许切换显C的色彩深度。因此,虽然一般?2位色X服务器,你也能切换到15位色深,反之亦然?/p>
然而DGA也有一些弊端。它g有些依赖于你使用的图形芯片和X服务器中控制该芯片的视频驱动。因此,它ƈ不是Ҏ有的pȝ都v作用?/p>
首先保X装蝲了DGA扩展Q察?var/log/XFree86.0.log:
(II) Loading extension XFree86-DGA
可见Q强烈推荐XFree86 4.0.x或更高版本,MPlayer的DGA驱动?/configure时会自动到Q否则你可以?-enable-dga~译它?/p>
如果你的驱动不能切换C个较的分L率,试使用-vm(只用于X 3.3.x)Q?fsQ?bppQ?zoom选项找一个适合你的电媄的视频模式。目前没有{换功?(
成ؓroot。DGA需要root权限来直接写昑֭。如果你想用普通用戯行它Q给MPlayer讄SUID root权限Q?/p>
chown root /usr/local/bin/mplayer
chmod 750 /usr/local/bin/mplayer
chmod +s /usr/local/bin/mplayer
它现在也能被普通用户用了?/p>
警告Q安全风?/strong>
q是一?strong>很大?/strong>安全风险Q?strong>永远不要在除了你之外q有人可以用的服务器上q样做,因ؓ他们能通过SUID root的MPlayer获得root权限?
现在使用-vo dga
选项Q开始?如此希望:))Q?你也应该试看看-vo sdl:dga
选项能否正常工作。它快得多?/p>
DGA驱动允许切换输出信号的分辨率。这栯避免使用(~慢?软g~放同时又提供全屏图象。理x况下Q它精切换成视频数据的分辨率(除了Z保持长宽?Q但是X服务器仅允许切换?code>/etc/X11/XF86Config(XFree 4.0.X使用/etc/X11/XF86Config-4
用于区别)中预定义的分辨率。它们被所谓的modelines定义q且依赖于你的视频硬件的能力。X服务器启动时扫描q个配制文gq且用那些不适用于你的硬件的modelines。你能通过X11的log文g扑և哪些方式可用。它能在q里扑ֈQ?code>/var/log/XFree86.0.log?/p>
下面的例子对于一块Riva128芯片工作良好Q用X server的驱动模?code>nv.o?/p>
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
MPlayer在有两种Ҏ使用DGAQSDL驱动能用它(-vo sdl:dga)QDGA驱动(-vo dga)用它。上面说的内容对两者都有效Q在下列的几D中我将解释MPlayer中DGA驱动是如何工作的?/p>
DGA驱动通过命o行中?vo dga选项调用。默认操作是转换成与原来的视频尽可能接近的分辨率。它忽?vm?fs选项(开启视频模式切换和全屏方式) -- 它总试N过切换昄模式可能多的覆盖你的屏q,q样ȝ你的CPU使用一个单一的附加的周期来放大图像。如果你不喜Ƣ它选择的模式你能强q它选择最接近于你通过-x?y选项规定的分辨率的模式。?v选项QDGA驱动在一大堆别的东西中打印出你当前XF86-Config文g支持的所有分辨率的列表。如果是DGA2你也能通过使用-bpp选项它用一定的色彩深度。有效的色深?5Q?6Q?4?2。这取决于你的硬件对q些色深是否本地支持Q还是通过某种(有可能很?的{化来完成的?/p>
如果你非常幸q,有够显存的屏外~冲区来存放整个图象QDGA驱动用双重缓Ԍq能使电影播放更加^滑。它会告诉你双重~冲是否被打开?/p>
双重~冲的意思是在你的视频的当前帧被昄Ӟ下一帧在屏外~冲Z被绘制。当下一帧准备完毕时Q图形芯片被告知下一帧在昑֭中的位置q且直接从那里将要显C的数据d来。在此期间其它在记忆中的~冲器将再一ơ被装满新的视频数据?/p>
双重~冲可以?double选项开启也可以?nodouble选项止。目前缺省选项是禁用双重缓册Ӏ屏q显C功?OSD)在用DGA驱动模式时必L开双重~冲功能。然而,使用双重~冲可能D较大的速度下降(在我的K6-II+ 525上它多占?0%的CPU旉Q?Q下降程度取决于DGA操作你的g的方法?/p>
一般来_DGA帧缓冲至应该跟X11驱动一样快同时q有全屏图象的附加好处。对MPlayer打印出的癑ֈ比速度的评价应该小心,比如X11驱动它们q不包括X-服务器真正绘制所用的旉。开一个终端连C的机器的串口上运行top命o看看你的机器真正在干什?..
一般来_使用DGA相对“普通的”使用X11所产生的速度提高高度依赖于你的显卡,以及X-服务器中它的模块做了多少优化?/p>
如果你的pȝ较慢Q最好?5或?6bit色深Q因Z们仅仅要?2bit昄的显存带宽的一半?/p>
即你的昑֍自n支?2bit色深Q?4bit的色׃是个好主意,因ؓ它被32/32方式传?5%的数据?/p>
我曾见过一些AVI文g能在Pentium MMX 266上播放。AMD K6-2 CPU?00 MHZ以上的应该可以工作?/p>
嗯,据一些XFree的开发者说QDGA像头野兽。他们告诉你不要使用它。ƈ非对M芯片的驱动它的操作都是没有瑕늚?/p>
SDL(Simple Directmedia Layer)基本上是一U统一的视?音频接口。用它的程序只要知道SDLQ而不需要了解SDL实际上用的视频或音频驱动。例如用SDL的DoomUL能在svgalibQaalibQXQfbdevQ和其他东西上用,你仅需要用环境变量SDL_VIDEODRIVER规定(例如)使用的视频驱动。嗯Q至在理论上?/p>
在MPlayer中,我们使用它的X11驱动的Y件羃攑֊能,用于不支持XVideo的芯?昑֍Q直到我们做出我们自q(更快Q更?的Y件羃放代码。同时我们用它的aalib输出Q但是现在我们自q更合适的了。它的DGA模式比我们的好,直到最q。现在明白了Q?:)
它对一些buggy的驱?昑֍也有帮助Q例如视频蟩?不是pȝ~慢的问?Q或者音频gq?/p>
SDL视频输出支持在电׃面,(如果出现)的黑条上昄字幕?/p>
q里是一些关于SDL输出的控刉项Q?/strong>
-vo sdl:name
-ao sdl:name
-noxv
-forcexv
SDL控制键: | |||
F |
切换全屏/H口方式 | ||
C |
循环切换可用的全屏方?/td> | ||
W与S |
*?的映?音量控制) |
你必d装svgalib和它的开发包来MPlayer~译它的SVGAlib驱动(自动,但是也能强制使用)Q别忘了~辑/etc/vga/libvga.config来配合你的显?amp;监视器?/p>
一定不要用-fs选项Q因为它导致用Y件羃放,速度会很慢,如果你确实需要,使用-sws 4
选项Q质量会有点差,但是无论如何它更快?/p>
SVGAlibl合了EGAlibQ得MPlayer有可能用16U颜色播放Q何电影,下列的配制中可以使用Q?/p>
bpp(每象素比Ҏ)的值必L工设?Q?br /> -bpp 4
电媄可能必须被按比例~小到EGA适合的模式:
-vop scale=640:350
或?br /> -vop scale=320:200
为做到这一Ҏ们需要用快速但低质量的例程Q?br /> -sws 4
也许自动U正长宽比的功能需要关闭:
-noaspect
注意Q?/strong>Ҏ我的l验?code>-vop eq=-20:0E稍降低亮度可以在EGA屏幕上获得最好的图象质量。在我的机器上我也要降低音频采样率,因ؓ声音?4kHz时很差:-srate 22050
.
你只有打开expand
滤镜才能使用OSD和字q。具体参数参见man page?/p>
是否~译FBdev目标是在./configure期间自动的。阅d核源码中的~冲的文?Documentation/fb/*)来了解更多信息?/p>
如果你的昑֍不支持VBE 2.0标准(较旧的ISA与PCI昑֍Q诸如S3 Trio64)Q仅支持VBE 1.2(或者更老的?)Q嗯QVESAfb仍然是可用的Q但是你必d启动Linux之前装蝲SciTech Display Doctor(从前叫UniVBE )。用DOS启动盘或随便什么。同Ӟ别忘了注册你的UniVBE ;))
FBdev输出有些除了以前说过的参数外的附加参敎ͼ
-fb
-fbmode
-fbmodeconfig
-monitor_hfreq
-monitor_vfreq
-monitor_dotclock
如果你想要切换到某个具体模式Q那么?/p>
mplayer -vm -fbmode (NameOfMode) filename
setterm -blank 0
echo -e '\033[?25h'
?code>setterm -cursor on 注意Q用VESA 帧缓冲时FBdev视频方式不能改变Q也不要要求q个功能Q因为它不是׃MPlayer自n的限制?/p>
q一D|关于Matrox G200/G400/G450/G550 BES (Back-End Scaler)的支持,mga_vid内核驱动。它现在是由A'rpi开发,它有三重~冲的硬件VSYNC支持。它在~冲控制C和X下都可以工作?/p>
警告Q在非Linuxpȝ(在FreeBSD上测试过)上,要?a >VIDIX实现mga_vidQ?/p>
安装:
cd drivers
make
/dev/mga_vid
讑֤Q?
mknod /dev/mga_vid c 178 0
然后q样加蝲驱动
insmod mga_vid.o
insmod mga_vid.o mga_ram_size=16
/etc/modules.conf
的末֊上下面这一行:
alias char-major-178 mga_vid
然后?code>mga_vid.o模块复制?code>/lib/modules/<kernel version>/somewhere下的适当位置?/p>
然后q行
depmod -a
/dev/mga_vid
q且~译'mga'驱动。如果你使用matroxfb控制収ͼ 在MPlayer中用-vo mga
使用它,或者在XFree86 3.x.x或?.x.x下的使用-vo xmga
?
mga_vid驱动能与Xv协同工作?/p>
可以阅读/dev/mga_vid
讑֤文g(例如cat /dev/mga_vid
)来查找一些信息,也可以通过写它来调整亮度:echo "brightness=120" > /dev/mga_vid
q个驱动使用内核的tdfx帧缓冲驱动来利用YUV加速播攄影。你需要一个支持tdfxfb的内核,然后?code>./configure --enable-tdfxfb重新~译
MPlayer支持使用OpenGL昄电媄Q但是如果你的^?驱动支持xvQ就象用linux的PC机那P׃用xvQOpenGL的效果与它相比相当坏。如果你只有没有xv支持的X11E序QOpenGL是可用的选择?/p>
不幸的是q所有驱动都支持q个Ҏ。Utah-GLX驱动(针对XFree86 3.3.6)Ҏ有显卡都支持它。访?a >http://utah-glx.sourceforge.net了解安装它的l节问题?/p>
XFree86(DRI) 4.0.3以上支持Matrox和Radeon昑֍的OpenGLQ?.2.0或更新版本支持Rage128。访?a >http://dri.sourceforge.net以寻找下载和安装指导?/p>
AAlib 是一个用于在文本模式下显C图形的库,它用强大的ASCII渲染器。有许多E序提供对它的支持,像DoomQQuake{等?MPlayer包含一个针对它的实用的驱动。如?/configure发现安装了aalibQaalib的libvo驱动被~译?/p>
你能在AAH口中用一些控刉来改变渲染参敎ͼ | |||
1 |
减少Ҏ?/td> | ||
2 |
增加Ҏ?/td> | ||
3 |
减少亮度 | ||
4 |
增加亮度 | ||
5 |
打开/关闭快速渲?/td> | ||
6 |
讄抖动方式(不抖? 误差分布法, Floyd Steinberg法) | ||
7 |
反{图象 | ||
a |
转换aa和MPlayer的控刉 |
下列的命令行选项能够使用Q?/strong>
-aaosdcolor=V
-aasubcolor=V
V的值可以是Q?0/正常Q?/暗色Q?/_体Q?/_体字体Q?/反{Q?/Ҏ)
AAlib自n也提供了大量的选项。这里是一些重要的Q?/strong>
-aadriver
-aaextended
-aaeight
-aahelp
注意Q渲染效果是十分消耗CPU的,特别是用AA-on-X(在X上用aalib)Q在标准的非帧缓冲控制台上的CPU消耗是最的Q用SVGATextMode讄一个大的文本模式,然后再欣赏电影!(大力显卡的W二个接口就不错:))(但我你用-vop 1bpp
选项在hgafb上获得图?)
如果你的计算机速度不以渲染所有ឮ׃?code>-framedrop选项
在终端中播放电媄时用Linux驱动你将会得到更好的速度和画面质量,不要用curses(-aadriver Linux
)。但是ؓ此你需?code>/dev/vcsa<terminal>的写权限。那是aalib不能自动的Q但vo_aa会尝试搜索最x式,q一步的调节问题参见http://aa-project.sourceforge.net/tune/?/p>
q个驱动被设计ƈ引入作ؓ一?strong>通用的驱?/strong>用于M有VESA VBE 2.0兼容的BIOS的显卡。这驱动的另一个优Ҏ能试图迫使在其上q行电视输出?br />VESA BIOS EXTENSION(VBE)3.0?日期Q?998q九?6?/strong>(W?0?_
双重控制器设?/strong>
VBE 3.0支持双重控制器设计基于如下假设,׃两个控制器一般是同样的OEM提供的,被同一块显卡上的一个的BIOS ROMQ所以可以对E序隐藏有两个控制器在作用的事实。这限制了同时的使用独立的控制器的功能,但是允许VBE 3.0发布前的E序能正常工作。VBE函数00h(q回控制器信?q回l过合ƈ的两个控制器的信息,包括l过合ƈ的可供用的方式的列表。当E序选择一个方式时Q相应的控制器被ȀzR然后剩下的VBE函数都作用在Ȁzȝ控制器上?
因此Q你有可能通过q个驱动得到电视输出?br />(我猜想电视至经常地是用独立的头或者独立的输出)?/p>
monitor_vfreq
, monitor_dotclock
你将获得可能的最高的h率?(使用一般的计时公式)。要启用q个Ҏ你必须讑֮你的昄器的所?/strong>选项?使用GCC 2.96׃要用这个驱动!它不能工作!
-vo vesa:opts
-double
选项来用双重缓册Ӏ注意:你能 省略q些参数来开?strong>自动?/strong>dga方式?量避免使用它。输出到X11(使用׃n内存扩展)Q完全没有硬件加速。支?MMX/3DNow与SSE加速,但是仍然~慢?软g~放Q用选项-fs -zoom
。大多数昑֍有硬件羃放支持,使用-vo xv
对他们输出,或者对于Matroxes使用-vo xmga
?/p>
问题在于大多数显卡的驱动在第二个接口/电视接口上不支持g加速。在那些情况下,你将看到l色和蓝色的彩色H口而不是电影。这是这个驱动v作用的地方,但是你需要强大的CPU来用Y件羃放。不要用SDL驱动的Y件输?~放Q它的图象质量比较差Q?/p>
软g~放是十分缓慢的Q你最好尝试用改变视频模式的方法代替它。它十分单。参?a >DGA一节的modelinesQƈ且将他们插入C的XF86Config?/p>
-vm
选择。它切换到适合你的电媄的分辨率。如果你的XFree86不是Q?如果你调整不C讑֮的模式,查XFree86的输出。有些驱动不能用低分L率视频方式所需要的低的像素频率?/p>
VIDIX?strong>VIDeo Interface for *niX的羃写?br />VIDIX被设计和引入作ؓ快速的用户I间驱动的接口提供类似mga_vidZMatrox昑֍提供的这栯频性能的。它也十分易于移植?/p>
q个接口被设计来作ؓ一个将存在的视频加速接?是mga_vidQrage128_vidQradeon_vidQpm3_vid )l一C个固定的pȝ的尝试。它l芯片提供BES(BackEnd scalers)或OV(Video Overlays)之类的高层接口。它不ؓ那些囑փ服务器该做的事情提供底层接口?(我不惌X11开发组在切换图像模式上竞争)。即q接口的主要目的是充分提高视频播攄速度?/p>
-vo xvidix
-vo vesa:vidix
(只用于Linux)?code>-vo fbdev:vidix 当VIDIX被用?strong>副驱?/strong>?-vo vesa:vidix
)视频方式的配|由视频输出讑֤执行(单来说就?strong>vo_server)。因此,你能对MPlayer使用与vo_server同样的命令行指o。此外,它能使用-double
作ؓ全局的参数?(我徏议至在使用ATI昑֍时对VIDIX使用q个参数)?br />至于-vo xvidix
Q目前它能识别下列的选项Q?-fs -zoom -x -y -double
?/p>
你还能在命o行中使用W三个副参数直接制定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
但这有点危险Q所以你不应该这么做。在q种情况下,被指定的驱动会被强制使用而其l果是无法预计的(它可以把你的计算?strong>锁死)。只有在你绝对确信它能工作,而MPlayer没有自动选择它时Q你才能q么做。请把情冉|告给开发者。正的使用Ҏ是用没有参数的VIDIX来用驱动的自动?/p>
VIDIX是一Ҏ技术所以它极有可能在你的系l上不能正常工作。在q种情况下,你唯一的解军_法是UL?主要是libdha)。但它在X11能正常工作的那些pȝ的上有正常工作的希望?/p>
因ؓVIDIX需要对g直接讉KQ所以你或者以rootq行它,或者给MPlayer的二q制E序讄SUID?警告Q这有安全风?/strong>)。或者,你可以用一个特别的内核模块Q像q样Q?/p>
目前大部分ATI昑֍都实C本地支持Q从Mach64到最新的Radeon?/p>
~译生成两个二进制文Ӟ用于Radeon?code>radeon_vid和用于Rage 128昑֍?code>rage128_vid。你可以强制使用其中一个或者让VIDIXpȝ自动载入所有可用的驱动?/p>
Matrox G200,G400,G450和G550据报告可以工作?/p>
q个驱动支持视频均衡器比且应该几乎和Matrox帧缓?/a>一样快?/p>
有一个可用于Trident Cyberblade/i1芯片的驱动,它们一般出现在VIA的EpiaL上?/p>
q个驱动有Alastair M. Robinson~写q维护,他在他的主页上提供他的最新版本的驱动下蝲。这个驱动会很快被加到MPlayer中,所以CVS应该已经包含最新驱动了?/p>
管有一个用?DLabs GLINT R3和Permedia3芯片的驱动,但没有h试q,所以欢q报告信息?/p>
"DirectFB是设计用于嵌入系l的囑Ş库。它能利用最的资源开销提供最大的g加速效果? -- 引自http://www.directfb.org. 我在q一部分中将略去DirectFB的特性?/p>
管MPlayer不是DirectFB支持?video provider"Q这个输出驱动将开启用DirectFB的视频播放。这?-- 当然 -- 实现加速,在我的Matrox G400上DirectFB的速度跟XVideo一栗?/p>
L量使用最新的DirectFB。你可以在命令行中通过使用 请阅?a >DirectFB的一般介l部?/a>来了解概要信息?/p>
q个视频输出驱动开启Matrox G400/G450/G550昑֍上的CRTC2(W二个接?Q显C?strong>独立?/strong>W一个接口的视频?/p>
使其工作的方法可以在技术部?/a>和直接从Ville Syrjala?a >主页获得?/p>
注意Q我们没能让它工作,但是有h做到了。不怎样Q将CRTC2代码UL?strong>mga_vid
?a >q里.下蝲一个Alex做的供MPlayer使用的版?不需要svgalib的源代码可以编??svgalib_helper
目录中的模块(如果你是从svgalib的网上下蝲的源代码Q可以在svgalib-1.9.17/kernel/
目录下找到它)Q然后insmod?mplayer/main/libdha/svgalib_helper
. libdha/Makefile
中包?svgalib_helper"字符串的CFLAGS行前面的注释受?2.3.1.2.12.1 ATI昑֍
2.3.1.2.12.2 Matrox昑֍
2.3.1.12.3 Trident昑֍
2.3.1.2.12.4 3DLabs昑֍
2.3.1.2.13 DirectFB
-dfbopts
选项讄DirectFB的选项。层选择可以通过副驱动模式实玎ͼ例如Q?code>-vo directfb:2(默认使用layer -1Q自动选择)2.3.1.2.14 DirectFB/Matrox(dfbmga)
MPlayer支持SiemensQTechnotrendQGalaxis或Hauppauge提供的用Siemens DVB芯片的显卡。最新的DVB驱动?a >Linux TV site。如果你惌软g解码你需要一个至?GHz的CPU?/p>
Configure应该能检到你的DVB昑֍。如果它没有Q用下列命令强制?
./configure --enable-dvb
如果你在非标准的路径下有ost头文Ӟ使用下列命o讄路径
./configure --with-extraincdir=<DVB source directory>/ost/include
然后正常~译安装?/p>
g解码(播放标准的MPEG1/2文g)使用下列命oQ?/p>
mplayer -ao mpegpes -vo mpegpes file.mpg|vob
MPEG1的Y件解码或转化为其他格式用下列命令:
mplayer -ao mpegpes -vo mpegpes -vop lavc yourfile.ext mplayer -ao mpegpes -vo mpegpes -vop fame,expand yourfile.ext
注意刎ͼDVB昑֍只支持高度ؓ288?76的PAL格式或?40?80的NTSC格式。你必须对其它的高度q行重新~放Q通过?code>-vop选项中?code>scale=width:height指定你想要宽度和高度。DVB昑֍可以接受多种宽度Q像720Q?04Q?40Q?12Q?80Q?52{等Q而且在水qx向上可以g~放Q所以大多数情况下你不需要作水^~放。例如对?12x384(宽高?:3)的DivX使用下列命oQ?/p>
mplayer -ao mpegpes -vo mpegpes -vop lavc,scale=512:576
如果你用宽银幕电媄而你把它攑֤到整个屏q的高度Q你可以使用expand=w:h
插g来增加黑带。ؓ了看640x384分L率的DivXQ用下列命令:
mplayer -ao mpegpes -vo mpegpes -vop lavc,expand=640:576 file.avi
如果你的CPU对于播放720x576的DivX太慢Q尝试横向羃放:
mplayer -ao mpegpes -vo mpegpes -vop lavc,scale=352:576 file.avi
如果速度没有提高Q尝试竖直羃放:
mplayer -ao mpegpes -vo mpegpes -vop lavc,scale=352:288 file.avi
因ؓOSD和字q用OSD插g的扩展特性。因此,不要使用expand=w:h
或?code>expand=w:h:x:yQ?code>expand=w:h:x:y:1(W?个参?code>:1开启OSD渲染)。你也许惌把图象向上移动一Ҏl字q更大的黑色区域。如果你也想要移动字q,因ؓ他们可能在你电视屏幕的外面,使用-subpos <0-100>
来调整它(-subpos 80
是个不错的选择)?/p>
Z在PAL电视上播N25fps的电影或者因为CPU太慢Q加?code>-framedrop选项?/p>
Z保持DivX文g的宽高比q获得最理想的羃攑֏?g水^~放和Y件垂直羃攑ƈ且保持正宽高比)Q用最新的dvbscale插gQ?/p>
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
如果你有使用问题或想要了解特性通告或者参加这个问题的讨论Q加入我们的MPlayer-DVB的邮件列表。请C列表的语a是英语?/p>
在未来你可以期待使用DVB昑֍的自带OSDҎ显COSD和字q,q有更流畅的?5fps电媄播放和实时的MPEG2和MPEG4转换(部分的解??/p>
MPlayer支持使用Creative DXR2卡的g加数功能
首先你要正确安装DXR2的驱动。你可以?a >DXR2资源中心q个站点扑ֈ驱动和安装方法?/p>
-vo dxr2
-vo dxr2:x11
?code>-vo dxr2:xv -dxr2 <option1:option2:...>
DXR2使用的叠加芯片质量很差但它默认的讄应该Ҏ有h都适用。OSD可能可以通过使用colorkey的绘制方法在叠加(不能用于TV)输出中实现。用默认的colorkey讑֮你可能获得各U效果,一般情况下你可能看到colorkey环绕在字W周围或者其它可W的效果。但只要你适当的调节colorkey的设定你应该可以获得可接受的效果?/p>
默认选项参见manpage?/p>
MPlayer支持Creative DXR3和Sigma Designs Hollywood Plus卡的g加速播放。这些卡都用SigmaDesigns?em8300 MPEG解码芯片
首先Q你需要正地安装DXR3/H+的驱动,版本臛_0.12.0或者更新的。你能在DXR3 & Hollywood Plus for Linux的站Ҏ到驱动和安装指导。Configure应该自动到你的昑֍Q编译应该没有Q何问题?/p>
-vo dxr3:prebuf:sync:norm=x:<device>
overlay
Ȁzoverlay而不是电视输出。你必须有一个正配|的的overlay讄来正常工作。最单的配置overlay 的方法是先运行autocal。然后运行mplayer使用dxr3输出而不打开overlayQ运行dxr3view。在dxr3view中你可以调整overlay讄q实时看到效果,可能q个Ҏ在来会被MPlayer的GUI支持。当正确讄了overlay之后你就不再需要dxr3view了?br />prebuf
打开预缓册Ӏ预~冲是em8300的一个特性,是它可以同时处理一帧以上的视频。这表示当你开启预~冲(默认?q行ӞMPlayer试图保持视频缓冲区里面L填满数据的。如果你是用的一台比较慢的机器MPlayer 大概会占用接q?00%的CPU。这在你播放UMPEG?例如DVDQSVCD之类)的时候尤其明显,因ؓMPlayer不需要把它重新编码成 MPEG所以他会以很高的速度填充~冲区?br />当不用预~冲q行时em8300对CPU的占用率十分敏感Q所以徏议你打开MPlayer?code>-framedrop选项来防止进一步的不同?br />sync
打开新的同步机制。这个目前是一个试验性的Ҏ。打开q个同步Ҏ后em8300的内部时钟将旉被监视,如果它开始偏MPlayer的时钟它被重新讄从而导致丢掉Q何滞后的帧?br />norm=x
用来讄DXR3卡的电视制式而避免用em8300setup之类的外部工兗可用的制式? = NTSCQ? = PAL-60Q?3 = PAL。特别的制式?(自动选择使用PAL/PAL-60)?(自动选择使用PAL/NTSC)因ؓ他们通过试电媄的速率来决定是哪个制式?norm = 0(默认?不改变现在的制式?br /><device>
= 使用的设备号如果你有过一块em8300昑֍?:prebuf:sync
在播放DivX电媄时似乎工作的很好。有人报告过在播放MPEG1/2文g时用prebuf
选项有问题。你可能会先试不加M参数Q如果你遇到同步的问题,或者DVD字幕的问题,试试:sync
?-ao oss:/dev/em8300_ma-X
X
是设备号(?如果只有一块显??-aop list=resample:fout=xxxxx
-ac hwac3
)?-vop lace/fame
-vop lavc=<quality>:25
Q特别是当你使用prebuffering的时候。那么ؓ什么是25而不?9.97Q嗯Q原因是当?9.97 的时候图像有一些蟩跃。目前我们还不知道原因。如果你把它讄?5?7之间的值是囑փq定了。目前我们能做的是接受q个事实?-vop expand=-1:-1:-1:-1:1
-ac hwac3
q是用于那些MJPEG视频捕捉/播放?l过DC10+和Buz的测试,对LML33QDC10应该也能工作)的显C驱?-vo zr
)。驱动通过把每帧图像编码成为jpeg格式和然后把它发送到昑֍来工作。在jpeg~码时要使用libavcodecQ而且必须使用?/p>用特D的cinerama模式Q你可以通过两个投媄仪和两块MJPEG卡用真正的宽银幕方式观看电媄。根据分辨率和质量的讄Q这个驱动可能要求极强的CPU处理能力Q如果你的机器太慢的话记住?code>-framedropQ注意:我的AMD K6-2 350MHz(加上 -framedrop
选项)_看VCD寸的东西和l过~小的电影?
q个驱动需要一个内栔R动,可以?a >http://mjpeg.sourceforge.net扑ֈQ你必须先让它工作。MJPEG卡的存在能被configure脚本自动到Q如果自动检失败,用这个命令强制检?
./configure --enable-zr
驱动的输出可以用一些选项讄Q在man page里面可以扑ֈ一份长长的可用选项的描qͼ一个比较短的选项列表可以q行q个命o获得
mplayer -zrhelp
~放和OSD (on screen display)q类功能q个驱动不能处理Q但可以用视频o镜来完成Q例如你有一个分辨率?code>512x272 的电影,而你希望用你的DC10+用全屏幕观看Q主要有三种可能的方法,你可以把电媄宽度~放?code>768Q?code>384Q或?code>192。考虑到运行速度和质量的原因Q我会选择使用快速二ơ线型Y件羃放o镜把电媄~放?code>384x204。命令行是这L
mplayer -vo zr -sws 0 -vop scale=384:204 movie.avi
画面的切割可以用crop
滤镜也可以用驱动自己完成。假讄影太宽了Q在你的机器上显CZ了,那么你会惌?-zrcrop
来切割电q宽度Q那么你应该输入下面的命?/p>
mplayer -vo zr -zrcrop 720x320+80+0 benhur.avi如果你想要?code>crop滤镜Q你可以q行
mplayer -vo zr -vop crop=720:320:80:0 benhur.avi
多个-zrcrop
׃调用cinerama模式Q你可以把电影投到几个电视或者投׃A上来刉一个大银幕Q设想你有两个投׃AQ左辚w个连C的机器的/dev/video1
而右辚w个连C的机器的/dev/video0
上的DC10+上,电媄的分辨率?code>704x288Q同时假设你希望双的投׃A昄黑白效果而右边的投媄仪显C的用质?code>10来显Cjpeg帧那么你需要用下列命令:
mplayer -vo zr -zrdev /dev/video0 -zrcrop 352x288+352+0 -zrxdoff 0 -zrbw \ -zrcrop 352x288+0+0 -zrdev /dev/video1 -zrquality 10 movie.avi
你发现在W二?code>-zrcrop之前出现的选项只作用于DC10+Q而第二个-zrcrop
之后的选项作用于你的机器。在cinerama中能使用的MJPEG卡最多ؓ4块,所以你可以制作一?code>2x2的视频墙
最后还有一个重要的注意事项Q不要在播放期间在播放设备上启动或停止XawTVQ它导致你的计机崩溃。然而,首先启动XawTVQ?然后启动MPlayerQ等MPlayer播放l束Q?strong>然后停止XawTV是没有问题的?/p>
q个驱动可以使用Blinkenlights UPD兼容协议播放。如果你不知?a >Blinkenlights是什么,你就不需要这个驱动?/p>
在Linux下你?U方法G400的电视输出工作:
重要提示Q?/strong>对于Matrox G450/G550的电视输出方法看下一节!
TVout/matroxset
然后q行make
。把matroxset
安装C的PATH中的某个地方?fbset
Q进?code>TVout/fbset然后q行make
。把fbset
安装C的PATH中的某个地方?TVout/
子目录,以root执行./modules
。你的文本模式的控制台将q入到~冲模式(没有Ҏ改回来!)?Yoh。接着的Q务是使tty1上的光标(或者别的什?消失Q和关闭屏幕抑制昄。执行下列的命oQ?/p>
echo -e '\033[?25l'
或?code>setterm -cursor off
setterm -blank 0
你可能想把上q内容脚本,同时也清?. 让光标出现的命o是:echo -e '\033[?25h'
或?code>setterm -cursor on
Yeah kewl。用mplayer -vo mga -fs -screenw 640 -screenh 512 <filename>
来播攄?br />(如果你正在用XQ用CTRL-ALT-F1之类的快捷键换成matroxfbQ?
分L率换?40x512如果你用的不是这个分辨率?br />享受快多Ҏ的Matrox电视输出(比Xvq要?Q?/strong>
G400的电~线QCRTC2q接器的W?栚w是复合视频信? 基线是第6Q第7和第8栚w?Bal醶s R醕z提供信息)
G400的电~线QCRTC2q接器的W?栚w是复合视频信? 基线是第5Q第6Q第7和第15栚w?Bal醶s R醕z提供信息)
q些昑֍的电视输出支持最q刚被引入,而且q没有进入内核的L。据我所知目前不能?strong>mga_vid 因ؓG450/G550的驱动只能工作在一U配|下面:W一个CRTC芯片(有更多特?接第一个display(昄?Q第二个 CRTC(没有BES -- BES的解释看上面G400的部?接电视上Q所以你目前只能使用MPlayer?fbdev的输备?/p>
目前W一个CRTC不能传送到W二个头。内核的matroxfb驱动的作?-- Petr Vandrovec -- 可能正在努力支持它,使用把第一个CRTC的输出同时显C在两个头上的方法,像目前G400推荐的一P看上面的部分?/p>
需要的内核补丁和howto的细节可以从http://www.bglug.ca/matrox_tvout/下蝲?/p>
ATI目前不想对他的Q何一U电视输片提供Linux下的支持Q由于他们授权的Macrovision技术?/p>
在其它显卡上Q只能?a >VESA驱动Q没有VIDIX可用。但需要强大的CPU?/p>
你唯一需要做的事?-- 在启动你的电脑之前插上电视连接器的插?/strong>因ؓ视频BIOS只在自D期间初始化一ơ?/p>
查阅q个|址?/p>
首先Q你必须?a >http://nvidia.com下蝲闭源码的驱动,我不会描q安装和配置的过E因为它不属于这文档的范围?/p>
当XFree86, XVideo, ?D加速都正常工作之后Q根据下面的例子(改写成适合你的昑֍/电视)~辑你的2.3.1.5.4 Voodoo 3
2.3.1.5.5 nVidia
XF86Config
中你的显卡的Device部分: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
出处Q?a >http://web.njit.edu/all_topics/Prog_Lang_Docs/html/mplayer/Chinese/video.html