[ubuntu] nvidia 顯示卡使用 vdpau 硬體解碼播放影片

筆者最近入手了 nvidia 9400 GT 這張顯示卡
(雖然已經是 9800GT 當道的時代,但筆者選了張最便宜的 nvidia 顯卡,
因為筆者不打電動,要打電動這張其實也夠了,選 nvidia 的原因主要是考慮對 Linux 的支持,
Intel、ATI 的不要打我,我真的私心覺得 nvidia 目前對 Linux 支持還是比較好)

新的顯示卡支援了 nvidia 的 vdpau 硬體解碼功能,vdpau 提供了對 mpge1, mpeg2, H264, VC-1, WMV3/WMV9 的硬體解碼支援
有關更詳細的 vdpau 說明,及那些顯示卡支援可以參考維基百科

要使用 vdpau,首先要有張支援 vdapu 的顯示卡(這不是廢話嗎)
然後要使用 180.6 以上版本的 driver
接著就使用支援 vdpau 的軟體,以下使用 mplayer/smplayer

ubuntu 9.04 內建的 nvidia driver 已經在 180.6 以上版本了,在此就不對如何安裝 nvidia drvier 做討論了,就直接說明如何安裝加上 vdpau 功能的 mplayer/smplayer
增加 mplayer 及 smplayer 的源
echo "deb http://ppa.launchpad.net/rvm/mplayer/ubuntu jaunty main" | sudo tee -a /etc/apt/source.list
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 85c8674a3706facd12503abc015a66e603e02400
echo "deb http://ppa.launchpad.net/rvm/smplayer/ubuntu jaunty main" | sudo tee -a /etc/apt/source.list
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys e23a3c5344ae497c2fee7b0ba7e13d78e4a4f4f4

接著就可以透過 apt 來安裝新的 mplayer/smplayer
sudo apt-get update
sudo apt-get install mplayer smplayer

有了新的 mplayer 還必須要設定播放方式使用 vdpau
以及使用新的解碼方式

先說 smplayer 設定方式,比較簡單
在 smplayer 的選項 → 偏好設定中,在一般的視訊分頁中,調整 output driver 為 vdpau

接著在進階中的 mplayer 選項分頁中,
增加選項 "-vc ffmpeg12vdpau,ffwmv3vdpau,ffvc1vdpau,ffh264vdpau,"
注意最後面的逗號,一定要有,否則會造成其他格式的影片無法播放

設定完後, smplayer 就會用 vdpau 來播放 h264 的影片

接著是 mplayer 的設定方式,如果都是用 smplayer 的話,就可以略過了
編輯 ~/.mplayer/config
加上
vo=vdpau
vc=ffmpeg12vdpau,ffwmv3vdpau,ffvc1vdpau,ffh264vdpau,

就可以了

測試,筆者手上沒有 1080p 的片子,不過還是找了個 h264 的片子來測試
測試的 cpu 為 Intel Core Duo2 E8400 (3.0G * 2)
先看看沒開啟 vdpau 的播放情況

cpu 的使用率約 5~10%

接著看看開啟 vdpau 的情況

cpu 使用率約 0~2%

可以得到 cpu 使用率明顯下降,當然筆者測試的影片不是很客觀
網路上有更多的測試結果可以去比較看看
對於 cpu 不夠強的,應該會感到較大的差異

ati / intel 的部份呢?
查了一下,目前 nvidia 的腳步應該算是最快的
更多消息參考這篇

留言

梅酒寫道…
我用ubuntu 10.04,顯卡 nVidia 9500GT,SMplayer按照版主的設定之後,只有聲音沒有畫面。
不知道是哪裡沒設定好!?
Bill Chu寫道…
可以考慮裝
libvdpau1

我試過可以,但不知道為什麼要另外再裝這個套件。
匿名表示…
Thanks so much.
My ION (mplayer on ubuntu) is able to decode 1080p smoothly.

fermi

這個網誌中的熱門文章

[Linux] 如何 hex 字串 與 文字互轉

記下 openssh 中 sftp的log

[linux]用指令來做音量控制