Linux下用nvidia显卡实现硬解码的方法
目前在Linux 系統下,NVIDIA 已經提供了官方的高清播放支持。由于高清視頻文件壓縮率比較高,所以在播放時,解碼速度一定要快,才能夠流暢的播放。所以對CPU 的要求比較高,CPU 占用率比較高。為了解決這個問題,目前的顯卡廠家都在顯卡核心GPU 中嵌入了部分視頻解碼格式的支持,來希望能夠釋放CPU ,來保證系統的順利運行。只是要釋放CPU ,實現GPU 解碼高清視頻,不僅需要GPU 的支持,還需要驅動和播放軟件共同合作來將視頻播放引導到GPU 上去,由GPU 解碼。
在Windows 系統下,NVIDIA 的高清視頻解碼驅動早就提供了,而在Linux 系統下,是在其180 版本開始的驅動中才正式支持了高清視頻解碼支持。并向Mplayer 提供了補丁,要求Mplayer 的視頻輸出模式改為VDPAU (VDPAU 的全稱是:Video Decode and Presentation API for Unix (Unix 系統視頻解碼和呈現API ))。同時提供了一些硬解碼格式的視頻解碼器,來引導視頻流通過GPU 來解碼,以便釋放CPU 。
VDPAU 支持硬件解碼MPEG-1 、MPEG-2 、H.264 和VC-1 格式,也支持對已解碼視頻進行一些后期處理特殊效果,如反交錯、降噪等。硬件上支持GeForce 8 以上顯卡,系統支持Linux 、FreeBSD 和Solaris 。
現將Linux 下針對NVIDIA 顯卡實現硬解碼的方法介紹如下:
前提條件
NVIDIA 顯卡必須支持硬解碼功能。如果該顯卡沒有硬解碼功能,那么,再怎樣修改都無法釋放CPU 。所以無法提高系統性能;
Linux 下必須安裝NVIDIA 官方提供的180 及其以后的驅動版本;
Mplayer 建議使用最新的版本,下載地址是http://www.mplayerhq.hu/design7/dload.html ,要不然你需要下載下面這個版本來完成高清播放的支持。具體的下載鏈接是ftp://ftp.mplayerhq.hu/MPlayer/releases/mplayer-export-snapshot.tar.bz2
?
配置方法
在linux 系統上安裝NVIDIA 的官方商業驅動。具體的下載地址是http://www.nvidia.cn/Download/index.aspx?lang=cn 。在這里根據自己使用的具體顯卡來選擇相應的驅動,下載安裝。值得注意的是在安裝NVIDIA 的顯卡驅動時,首先要安裝kernel 的開發包,即kernel-devel 包。同時要進入到字符模式下。進入字符的方法有很多,這里就介紹一種比較簡單的方法:
打開終端——切換到root 用戶。具體的切換命令是su—— 執行init 3 命令即可。
進入到字符模式后,執行sh NVIDIA-*.run 程序即可安裝。
安裝完成建議重啟計算機。
如果是在Ubuntu 系統上,建議你使用系統——系統管理——硬件驅動來執行圖形化安裝商業驅動。這樣比較方便。
編譯并安裝mplayer 程序。建議基于自己的NVIDIA 顯卡和NVIDIA 官方驅動編譯mplayer 。具體的編譯方法如下:
./configure --enable-gui –language=zh_CN
make -jN // 根據你的CPU 內核數決定,雙核的用-j3 吧!
make install
當然,configure 處,也可以根據自己的實際情況添加不同的參數。如果你不想基于NVIDIA 顯卡編譯,你在編譯時,請記得加入參數—enable-vdpau 。來打開vdpau 功能。
這樣安裝以后的mplayer 在/usr/locale 目錄下。跟系統正常目錄有所出入。如果你為了使其能夠安裝到正常目錄下,你可以使用下面的configure 命令:
./configure --enable-gui --language=zh_CN –prefix=/usr/ --bindir=/usr/bin/ --datadir=/usr/share/mplayer –mandir=/usr/share/man –confdir=/etm/mplayer –libdir=/usr/lib/ --codecsdir=/usr/lib/codecs
這樣就能夠保證安裝到了正常目錄下。
配置mplayer 。 要想用nvidia 顯卡的硬解碼功能,在用mplayer 播放時,需要加入以下參數:
-vo vdpau -vc ffmpeg12vdpau,ffwmv3vdpau,ffvc1vdpau,ffh264vdpau
其中-vo vdpau 是指明以vdpau 模式輸出。而參數-vc ffmpeg12vdpau,ffwmv3vdpau,ffvc1vdpau,ffh264vdpau 是指明優先使用這幾個視頻解碼器。mplayer 在選擇視頻解碼器時是比較智能的。一起添加后,只是讓mplayer 在這幾個視頻解碼器中優先選擇,如果沒有適合的,再去解碼器庫中尋找。不會起到限定解碼器的作用。
另外,mplayer 能夠自動列出當前能夠支持到的視頻解碼器以及視頻輸出格式。具體的命令是:
mplayer -vo help // 列出能夠使用的視頻輸出模式
mplayer -vc help // 列出能夠使用的視頻解碼器
mplayer -ao help // 列出能夠使用的音頻輸出模式
mplayer -ac help // 列出能夠使用的音頻解碼器
?
gmplayer 實現高清視頻解碼輸出的方法。gmplayer 只是mplayer 的圖形輸出模式。其更方便用戶使用和設置而已。沒有其他特殊之處。但是針對mplayer 的這幾個參數在gmplayer 中無法使用。若要在gmplayer 中使用高清視頻解碼輸出,需要修改mplayer 相應的配置文件。
可以修改的文件有兩個。一個是放在/etc/mplayer 目錄下的mplayer.conf 文件。另外一個就是放在了用戶主目錄下的.mplayer/config 文件。這兩個文件中修改后的效果是一樣的。只是對用戶權限的限定不一樣。在/etc/mplayer 目錄下修改后,改系統中的所有用戶都可以使用高清視頻播放了。而在用戶主目錄下的.mplayer 目錄中修改了以后,只有該用戶登錄后在可以使用高清視頻播放。所以用戶在設置時要根據自己的具體情況來選擇相應文件進行修改。
?
測試方法
測試高清視頻播放的方法很多,但是最直接的方法就是下載高清電影,或者高清小片段,直接播放。一般不使用高清視頻解碼的話,播放高清電影,CPU 的占用率一般在99% 左右,而使用了高清視頻解碼以后,CPU 的占用率在8% 以下。
?
參考文獻:
mplayer播放高清(nvidia vdpau):http://bbs.fedora-zh.org/showthread.php?t=1128
NVIDIA 180版Linux驅動視頻解碼加速實測 : http://blog.chinaunix.net/u1/39544/showart_1418368.html
我的優化PC:在Linux下進行高清VDPAU解碼測試:http://blog.zol.com.cn/868/article_867075.html
使用vdpau mplayer作為后端的smplayer的設置方法 : http://forum.ubuntu.org.cn/viewtopic.php?f=74&t=177518
?
?
總結
以上是生活随笔為你收集整理的Linux下用nvidia显卡实现硬解码的方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: html成绩百分制转换为,如何将百分制平
- 下一篇: java调用个人微信api接口实现收发消