強(qiáng)烈建議你檢查你的MTRR注冊是否正確的設(shè)定了,因為他們能極大的提高性能。
運(yùn)行'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得到這個,它會自動地設(shè)定MTRR注冊。
如果沒有什么自動工作,你將不得不手工做。首先,你必須找到基地址。你有3種方法找它:
- 根據(jù)X11的啟動信息,例如:
(--) SVGA: PCI: Matrox MGA G400 AGP rev 4, Memory @ 0xd8000000, 0xd4000000
(--) SVGA: Linear framebuffer at 0xD8000000
- 從/proc/pci(使用lspci -v命令):
01:00.0 VGA compatible controller: Matrox Graphics, Inc.: Unknown device 0525
Memory at d8000000 (32-bit, prefetchable)
- 根據(jù)mga_vid內(nèi)核驅(qū)動的信息(使用dmesg):
mga_mem_base = d8000000
接著讓我們來確定顯存大小。這十分容易,只要把顯存大小變?yōu)槭M(jìn)制,或者使用這個表格:
|
1 MB |
|
0x100000 |
|
2 MB |
|
0x200000 |
|
4 MB |
|
0x400000 |
|
8 MB |
|
0x800000 |
|
16 MB |
|
0x1000000 |
|
32 MB |
|
0x2000000 |
你知道了基地址和顯存大小,下面讓我們進(jìn)行MTRR注冊!例如,對于上述32MB顯存( size=0x2000000 )的Matrox顯卡(base=0xd8000000)就運(yùn)行:
echo "base=0xd8000000 size=0x2000000 type=write-combining" >| /proc/mtrr
并非所有CPU都支持MTRR。比如較老的K6-2[266MHz左右,步進(jìn)值0]不支持MTRR,但是步進(jìn)值12的就支持(用'cat /proc/cpuinfo
'命令檢查)。
在XFree86 4.0.2或者更新的版本下,你能使用XVideo擴(kuò)展來使用你的顯卡的硬件YUV例程。這是就是'-vo xv'所使用的。同時,這是支持調(diào)節(jié)亮度/對比度/色相/等等的驅(qū)動(除非你使用舊的,緩慢的DirectShow DivX解碼器,什么驅(qū)動它都支持),參見man page。
為了使它工作,確信做如下檢查:
- 你必須使用XFree86 4.0.2或者更新的版本(以前的版本沒有XVideo)
- 你的顯卡確實支持硬件加速(現(xiàn)在的顯卡都支持)
- X加載了XVideo擴(kuò)展,它是像這樣的:
(II) Loading extension XVideo
顯示在/var/log/XFree86.0.log中
注意: 這只是加載XFree86的擴(kuò)展。在正常的安裝中,這是總被加載的,這并不意味著顯卡的XVideo支持被加載了!
- 你的顯卡在Linux下有Xv支持。為了檢查,運(yùn)行'xvinfo',它是XFree86程序集的一部分。它應(yīng)該顯示一段很長的文字,類似于這樣:
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才能使用它。
- 最后,檢查MPlayer是否編譯了'xv'支持。./configure可以顯示出來。
老的的3dfx驅(qū)動存在XVideo加速的問題,它不支持YUY2或者YV12之類的格式。確定你的XFree86版本在4.2.0以上,它在YV12和YUY2模式下工作很好。以前的版本,包括4.1.0,會在YV12下崩潰。如果你使用-vo xv時遇到奇怪的問題,嘗試使用SDL(它也有XVideo)看是否有幫助。細(xì)節(jié)請察看SDL部分。
或者,試試新的-vo tdfxfb驅(qū)動! 參見tdfxfb部分。
S3 Savage3D應(yīng)該能正常工作,不過對于Savage4,請使用XFree86 4.0.3或更新的版本(如果圖象有問題,試試16bpp)。至于S3 Virge,雖然有xv支持,但是這種顯卡實在太慢,因此你最好賣了它。
注意:目前不清楚Savage結(jié)構(gòu)的那個部分缺少YV12支持,而是用驅(qū)動進(jìn)行轉(zhuǎn)換的(很慢)。如果你懷疑你的顯卡,找一個新的驅(qū)動,或者在mplayer-users的郵件列表上禮貌的詢問支持MMX/3DNow的驅(qū)動。
nVidia在Linux下不是很好的選擇(nVidia認(rèn)為,這并非真實情況).. 你將不得不使用二進(jìn)制的非開源的nVidia驅(qū)動,nVidia的網(wǎng)站可以找到。標(biāo)準(zhǔn)XFree86驅(qū)動沒有這些顯卡的XVideo支持,因為nVidia沒有公開源碼/規(guī)格。
據(jù)我所知最新的XFree86驅(qū)動包含了GeForce2和3的XVideo支持。
Riva128顯卡即使用nVidia的驅(qū)動也沒有XVideo支持:(向nVidia抱怨去吧。
- GATOS驅(qū)動(除非你有Rage128或者Radeon,否則你應(yīng)該使用它)缺省打開VSYNC。這意味著解碼速度(!)與顯示器的刷新率是同步的。如果覺得播放速度緩慢,以某種方式禁用VSYNC,或者把刷新率調(diào)到到n*(電影的fps)Hz。
- Radeon VE -- 目前只有XFree86的CVS里有這種顯卡的驅(qū)動,4.1.0版沒有。同時沒有電視支持。當(dāng)然,使用MPlayer你能幸福地得到加速顯示,有或沒有電視輸出,而且不需要任何庫或者X。閱讀Vidix一節(jié)。
這些顯卡能在許多筆記本電腦里找到。不幸的是,X 4.2.0的驅(qū)動不能使用Xv,但是我們?yōu)槟銣?zhǔn)備了一個經(jīng)過修改,能夠使用Xv 的驅(qū)動。到這里下載。這個驅(qū)動是由Stefan Seyfried提供的。
像這樣修改你的XF86Config使之能進(jìn)行DVD大小的內(nèi)容的播放:
Section "Device"
[...]
Driver "neomagic"
Option "OverlayMem" "829440"
[...]
EndSection
如果你想要在Trident顯卡上使用xv,它在4.1.0下不工作,嘗試XFree最新的CVS或者等候XFree 4.2.0。最新的CVS加入了Cyberblade XP顯卡的全屏Xv支持。
如果你想在一塊基于Kyro的顯卡(例如Hercules Prophet 4000XT)上使用Xv,你應(yīng)該從PowerVR的網(wǎng)站上下載驅(qū)動。
引言
這部分文檔試圖花些篇幅來解釋DGA大概是什么以及MPlayer的DGA視頻輸出驅(qū)動能干什么(和不能干什么)。
DGA是什么
DGA是Direct Graphics Access的簡稱,是一種使程序繞過X-服務(wù)器直接修改幀緩沖顯存的方法。從技術(shù)角度說這是通過把幀緩沖顯存映射到你的處理器的內(nèi)存范圍之內(nèi)。只有你有超級用戶權(quán)限的時候內(nèi)核才允許這種操作。用root登錄或者給MPlayer的執(zhí)行文件設(shè)置SUID位(推薦使用!)可以做到這一點。
DGA有兩種版本: DGA1用于XFree 3.x.x和DGA2從XFree 4.0.1開始引入。
DGA1只提供了前述的幀緩沖直接操作功能。你不得不使用XVidMode擴(kuò)展來切換視頻信號的分辨率。
DGA2結(jié)合了XVidMode擴(kuò)展的特性而且也允許切換顯示的色彩深度。因此,雖然一般使用32位色X服務(wù)器,你也能切換到15位色深,反之亦然。
然而DGA也有一些弊端。它似乎有些依賴于你使用的圖形芯片和X服務(wù)器中控制該芯片的視頻驅(qū)動。因此,它并不是對所有的系統(tǒng)都起作用。
為MPLAYER安裝DGA支持
首先確保X裝載了DGA擴(kuò)展,察看/var/log/XFree86.0.log:
(II) Loading extension XFree86-DGA
可見,強(qiáng)烈推薦XFree86 4.0.x或更高版本,MPlayer的DGA驅(qū)動在./configure時會自動檢測到,否則你可以用--enable-dga強(qiáng)行編譯它。
如果你的驅(qū)動不能切換到一個較小的分辨率,嘗試使用-vm(只用于X 3.3.x),-fs,-bpp,-zoom選項找一個適合你的電影的視頻模式。目前沒有轉(zhuǎn)換功能:(
成為root。DGA需要root權(quán)限來直接寫顯存。如果你想用普通用戶運(yùn)行它,給MPlayer設(shè)置SUID root權(quán)限:
chown root /usr/local/bin/mplayer
chmod 750 /usr/local/bin/mplayer
chmod +s /usr/local/bin/mplayer
它現(xiàn)在也能被普通用戶使用了。
警告:安全風(fēng)險
這是一個很大的安全風(fēng)險!永遠(yuǎn)不要在除了你之外還有人可以使用的服務(wù)器上這樣做,因為他們能通過SUID root的MPlayer獲得root權(quán)限。
現(xiàn)在使用-vo dga
選項,開始使用(如此希望:))! 你也應(yīng)該嘗試看看-vo sdl:dga
選項能否正常工作。它快得多。
DGA驅(qū)動允許切換輸出信號的分辨率。這樣能避免使用(緩慢的)軟件縮放同時又提供全屏圖象。理想情況下,它將精確切換成視頻數(shù)據(jù)的分辨率(除了為了保持長寬比),但是X服務(wù)器僅允許切換到/etc/X11/XF86Config
(XFree 4.0.X使用/etc/X11/XF86Config-4
用于區(qū)別)中預(yù)定義的分辨率。它們被所謂的modelines定義并且依賴于你的視頻硬件的能力。X服務(wù)器啟動時掃描這個配制文件并且禁用那些不適用于你的硬件的modelines。你能通過X11的log文件找出哪些方式可用。它能在這里找到:/var/log/XFree86.0.log
。
下面的例子對于一塊Riva128芯片工作良好,使用X server的驅(qū)動模塊nv.o
。
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
DGA & MPLAYER
MPlayer在有兩種方法使用DGA:SDL驅(qū)動能使用它(-vo sdl:dga),DGA驅(qū)動(-vo dga)頁使用它。上面說的內(nèi)容對兩者都有效;在下列的幾段中我將解釋MPlayer中DGA驅(qū)動是如何工作的。
特性
DGA驅(qū)動通過命令行中的-vo dga選項調(diào)用。默認(rèn)操作是轉(zhuǎn)換成與原來的視頻盡可能接近的分辨率。它將忽略-vm和-fs選項(開啟視頻模式切換和全屏方式) -- 它總試圖通過切換顯示模式盡可能多的覆蓋你的屏幕,這樣阻礙你的CPU使用一個單一的附加的周期來放大圖像。如果你不喜歡它選擇的模式你能強(qiáng)迫它選擇最接近于你通過-x和-y選項規(guī)定的分辨率的模式。使用-v選項,DGA驅(qū)動將在一大堆別的東西中打印出你當(dāng)前XF86-Config文件支持的所有分辨率的列表。如果是DGA2你也能通過使用-bpp選項強(qiáng)迫它使用一定的色彩深度。有效的色深是15,16,24和32。這取決于你的硬件對這些色深是否本地支持,還是通過某種(有可能很慢)的轉(zhuǎn)化來完成的。
如果你非常幸運(yùn),有足夠顯存的屏外緩沖區(qū)來存放整個圖象,DGA驅(qū)動將使用雙重緩沖,這能使電影播放更加平滑。它會告訴你雙重緩沖是否被打開。
雙重緩沖的意思是在你的視頻的當(dāng)前幀被顯示時,下一幀在屏外緩沖區(qū)中被繪制。當(dāng)下一幀準(zhǔn)備完畢時,圖形芯片被告知下一幀在顯存中的位置并且直接從那里將要顯示的數(shù)據(jù)讀出來。在此期間其它在記憶中的緩沖器將再一次被裝滿新的視頻數(shù)據(jù)。
雙重緩沖可以用-double選項開啟也可以用-nodouble選項禁止。目前缺省選項是禁用雙重緩沖。屏幕顯示功能(OSD)在使用DGA驅(qū)動模式時必須打開雙重緩沖功能。然而,使用雙重緩沖可能導(dǎo)致較大的速度下降(在我的K6-II+ 525上它多占用20%的CPU時間!),下降程度取決于DGA操作你的硬件的方法。
速度問題
一般來說,DGA幀緩沖至少應(yīng)該跟X11驅(qū)動一樣快同時還有全屏圖象的附加好處。對MPlayer打印出的百分比速度的評價應(yīng)該小心,比如X11驅(qū)動它們并不包括X-服務(wù)器真正繪制所用的時間。開一個終端連到你的機(jī)器的串口上運(yùn)行top命令看看你的機(jī)器真正在干什么...
一般來說,使用DGA相對“普通的”使用X11所產(chǎn)生的速度提高高度依賴于你的顯卡,以及X-服務(wù)器中它的模塊做了多少優(yōu)化。
如果你的系統(tǒng)較慢,最好使用15或者16bit色深,因為他們僅僅要求32bit顯示的顯存帶寬的一半。
即使你的顯卡自身就支持32bit色深,使用24bit的色深也是個好主意,因為它被32/32方式少傳輸25%的數(shù)據(jù)。
我曾見過一些AVI文件能在Pentium MMX 266上播放。AMD K6-2 CPU在400 MHZ以上的應(yīng)該可以工作。
已知的BUG
嗯,據(jù)一些XFree的開發(fā)者說,DGA像頭野獸。他們告訴你不要使用它。并非對任何芯片的驅(qū)動它的操作都是沒有瑕疵的。
- 在XFree 4.0.3的nv.o有一個bug導(dǎo)致奇怪的顏色。
- ATI驅(qū)動在使用DGA完成之后要不只一次的切換顯示模式。
- 一些驅(qū)動無法切換會正常的分辨率(用Ctrl-Alt-小鍵盤+,-來手工切換)。
- 一些驅(qū)動顯示奇怪的顏色。
- 一些驅(qū)動錯誤報告他們映射到處理器地址空間中的顯存數(shù)量,這樣vo-dga將無法使用雙重緩沖(SIS?)。
- 一些驅(qū)動好像根本找不到一個可用的模式。在這種情況下,DGA驅(qū)動將crash并報告100000x100000的無效模式之類的東西...
- OSD只能在雙重緩沖開啟的時候才正常工作(否則會閃爍)。
SDL(Simple Directmedia Layer)基本上是一種統(tǒng)一的視頻/音頻接口。使用它的程序只要知道SDL,而不需要了解SDL實際上使用的視頻或音頻驅(qū)動。例如使用SDL的Doom移植能在svgalib,aalib,X,fbdev,和其他東西上使用,你僅需要用環(huán)境變量SDL_VIDEODRIVER規(guī)定(例如)使用的視頻驅(qū)動。嗯,至少在理論上。
在MPlayer中,我們使用它的X11驅(qū)動的軟件縮放功能,用于不支持XVideo的芯片/顯卡,直到我們做出我們自己的(更快,更好)的軟件縮放代碼。同時我們使用它的aalib輸出,但是現(xiàn)在我們自己的更合適的了。它的DGA模式比我們的好,直到最近?,F(xiàn)在明白了? :)
它對一些buggy的驅(qū)動/顯卡也有幫助,例如視頻跳躍(不是系統(tǒng)緩慢的問題),或者音頻延遲。
SDL視頻輸出支持在電影下面,(如果出現(xiàn))的黑條上顯示字幕。
這里是一些關(guān)于SDL輸出的控制選項:
-vo sdl:name
- 規(guī)定使用的sdl視頻驅(qū)動(例如aalib,dga,x11)
-ao sdl:name
- 規(guī)定使用的sdl音頻驅(qū)動(例如dsp,esd,arts)
-noxv
- 禁用XVideo硬件加速
-forcexv
- 嘗試強(qiáng)制XVideo加速
SDL控制鍵: |
|
F |
|
切換全屏/窗口方式 |
|
C |
|
循環(huán)切換可用的全屏方式 |
|
W與S |
|
*和/的映射(音量控制) |
已知的BUG:
- 在sdl:aalib控制臺驅(qū)動下按下的鍵將永遠(yuǎn)重復(fù)。(使用-vo aa!)它是SDL中的bug,我無法改變它(用SDL 1.2.1測試)。
- 不要在GUI中使用SDL!它不會像預(yù)想的那樣工作。
安裝
你必須安裝svgalib和它的開發(fā)包來使MPlayer編譯它的SVGAlib驅(qū)動(自動檢測,但是也能強(qiáng)制使用),別忘了編輯/etc/vga/libvga.config來配合你的顯卡&監(jiān)視器。
注意
一定不要用-fs選項,因為它將導(dǎo)致使用軟件縮放,速度會很慢,如果你確實需要,使用-sws 4
選項,質(zhì)量會有點差,但是無論如何它更快。
EGA(4BPP)支持
SVGAlib結(jié)合了EGAlib,使得MPlayer有可能用16種顏色播放任何電影,下列的配制中可以使用:
- EGA顯卡和EGA顯示器: 320x200x4bpp,640x200x4bpp,640x350x4bpp
- EGA顯卡和CGA顯示器: 320x200x4bpp,640x200x4bpp
bpp(每象素比特數(shù))的值必須手工設(shè)為4:
-bpp 4
電影可能必須被按比例縮小到EGA適合的模式:
-vop scale=640:350
或者
-vop scale=320:200
為做到這一點我們需要使用快速但低質(zhì)量的例程:
-sws 4
也許自動糾正長寬比的功能需要關(guān)閉:
-noaspect
注意:根據(jù)我的經(jīng)驗用-vop eq=-20:0
稍稍降低亮度可以在EGA屏幕上獲得最好的圖象質(zhì)量。在我的機(jī)器上我也要降低音頻采樣率,因為聲音在44kHz時很差:-srate 22050
.
你只有打開expand
濾鏡才能使用OSD和字幕。具體參數(shù)參見man page。
是否編譯FBdev目標(biāo)是在./configure期間自動檢測的。閱讀內(nèi)核源碼中的幀緩沖的文檔(Documentation/fb/*)來了解更多信息。
如果你的顯卡不支持VBE 2.0標(biāo)準(zhǔn)(較舊的ISA與PCI顯卡,諸如S3 Trio64),僅支持VBE 1.2(或者更老的?):嗯,VESAfb仍然是可用的,但是你將必須在啟動Linux之前裝載SciTech Display Doctor(從前叫UniVBE )。用DOS啟動盤或隨便什么。同時,別忘了注冊你的UniVBE ;))
FBdev輸出有些除了以前說過的參數(shù)外的附加參數(shù):
-fb
- 規(guī)定使用的幀緩沖設(shè)備(/dev/fb0)
-fbmode
- 使用的模式名(按照/etc/fb.modes文件)
-fbmodeconfig
- 模式的配置文件方式(默認(rèn)為/etc/fb.modes)
-monitor_hfreq
-monitor_vfreq
-monitor_dotclock
- 重要的參數(shù),參見
example.conf
如果你想要切換到某個具體模式,那么使用
mplayer -vm -fbmode (NameOfMode) filename
- -vm單獨使用將從/etc/fb.modes中選出最適合的模式。也可以與-x和-y選項一起使用。-flip選項只有當(dāng)電影的像素格式與視頻模式的像素格式相同時才支持。注意bpp的值,fbdev驅(qū)動將嘗試使用當(dāng)前值,如果你設(shè)定-bpp選項,那么就是那個值。
- -zoom選項不支持(軟件定標(biāo)太慢了)。-fs選項不支持。你不能使用8bpp(或者更少)的模式。
- 你有可能想要關(guān)掉光標(biāo):
echo -e '\033[?25l'
或setterm -cursor off
和屏幕保護(hù):setterm -blank 0
要重新開啟光標(biāo):echo -e '\033[?25h'
或setterm -cursor on
注意:使用VESA 幀緩沖時FBdev視頻方式不能改變,也不要要求這個功能,因為它不是由于MPlayer自身的限制。
這一段是關(guān)于Matrox G200/G400/G450/G550 BES (Back-End Scaler)的支持,mga_vid內(nèi)核驅(qū)動。它現(xiàn)在是由A'rpi開發(fā),它有三重緩沖的硬件VSYNC支持。它在幀緩沖控制臺下和X下都可以工作。
警告:在非Linux系統(tǒng)(在FreeBSD上測試過)上,要使用VIDIX實現(xiàn)mga_vid!
安裝:
- 為了使用它,你首先必須編譯mga_vid.o:
cd drivers
make
- 然后創(chuàng)建
/dev/mga_vid
設(shè)備:
mknod /dev/mga_vid c 178 0
然后這樣加載驅(qū)動
insmod mga_vid.o
- 你應(yīng)該使用
dmesg
命令檢查顯存大小的檢測結(jié)果。如果不對,那么使用mga_ram_size選項(先rmmod mga_vid
),以MB為單位指定顯卡的顯存大?。?
insmod mga_vid.o mga_ram_size=16
- 為了使它在需要時自動地加載/卸載,首先在
/etc/modules.conf
的末尾加上下面這一行:
alias char-major-178 mga_vid
然后把mga_vid.o
模塊復(fù)制到/lib/modules/<kernel version>/somewhere
下的適當(dāng)位置。
然后運(yùn)行
depmod -a
- 你現(xiàn)在需要(重新)編譯MPlayer,
configure
將檢測到/dev/mga_vid
并且編譯'mga'驅(qū)動。如果你使用matroxfb控制臺, 在MPlayer中用-vo mga
使用它,或者在XFree86 3.x.x或者4.x.x下的使用-vo xmga
。
mga_vid驅(qū)動能與Xv協(xié)同工作。
可以閱讀/dev/mga_vid
設(shè)備文件(例如cat /dev/mga_vid
)來查找一些信息,也可以通過寫它來調(diào)整亮度:echo "brightness=120" > /dev/mga_vid
這個驅(qū)動使用內(nèi)核的tdfx幀緩沖驅(qū)動來利用YUV加速播放電影。你需要一個支持tdfxfb的內(nèi)核,然后用./configure --enable-tdfxfb
重新編譯
MPlayer支持使用OpenGL顯示電影,但是如果你的平臺/驅(qū)動支持xv,就象使用linux的PC機(jī)那樣,就使用xv,OpenGL的效果與它相比相當(dāng)壞。如果你只有沒有xv支持的X11程序,OpenGL是可用的選擇。
不幸的是并非所有驅(qū)動都支持這個特性。Utah-GLX驅(qū)動(針對XFree86 3.3.6)對所有顯卡都支持它。訪問http://utah-glx.sourceforge.net了解安裝它的細(xì)節(jié)問題。
XFree86(DRI) 4.0.3以上支持Matrox和Radeon顯卡的OpenGL,4.2.0或更新版本支持Rage128。訪問http://dri.sourceforge.net以尋找下載和安裝指導(dǎo)。
AAlib 是一個用于在文本模式下顯示圖形的庫,它使用強(qiáng)大的ASCII渲染器。有許多程序提供對它的支持,像Doom,Quake等等。 MPlayer包含一個針對它的實用的驅(qū)動。如果./configure發(fā)現(xiàn)安裝了aalib,aalib的libvo驅(qū)動將被編譯。
你能在AA窗口中使用一些控制鍵來改變渲染參數(shù): |
|
1 |
|
減少對比度 |
|
2 |
|
增加對比度 |
|
3 |
|
減少亮度 |
|
4 |
|
增加亮度 |
|
5 |
|
打開/關(guān)閉快速渲染 |
|
6 |
|
設(shè)置抖動方式(不抖動, 誤差分布算法, Floyd Steinberg算法) |
|
7 |
|
反轉(zhuǎn)圖象 |
|
a |
|
轉(zhuǎn)換aa和MPlayer的控制鍵 |
下列的命令行選項能夠使用:
-aaosdcolor=V
- 改變OSD顏色
-aasubcolor=V
- 改變字幕顏色
V的值可以是:(0/正常,1/暗色,2/粗體,3/粗體字體,4/反轉(zhuǎn),5/特殊)
AAlib自身也提供了大量的選項。這里是一些重要的:
-aadriver
- 設(shè)置推薦aa的驅(qū)動( X11,curses,Linux )
-aaextended
- 使用所有的256個字符
-aaeight
- 使用8比特的ASCII
-aahelp
- 列出所有的aalib選項
注意:渲染效果是十分消耗CPU的,特別是使用AA-on-X(在X上使用aalib),在標(biāo)準(zhǔn)的非幀緩沖控制臺上的CPU消耗是最小的,用SVGATextMode設(shè)置一個大的文本模式,然后再欣賞電影!(大力神顯卡的第二個接口就不錯:))(但我建議你用-vop 1bpp
選項在hgafb上獲得圖象;)
如果你的計算機(jī)速度不足以渲染所有幀就使用-framedrop
選項
在終端中播放電影時使用Linux驅(qū)動你將會得到更好的速度和畫面質(zhì)量,不要用curses(-aadriver Linux
)。但是為此你需要/dev/vcsa<terminal>
的寫權(quán)限。那是aalib不能自動檢測的,但vo_aa會嘗試搜索最佳模式,進(jìn)一步的調(diào)節(jié)問題參見http://aa-project.sourceforge.net/tune/。
這個驅(qū)動被設(shè)計并引入作為一個通用的驅(qū)動用于任何有VESA VBE 2.0兼容的BIOS的顯卡。這驅(qū)動的另一個優(yōu)點是能試圖迫使在其上進(jìn)行電視輸出。
VESA BIOS EXTENSION(VBE)3.0版 日期:1998年九月16日(第70頁)說:
雙重控制器設(shè)計
VBE 3.0支持雙重控制器設(shè)計基于如下假設(shè),由于兩個控制器一般是同樣的OEM提供的,被同一塊顯卡上的一個的BIOS ROM,所以可以對程序隱藏有兩個控制器在作用的事實。這限制了同時的使用獨立的控制器的功能,但是允許VBE 3.0發(fā)布前的程序能正常工作。VBE函數(shù)00h(返回控制器信息)返回經(jīng)過合并的兩個控制器的信息,包括經(jīng)過合并的可供使用的方式的列表。當(dāng)程序選擇一個方式時,相應(yīng)的控制器被激活。然后剩下的VBE函數(shù)都作用在激活的控制器上。
因此,你有可能通過這個驅(qū)動得到電視輸出。
(我猜想電視至少經(jīng)常地是使用獨立的頭或者獨立的輸出)。
優(yōu)點
- 即使Linux不能識別你的視頻硬件你或許還能看電影。
- 你不需要在你的Linux上安裝任何圖形相關(guān)的東西(像X11(或者叫XFree86),fbdev諸如此類)。這個驅(qū)動能從文本方式運(yùn)行。
- 你有機(jī)會獲得可用的電視輸出。(至少已知ATI的顯卡可以)。
- 這個驅(qū)動調(diào)用int 10h中斷因此它不是模擬器 -- 它實時調(diào)用真正的BIOS中的真正的功能。(效果不錯 -- 按vm86方式)。
- 你可以對它使用Vidix,這樣能加速視頻顯示同時也加快電視輸出!(ATI顯卡推薦)
- 如果你有VESA VBE 3.0+,而且在什么地方(配置文件,或者命令行)設(shè)置了
monitor_hfreq
, monitor_vfreq
, monitor_dotclock
你將獲得可能的最高的刷新率。 (使用一般的計時公式)。要啟用這個特性你必須設(shè)定你的顯示器的所有選項。
缺點
- 它只能在x86系統(tǒng)上工作。
- 它只能由root使用。
- 它目前只能用在Linux上。
使用GCC 2.96就不要使用這個驅(qū)動!它不能工作!
可用于VESA命令行選項
-vo vesa:opts
- 當(dāng)前能識別的:dga強(qiáng)迫dga方式,nodga禁用dga方式。在dga模式下你可以通過使用
-double
選項來使用雙重緩沖。注意:你能 省略這些參數(shù)來開啟自動檢測dga方式。
已知的問題和繞過辦法
- 如果你在你的Linux機(jī)器上安裝了NLS并且從文本方式運(yùn)行VESA驅(qū)動,那么MPlayer終止后你將看到ROM字體而不是本地的字體。你可以重新加載本地的字體例如在Mandrake中使用setsysfont。
(提示:相同的工具也用于fbdev的地方化)。 - 一些Linux顯卡驅(qū)動不更新在DOS內(nèi)存中的活動的BIOS模式。因此如果你有這樣問題 -- 總是只從文本方式使用VESA驅(qū)動。否則,文本方式(#03)總要被激活接著你將需要重起你的計算機(jī)。
- 通常在終止VESA驅(qū)動之后你將看到黑屏。為了把你的屏幕回復(fù)原狀 -- 只要切換到其它控制臺(通過按Alt-Fx)然后再用同樣的方法切換回你以前的控制臺。
- 為了得到可用的電視輸出你需要在啟動導(dǎo)入你的電腦之前將電視連接器插上,因為視頻BIOS只在自舉過程中進(jìn)行一次初始化。
盡量避免使用它。輸出到X11(使用共享內(nèi)存擴(kuò)展),完全沒有硬件加速。支持(MMX/3DNow與SSE加速,但是仍然緩慢的)軟件縮放,使用選項-fs -zoom
。大多數(shù)顯卡有硬件縮放支持,使用-vo xv
對他們輸出,或者對于Matroxes使用-vo xmga
。
問題在于大多數(shù)顯卡的驅(qū)動在第二個接口/電視接口上不支持硬件加速。在那些情況下,你將看到綠色和藍(lán)色的彩色窗口而不是電影。這是這個驅(qū)動起作用的地方,但是你需要強(qiáng)大的CPU來使用軟件縮放。不要使用SDL驅(qū)動的軟件輸出+縮放,它的圖象質(zhì)量比較差!
軟件縮放是十分緩慢的,你最好嘗試用改變視頻模式的方法代替它。它十分簡單。參見DGA一節(jié)的modelines,并且將他們插入到你的XF86Config。
- 如果你有XFree86 4.x.x -- 使用
-vm
選擇。它將切換到適合你的電影的分辨率。如果你的XFree86不是: - 使用XFree86 3.x.x -- 你必須使用CTRL-ALT-plus和minus控制鍵循環(huán)可用的分辨率。
如果你調(diào)整不到你設(shè)定的模式,檢查XFree86的輸出。有些驅(qū)動不能使用低分辨率視頻方式所需要的低的像素頻率。
引言
VIDIX是VIDeo Interface for *niX的縮寫。
VIDIX被設(shè)計和引入作為快速的用戶空間驅(qū)動的接口提供類似mga_vid為了Matrox顯卡提供的這樣視頻性能的。它也十分易于移植。
這個接口被設(shè)計來作為一個將存在的視頻加速接口(就是mga_vid,rage128_vid,radeon_vid,pm3_vid )統(tǒng)一到一個固定的系統(tǒng)的嘗試。它給芯片提供BES(BackEnd scalers)或OV(Video Overlays)之類的高層接口。它不為那些圖像服務(wù)器該做的事情提供底層接口。 (我不想跟X11開發(fā)組在切換圖像模式上競爭)。即這接口的主要目的是充分提高視頻播放的速度。
用法
- 你能使用獨立的視頻輸出驅(qū)動:
-vo xvidix
這個驅(qū)動被設(shè)計為使用VIDIX技術(shù)的X11的前端。它要求X服務(wù)器而且僅僅只能在X服務(wù)器下工作。注意,由于它繞過X的驅(qū)動直接訪問硬件,顯存中的暫存的圖像可能被破壞。你可以通過設(shè)置XF86Config中的device部分的"VideoRam"選項限制X使用的顯存大小來避免這種情況。你應(yīng)該設(shè)置為你的顯卡上顯存大小減去4MB。如果你的顯存小于8MB,你可以設(shè)置screen部分的"XaaNoPixmapCache"選項。 - 你能在若干視頻的輸出驅(qū)動中使用VIDIX副驅(qū)動,諸如:
-vo vesa:vidix
(只用于Linux)和-vo fbdev:vidix
實際上什么視頻輸出驅(qū)動與
VIDIX配合使用并不重要。
要求
- 視頻顯卡應(yīng)該工作于圖形方式(我所以寫應(yīng)該只是因為我在文本方式下測試了它 -- 它能工作但是輸出效果很可怕 ;) 對它還是使用AAlib)。
注意:每個人能通過注釋掉vo_vesa驅(qū)動的模式切換部分的方式嘗試這個技巧。 - MPlayer的視頻輸出驅(qū)動應(yīng)該知道活動的視頻方式和能夠告訴達(dá)到VIDIX副驅(qū)動服務(wù)器的一些視頻特性。
使用方法
當(dāng)VIDIX被用作副驅(qū)動時(-vo vesa:vidix
)視頻方式的配置由視頻輸出設(shè)備執(zhí)行(簡單來說就是vo_server)。因此,你能對MPlayer使用與vo_server同樣的命令行指令。此外,它能使用-double
作為全局的參數(shù)。 (我建議至少在使用ATI顯卡時對VIDIX使用這個參數(shù))。
至于-vo xvidix
:目前它能識別下列的選項: -fs -zoom -x -y -double
。
你還能在命令行中使用第三個副參數(shù)直接制定VIDIX的驅(qū)動:
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
但這有點危險,所以你不應(yīng)該這么做。在這種情況下,被指定的驅(qū)動會被強(qiáng)制使用而其結(jié)果是無法預(yù)計的(它可以把你的計算機(jī)鎖死)。只有在你絕對確信它能工作,而MPlayer沒有自動選擇它時,你才能這么做。請把情況報告給開發(fā)者。正確的使用方法是使用沒有參數(shù)的VIDIX來使用驅(qū)動的自動檢測。
VIDIX是一項新技術(shù)所以它極有可能在你的系統(tǒng)上不能正常工作。在這種情況下,你唯一的解決辦法是移植它(主要是libdha)。但它在X11能正常工作的那些系統(tǒng)的上有正常工作的希望。
因為VIDIX需要對硬件直接訪問,所以你或者以root運(yùn)行它,或者給MPlayer的二進(jìn)制程序設(shè)置SUID位(警告:這有安全風(fēng)險)?;蛘?,你可以使用一個特別的內(nèi)核模塊,像這樣:
- 下載svgalib的開發(fā)版本(比如1.9.17),
或者
從這里.下載一個Alex做的供MPlayer使用的版本(不需要svgalib的源代碼就可以編譯)。 - 編譯
svgalib_helper
目錄中的模塊(如果你是從svgalib的網(wǎng)頁上下載的源代碼,可以在svgalib-1.9.17/kernel/
目錄下找到它),然后insmod。 - 把
svgalib_helper
目錄移到mplayer/main/libdha/svgalib_helper
. - 如果你是從svgalib的站點下載的源代碼需要:刪掉
libdha/Makefile
中包含"svgalib_helper"字符串的CFLAGS行前面的注釋號。 - 重新編譯安裝libdha.
目前大部分ATI顯卡都實現(xiàn)了本地支持,從Mach64到最新的Radeon。
編譯生成兩個二進(jìn)制文件:用于Radeon的radeon_vid
和用于Rage 128顯卡的rage128_vid
。你可以強(qiáng)制使用其中一個或者讓VIDIX系統(tǒng)自動載入所有可用的驅(qū)動。
Matrox G200,G400,G450和G550據(jù)報告可以工作。
這個驅(qū)動支持視頻均衡器比且應(yīng)該幾乎和Matrox幀緩沖一樣快。
有一個可用于Trident Cyberblade/i1芯片的驅(qū)動,它們一般出現(xiàn)在VIA的Epia主板上。
這個驅(qū)動有Alastair M. Robinson編寫并維護(hù),他在他的主頁上提供他的最新版本的驅(qū)動下載。這個驅(qū)動會很快被加到MPlayer中,所以CVS應(yīng)該已經(jīng)包含最新驅(qū)動了。
盡管有一個用于3DLabs GLINT R3和Permedia3芯片的驅(qū)動,但沒有人測試過,所以歡迎報告信息。
"DirectFB是設(shè)計用于嵌入系統(tǒng)的圖形庫。它能利用最小的資源開銷提供最大的硬件加速效果。" -- 引自http://www.directfb.org.
我在這一部分中將略去DirectFB的特性。
盡管MPlayer不是DirectFB支持的"video provider",這個輸出驅(qū)動將開啟使用DirectFB的視頻播放。這將 -- 當(dāng)然 -- 實現(xiàn)加速,在我的Matrox G400上DirectFB的速度跟XVideo一樣。
總是盡量使用最新的DirectFB。你可以在命令行中通過使用-dfbopts
選項設(shè)置DirectFB的選項。層選擇可以通過副驅(qū)動模式實現(xiàn),例如:-vo directfb:2
(默認(rèn)使用layer -1:自動選擇)
請閱讀DirectFB的一般介紹部分來了解概要信息。
這個視頻輸出驅(qū)動將開啟Matrox G400/G450/G550顯卡上的CRTC2(第二個接口),顯示獨立于第一個接口的視頻。
使其工作的方法可以在技術(shù)部分和直接從Ville Syrjala的主頁獲得。
注意:我們沒能讓它工作,但是有人做到了。不管怎樣,將CRTC2代碼移植到mga_vid的工作正在進(jìn)行中。
MPlayer支持Siemens,Technotrend,Galaxis或Hauppauge提供的使用Siemens DVB芯片的顯卡。最新的DVB驅(qū)動在Linux TV site。如果你想要軟件解碼你需要一個至少1GHz的CPU。
Configure應(yīng)該能檢測到你的DVB顯卡。如果它沒有,使用下列命令強(qiáng)制使用
./configure --enable-dvb
如果你在非標(biāo)準(zhǔn)的路徑下有ost頭文件,使用下列命令設(shè)置路徑
./configure --with-extraincdir=<DVB source directory>/ost/include
然后正常編譯安裝。
使用方法
硬件解碼(播放標(biāo)準(zhǔn)的MPEG1/2文件)使用下列命令:
mplayer -ao mpegpes -vo mpegpes file.mpg|vob
MPEG1的軟件解碼或轉(zhuǎn)化為其他格式使用下列命令:
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格式。你必須對其它的高度進(jìn)行重新縮放,通過在-vop
選項中使用scale=width:height
指定你想要寬度和高度。DVB顯卡可以接受多種寬度,像720,704,640,512,480,352等等,而且在水平方向上可以硬件縮放,所以大多數(shù)情況下你不需要作水平縮放。例如對于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插件的擴(kuò)展特性。因此,不要使用expand=w:h
或者expand=w:h:x:y
,使用expand=w:h:x:y:1
(第5個參數(shù):1
將開啟OSD渲染)。你也許想要把圖象向上移動一點來給字幕更大的黑色區(qū)域。如果你也想要移動字幕,因為他們可能在你電視屏幕的外面,使用-subpos <0-100>
來調(diào)整它(-subpos 80
是個不錯的選擇)。
為了在PAL電視上播放非25fps的電影或者因為CPU太慢,加上-framedrop
選項。
為了保持DivX文件的寬高比并獲得最理想的縮放參數(shù)(硬件水平縮放和軟件垂直縮放并且保持正確寬高比),使用最新的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轉(zhuǎn)換(部分的解壓)。
MPlayer支持使用Creative DXR2卡的硬件加數(shù)功能
首先你要正確安裝DXR2的驅(qū)動。你可以在DXR2資源中心這個站點找到驅(qū)動和安裝方法。
用法
-vo dxr2
- 啟動TV輸出
-vo dxr2:x11
或-vo dxr2:xv
- 啟動X11的疊加輸出
-dxr2 <option1:option2:...>
- 這個選項用來控制DXR2驅(qū)動
DXR2使用的疊加芯片質(zhì)量很差但它默認(rèn)的設(shè)置應(yīng)該對所有人都適用。OSD可能可以通過使用colorkey的繪制方法在疊加(不能用于TV)輸出中實現(xiàn)。使用默認(rèn)的colorkey設(shè)定你可能獲得各種效果,一般情況下你可能看到colorkey環(huán)繞在字符周圍或者其它可笑的效果。但只要你適當(dāng)?shù)恼{(diào)節(jié)colorkey的設(shè)定你應(yīng)該可以獲得可接受的效果。
默認(rèn)選項參見manpage。
MPlayer支持Creative DXR3和Sigma Designs Hollywood Plus卡的硬件加速播放。這些卡都使用SigmaDesigns的 em8300 MPEG解碼芯片
首先,你將需要正確地安裝DXR3/H+的驅(qū)動,版本至少0.12.0或者更新的。你能在DXR3 & Hollywood Plus for Linux的站點找到驅(qū)動和安裝指導(dǎo)。Configure應(yīng)該自動檢測到你的顯卡,編譯應(yīng)該沒有任何問題。
用法
-vo dxr3:prebuf:sync:norm=x:<device>
overlay
激活overlay而不是電視輸出。你必須有一個正確配置的的overlay設(shè)置來正常工作。最簡單的配置overlay 的方法是先運(yùn)行autocal。然后運(yùn)行mplayer使用dxr3輸出而不打開overlay,運(yùn)行dxr3view。在dxr3view中你可以調(diào)整overlay設(shè)置并實時看到效果,可能這個特性在將來會被MPlayer的GUI支持。當(dāng)正確設(shè)置了overlay之后你就不再需要dxr3view了。
prebuf
打開預(yù)緩沖。預(yù)緩沖是em8300的一個特性,是它可以同時處理一幀以上的視頻。這表示當(dāng)你開啟預(yù)緩沖(默認(rèn)的)運(yùn)行時,MPlayer將試圖保持視頻緩沖區(qū)里面總是填滿數(shù)據(jù)的。如果你是用的一臺比較慢的機(jī)器MPlayer 大概會占用接近100%的CPU。這在你播放純MPEG流(例如DVD,SVCD之類)的時候尤其明顯,因為MPlayer不需要把它重新編碼成 MPEG所以他會以很高的速度填充緩沖區(qū)。
當(dāng)不用預(yù)緩沖運(yùn)行時em8300對CPU的占用率十分敏感,所以建議你打開MPlayer的-framedrop
選項來防止進(jìn)一步的不同步
sync
將打開新的同步機(jī)制。這個目前是一個試驗性的特性。打開這個同步特性后em8300的內(nèi)部時鐘將時鐘被監(jiān)視,如果它開始偏離MPlayer的時鐘它將被重新設(shè)置從而導(dǎo)致丟掉任何滯后的幀。
norm=x
用來設(shè)置DXR3卡的電視制式而避免使用em8300setup之類的外部工具。可用的制式有5 = NTSC,4 = PAL-60, 3 = PAL。特別的制式是2(自動選擇使用PAL/PAL-60)和1(自動選擇使用PAL/NTSC)因為他們通過測試電影的幀速率來決定是哪個制式。 norm = 0(默認(rèn)的)不改變現(xiàn)在的制式。
<device>
= 使用的設(shè)備號如果你有超過一塊em8300顯卡。
任何這些選擇都可以被省略
:prebuf:sync
在播放DivX電影時似乎工作的很好。有人報告過在播放MPEG1/2文件時用prebuf
選項有問題。你可能會先嘗試不加任何參數(shù),如果你遇到同步的問題,或者DVD字幕的問題,試試:sync
。
-ao oss:/dev/em8300_ma-X
- 音頻輸出,在其中
X
是設(shè)備號(為0如果只有一塊顯卡)。
-aop list=resample:fout=xxxxx
- em8300不能工作在采樣率低于44100Hz的情況。如果采樣率在44100Hz之下,在44100Hz和48000Hz中選擇最接近的一個。例如對使用22050Hz的電影,因為44100Hz/2 = 22050,所以使用44100Hz,如果是24000Hz就使用48000Hz,因為48000Hz/2 = 24000如此等等。這對于數(shù)字音頻輸出不起作用(
-ac hwac3
)。
-vop lace/fame
- (自動插入)要在em8300上觀看非MPEG的內(nèi)容(例如DivX或者RealVideo)你必須設(shè)置一個libavcodec(lavc)或者libfame(fame)之類的MPEG1視頻濾鏡目前l(fā)avc有更好的速度還有更高的圖像質(zhì)量,除非你使用時遇到問題,建議你使用他。
-vop lavc/fame
的進(jìn)一步的信息可以參考man page。
強(qiáng)烈推薦使用lavc。目前沒有辦法設(shè)置em8300的fps,這表示它將固定在29.97fps。因為這個強(qiáng)烈推薦你使用-vop lavc=<quality>:25
,特別是當(dāng)你使用prebuffering的時候。那么為什么是25而不是29.97?嗯,原因是當(dāng)使用29.97 的時候圖像有一些跳躍。目前我們還不知道原因。如果你把它設(shè)置成25到27之間的值是圖像就穩(wěn)定了。目前我們能做的就是接受這個事實。
-vop expand=-1:-1:-1:-1:1
- 盡管DXR3的驅(qū)動能把一些OSD放到MPEG1/2/4的視頻上,它比MPlayer的傳統(tǒng)的OSD的質(zhì)量差的多,并且還有一些刷新的問題。上面的命令行將先把輸入的視頻轉(zhuǎn)換成MPEG4(這是必須的,對不起),然后使用一個擴(kuò)展濾鏡,不進(jìn)行任何縮放(-1:默認(rèn)值),只是把正常的OSD 放到圖像上(最后的那個"1"的作用)。
-ac hwac3
- em8300支持使用芯片的數(shù)字音量輸出來播放AC3音頻(環(huán)繞音效)。閱讀硬件AC3來了解AC3的更進(jìn)一步的信息
這是用于那些MJPEG視頻捕捉/播放卡(經(jīng)過DC10+和Buz的測試,對LML33,DC10應(yīng)該也能工作)的顯示驅(qū)動(-vo zr
)。驅(qū)動通過把每幀圖像編碼成為jpeg格式和然后把它發(fā)送到顯卡來工作。在jpeg編碼時要使用libavcodec,而且必須使用。
用特殊的
cinerama模式,你可以通過兩個投影儀和兩塊MJPEG卡用真正的寬銀幕方式觀看電影。根據(jù)分辨率和質(zhì)量的設(shè)置,這個驅(qū)動可能要求極強(qiáng)的CPU處理能力,如果你的機(jī)器太慢的話記住使用
-framedrop
,注意:我的AMD K6-2 350MHz(加上
-framedrop
選項)足夠看VCD尺寸的東西和經(jīng)過縮小的電影。
這個驅(qū)動需要一個內(nèi)核驅(qū)動,可以在http://mjpeg.sourceforge.net找到,你必須先讓它工作。MJPEG卡的存在能被configure腳本自動檢測到,如果自動檢測失敗,用這個命令強(qiáng)制檢測
./configure --enable-zr
驅(qū)動的輸出可以用一些選項設(shè)置,在man page里面可以找到一份長長的可用選項的描述,一個比較短的選項列表可以運(yùn)行這個命令獲得
mplayer -zrhelp
縮放和OSD (on screen display)這類功能這個驅(qū)動不能處理,但可以用視頻濾鏡來完成,例如你有一個分辨率是512x272
的電影,而你希望用你的DC10+用全屏幕觀看,主要有三種可能的方法,你可以把電影寬度縮放到768
,384
,或者192
。考慮到運(yùn)行速度和質(zhì)量的原因,我會選擇使用快速二次線型軟件縮放濾鏡把電影縮放到384x204
。命令行是這樣的
mplayer -vo zr -sws 0 -vop scale=384:204 movie.avi
畫面的切割可以用crop
濾鏡也可以用驅(qū)動自己完成。假設(shè)電影太寬了,在你的機(jī)器上顯示不了,那么你會想要用 -zrcrop
來切割電影的寬度,那么你應(yīng)該輸入下面的命令
mplayer -vo zr -zrcrop 720x320+80+0 benhur.avi
如果你想要使用
crop
濾鏡,你可以運(yùn)行
mplayer -vo zr -vop crop=720:320:80:0 benhur.avi
多個-zrcrop
就會調(diào)用cinerama模式,你可以把電影投射到幾個電視或者投影儀上來制造一個大銀幕,設(shè)想你有兩個投影儀,左邊那個連到你的機(jī)器的/dev/video1
而右邊那個連到你的機(jī)器的/dev/video0
上的DC10+上,電影的分辨率是704x288
,同時假設(shè)你希望右邊的投影儀顯示黑白效果而右邊的投影儀顯示的用質(zhì)量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
你發(fā)現(xiàn)在第二個-zrcrop
之前出現(xiàn)的選項只作用于DC10+,而第二個-zrcrop
之后的選項作用于你的機(jī)器。在cinerama中能使用的MJPEG卡最多為4塊,所以你可以制作一片2x2
的視頻墻
最后還有一個重要的注意事項:不要在播放期間在播放設(shè)備上啟動或停止XawTV,它將導(dǎo)致你的計算機(jī)崩潰。然而,首先啟動XawTV, 然后啟動MPlayer,等MPlayer播放結(jié)束,然后停止XawTV是沒有問題的。
這個驅(qū)動可以使用Blinkenlights UPD兼容協(xié)議播放。如果你不知道Blinkenlights是什么,你就不需要這個驅(qū)動。
在Linux下你有2種方法使G400的電視輸出工作:
重要提示:對于Matrox G450/G550的電視輸出方法看下一節(jié)!
- XFree86:使用能在Matrox的站點獲得的驅(qū)動和HAL模塊。這將在電視上實現(xiàn)X。
這種方法不給你加速播放,不像Windoze! 第二個輸出頭只有YUV幀緩沖,BES(Back End Scaler,在G200與G400與G450與 G550顯卡上的YUV縮放)無法用于它!windows的驅(qū)動以某種方式解決了這個問題,有可能是通過使用3D引擎來縮放,并用YUV幀緩沖顯示圖像。如果你確實想要使用X,使用-vo x11 -fs -zoom
選項,但這將十分緩慢,而且會開啟Macrovision版權(quán)保護(hù) (你能使用這個perl腳本繞過Macrovision。 - 幀緩沖:在2.4的內(nèi)核中可以使用matroxfb模塊而2.2的內(nèi)核中沒有電視輸出的特性,所以對它是沒有用的。你必須在編譯時開啟所有與matroxfb相關(guān)的特性(除了MultiHead之外),并且把他們?nèi)烤幾g成模塊! 你還需要開啟I2C功能。
- 進(jìn)入
TVout/matroxset
然后運(yùn)行make
。把matroxset
安裝到你的PATH中的某個地方。 - 如果你沒有裝
fbset
,進(jìn)入TVout/fbset
然后運(yùn)行make
。把fbset
安裝到你的PATH中的某個地方。 - 然后進(jìn)入到MPlayer源碼目錄中的
TVout/
子目錄,以root執(zhí)行./modules
。你的文本模式的控制臺將進(jìn)入到幀緩沖模式(沒有方法改回來!)。 - 下一步,修改并運(yùn)行
./matroxtv
腳本。這將給你提供一個十分簡單的菜單。按2和ENTER。現(xiàn)在你的顯示器和電視上應(yīng)該有一樣的圖像。如果電視(默認(rèn)PAL)圖畫有些奇怪的條紋,腳本不能夠正確地設(shè)置分辨率(使用缺省的640x512)。試試菜單里的其他分辨率或者/和試試fbset。
Yoh。接著的任務(wù)是使tty1上的光標(biāo)(或者別的什么)消失,和關(guān)閉屏幕抑制顯示。執(zhí)行下列的命令:
echo -e '\033[?25l'
或者setterm -cursor off
setterm -blank 0
你可能想把上述內(nèi)容腳本,同時也清屏.. 讓光標(biāo)出現(xiàn)的命令是:
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還要好)!
制作一個Matrox電視輸出線
G400的電纜線:CRTC2連接器的第4根針是復(fù)合視頻信號. 基線是第6,第7和第8根針。(Bal醶s R醕z提供信息)
G400的電纜線:CRTC2連接器的第1根針是復(fù)合視頻信號. 基線是第5,第6,第7和第15根針。(Bal醶s R醕z提供信息)
這些顯卡的電視輸出支持最近剛被引入,而且還沒有進(jìn)入內(nèi)核的主流。據(jù)我所知目前不能使用mga_vid 因為G450/G550的驅(qū)動只能工作在一種配置下面:第一個CRTC芯片(有更多特性)接第一個display(顯示器),第二個 CRTC(沒有BES -- BES的解釋看上面G400的部分)接電視上,所以你目前只能使用MPlayer的 fbdev的輸出設(shè)備。
目前第一個CRTC不能傳送到第二個頭。內(nèi)核的matroxfb驅(qū)動的作者 -- Petr Vandrovec -- 可能正在努力支持它,使用把第一個CRTC的輸出同時顯示在兩個頭上的方法,像目前G400推薦的一樣,看上面的部分。
需要的內(nèi)核補(bǔ)丁和howto的細(xì)節(jié)可以從http://www.bglug.ca/matrox_tvout/下載。
引言
ATI目前不想對他的任何一種電視輸出芯片提供Linux下的支持,由于他們授權(quán)的Macrovision技術(shù)。
ATI顯卡在Linux上電視輸出的支持情況
在其它顯卡上,只能使用VESA驅(qū)動,沒有VIDIX可用。但需要強(qiáng)大的CPU。
你唯一需要做的事情 -- 在啟動你的電腦之前插上電視連接器的插頭因為視頻BIOS只在自舉期間初始化一次。
查閱這個網(wǎng)址。
首先,你必須從http://nvidia.com下載封閉源碼的驅(qū)動,我不會描述安裝和配置的過程因為它不屬于這篇文檔的范圍。
當(dāng)XFree86, XVideo, 和3D加速都正常工作之后,根據(jù)下面的例子(改寫成適合你的顯卡/電視)編輯你的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
出處:http://web.njit.edu/all_topics/Prog_Lang_Docs/html/mplayer/Chinese/video.html