2009年5月7日 星期四

Mplayer播放1080p的影片

之前看1080p(x264)的影片,都還有些頓頓的,都已經雙核心的CPU了,竟然還播不動。後來為了要讓Mplayer可以使用硬體解碼,將解碼的動作交給顯示卡,上網找了很多資料,才發現原來Nvidia已經有提供API可以讓Mplayer使用Nvidia的顯示卡來解碼,而這東西就叫做VDPAU (Video Decode and Presentation API for Unix)

在Ubuntu上,要讓Mplayer支援VDPAU很簡單,只要在套件庫裡面加入PPA for rvm4000的來源,然後重新安裝Mplayer就可以搞定,實在是輕鬆愉快。
deb http://ppa.launchpad.net/rvm4000/ppa/ubuntu jaunty main
deb-src http://ppa.launchpad.net/rvm4000/ppa/ubuntu jaunty main

而在ArchLinux上呢,其實也沒有很難,AUR裡面已經有人做好了,只要使用yaourt去安裝就行了,但是要先手動解決套件的衝突,因為mplayer-vdpau需要libdvdnav-new和libdvdread-new這兩個套件,可是這兩個套件卻與舊的libdvdnav和libdvdread衝突,所以先移掉libdvdnav和libdvdread,這時候會發現連VLC(DVD選單支援度最高的影片播放軟體)也被移除了 XD,沒關係,等一下再裝回來就好。解決了衝突的問題,就可以順利的編譯mplayer-vdpau了。
$ yaourt -S mplayer-vdpau
or
$ yaourt -S mplayer-vdpau-nogui

mplayer-vdpau在AUR上被標示Out of Date,不過編出來的Mplayer似乎是svn最新的版本,若不放心的話可以安裝mplayer-vdpau-nogui,這個版本目前還有在更新。

安裝完mplayer-vdpau/mplayer-vdpau-nogui之後,就能在SMPlayer的Video Output的地方選擇vdpau,然後在進階→mplayer的選項裡面,填上
-vc ffh264vdpau,ffmpeg12vdpau,ffvc1vdpau,ffwmv3vdpau,
這樣就能使用VDPAU讓硬體去解碼了,若要確定是否為硬體解碼,看CPU使用率就知道了,幾乎是零。

雖然使用硬體解碼看起來好像比軟體解碼厲害很多,但是不知道為啥,只要畫面移動比較快時,就會有水平線條得情況產生,我一直以為這是顯示卡驅動的問題。不過就在今天,不小心發現了Mplayer使用軟體解1080p看起來也是很順暢,和之前在Ubuntu上看時完全是不一樣的結果,在Ubuntu上使用軟體解1080p的影片,不知道為啥就是很慢,慢到會覺得是一片一片的在播放。雖然使用軟體解碼時,CPU使用率高,但是誰在乎呢?影片順暢最重要阿!所以暫時跟VDPAU說掰掰了 XD