最近更新: 2014-05-02

Debian Jessie use mplayer with VAAPI

VAAPI (Video Acceleration API) 是 Linux 環境下的其中一種利用 GPU 加速視訊播放(硬解播放)的程式介面。在 Linux 常見的影像播放程式中, vlc 是很早(v1.1)就支援 VAAPI ,反倒是 mplayer 遲未正式支援。本文記錄我在 Debian jessie 上安裝 mplayer 支援 VAAPI 之事。

使用 VAAPI 前的準備

首先,你的電腦系統的顯示晶片必須支援 VAAPI 。例如 Intel GAM/HD Graphics ,以及 AMD/ATI Radeon GPU 。基本上, Intel 自 2012 年以後內建的顯示晶片都可用; AMT/ATI 自 2009 年以後推出的顯示晶片都可用。至於 NVidia 顯示晶片使用 mplayer 時,用 VDPAU 就好了,參考「Debian/Ubuntu and NVIDIA driver's video hardware acceleration 」。

接著你還要打通驅動程式的環節。 進行視訊加速播放,必須先安裝顯示晶片專屬驅動程式,以及 VAAPI 執行函數庫。需要下列套件。

顯示晶片驅動程式: (視訊加速用)

AMD/ATI Radeon GPU 驅動程式套件: fglrx-driver fglrx-modules-dkms libva-glx1 xvba-va-driver

Intel GMA/HD Graphics 驅動程式套件: i965-va-driver

VAAPI 執行函數庫與檢測工具

套件: libva1 libva-x11-1 vainfo

以 AMD/ATI 顯示卡為例,執行 vainfo 檢測的結果中, VA API Supported entrypoints 至少要一個以上才算可用。如下所示:

$ vainfo
vainfo: VA_API Version: 0.35 (libva 1.3.0)
vainfo: Driver version: Splitted-Desktop Systems XvBA backend for VA-API 0.8.0
vainfo: Supported profile and entrypoints
      VAProfileH264High               : VAEntrypointVLD
      VAProfileVC1Advanced            : VAEntrypointVLD

我的安裝過程

我嘗試按照「 mplayer 以 vaapi 使用 ATI提供的 XvBA 硬體加速播放影片」的說明,以源碼編譯,但總是失敗。

後來在「 Sander van Grieken - mplayer VA-API enabled builds」找到了編譯好的 deb 套件。 但有個小麻煩。這是在 Ubuntu 下建置的套件,我試著直接安裝時, Debian 套件管理程式抱怨我還沒安裝 libvorbisidec1 ,還有 libpulse0 的需求版本不符。

我查看了一下 mplayer-vaapi deb 的檔案內容,發現裡面只有一個 usr/bin/mplayer 的執行檔,其他都是一般的資料文件。所以我跳過安裝工作,直接解開 deb 檔,把它包含的 usr/bin/mplayer 拿出來,順便改名成 mplayer-vaapi 以免和已經安裝的 mplayer 衝突。而實際使用時很順利,沒有問題。執行參數加上 -vo vaapi 即可。

# 先安裝 Debian jessie 提供的 mplayer 套件,把 mplayer 相關的函數庫也一併裝進。
$ sudo apt-get install mplayer

# 安裝 mplayer-vaapi 需要的套件。
$ sudo apt-get install libvorbisidec1

# 解壓 mplayer-vaapi deb 檔到 mplayer-vaapi 目錄。
$ dpkg -x mplayer-vaapi_1.1.1+svn36265-2~saucy0_amd64.deb ~/mplayer-vaapi

# 將 mplayer-vaapi/usr/bin/mplayer 複製到家目錄的 bin 目錄中,
# 並改名 mplayer-vaapi 。
$ cp ~/mplayer-vaapi/usr/bin/mplayer ~/bin/mplayer-vaapi

# 使用時,加上 "-vo vaapi" 的參數即可。
$ ~/bin/mplayer-vaapi -vo vaapi big_buck_bunny_1080p.mov
h264 格式的測試影片,取自「Big Buck Bunny」。

播放效果記錄

我以 AMD G-T56N 晶片,分別測試下列影像播放程式使用 VAAPI 播放 1080P 影片的效果。

  • gstream-vaapi
    CPU 使用率 90% ,效果非常不明顯。
  • vlc
    CPU 使用率 50~60% 左右,看得出 GPU 的加速效果,但仍然與預期有所落差。
  • mplayer-vaapi
    CPU 使用率介於 15~20% 之間,加速效果卓越,這才是我預期的效果(參考「Debian/Ubuntu and NVIDIA driver's video hardware acceleration 」)。

雖然同樣透過 VAAPI 處理視訊加速播放,但效果天差地遠。這其中奧妙,我懶得深究。如果想要配合 smplayer 使用的話,可以用 mplayer-vaapi 替代 /usr/bin 目錄下原本的 mplayer 。

相關文章
樂多舊網址: http://blog.roodo.com/rocksaying/archives/27830035.html

樂多舊回應
vickycq@gmail.com(vickycq) (#comment-25338527)
Wed, 21 Oct 2015 13:19:27 +0800
From my expierence the OSS radeon driver combined with vdpau is far more effective and stable.
未留名 (#comment-25338537)
Wed, 21 Oct 2015 15:10:30 +0800
My radeon card is too old. It can not use OSS radeon driver to enable VDPAU.
And yes. The OSS radeon driver is better, since AMD forgot radeon driver of linux.