1. 程式人生 > >在Ubuntu 14.04平臺上利用Intel的GPU實現硬體加速--基於VAAPI

在Ubuntu 14.04平臺上利用Intel的GPU實現硬體加速--基於VAAPI

先前利用了一些時間去網上搜索資料,瞭解Intel的集顯,特別是E3800系列的SOC,主要是因為老大安排一個任務,叫我協助另一個公司的同事調查這個SOC上的硬體加速功能,即硬體解碼。這個事我很早就開始耳聞了,當時還在搞專案,沒空理。趁著專案處於交付階段有點空餘時間就安排我去做。

手冊上講得很明白,晶片支援h.264硬體解碼。從wiki上也看到整合的GPU可以實現硬解。在一番搜尋研究後,終於在ubuntu下實現了GPU硬解。現在看來,其實事情很簡單,在ubuntu下使用mplayer播放1080P的視訊,CPU佔用率不高就行了——就這麼簡單。

下面是實現這個功能的步驟:

1、安裝vaapi及drm庫:

sudo apt-get install libdrm-intel1 libva1 libva-intel-vaapi-driver vainfo

2、安裝intel集顯驅動:

sudo apt-get install i965-va-driver

3、安裝帶有vaapi的mplayer:

mplayer預設是沒有整合vaapi的,需要使用它的vaapi分支原始碼編譯才行,不,有好心國際友人已經實現了ubuntu的第三方源。

首先新增這個源:

sudo add-apt-repository ppa:sander-vangrieken/vaapi
(按回車繼續)
更新一下源列表:

sudo apt-get update
之後就可以使用常見的apt-get install來安裝了:

sudo apt-get install mplayer-vaapi

沒有什麼錯誤的話,一切就OK了。需要注意的是mplayer是沒有介面的,只有命令列,如果要安裝一個像上去正常點的播放器,就要安裝gnome-mplayer或smplayer,不過這不是我們關注的重點(其實我已經安裝了,但按網上配置的方法,CPU沒降下來)。

播放視訊命令很簡單,如下:

mplayer -vo vaapi xxx.av

其中“-vo vaapi”指定“視訊輸出”為vaapi,通過mplayer -vo -h可以檢視其支援的視訊輸出有哪些(比如,指定輸出為sdl就不會使用硬體解碼,此時CPU佔用率是很高的)。網上還提到需要新增"-va vaapi"選項,即指定視訊加速,但這個版本的mplayer沒有,因此不用輸入。

算起來,完成上面的命令是一下子的事情。但從不瞭解到真正完成,花了很多時間。首先去了解E3800的技術手冊,知道其支援哪些特性。然後在Ubuntu上驗證,一開始在14.04版本上參考另外一個文章的做法,不成功,於是以為版本太新不合適,於是降低Ubuntu版本來試,也不行,後來使用了Intel上介紹的Timesys的Fedora系統,不行,再後來,還是選擇最初的版本,結果找到一個成功案例,於是驗證正常了。

2015.3 PS:

這個事務屬於“友情協助”,另一個公司的人員想在他們的專案上使用E3800的硬體解碼,但他們不懂,於是發電子郵件讓我們這邊搞,當然,這是轉了好多個主管,最終了到我頭上。在剛剛完成上文中的驗證後,我又被安排到另外一個比較緊急又沒頭緒的任務了,於是如何使用這個硬體解碼,我沒怎麼深入研究了。半桶水“專家”就是這樣練成的。

李遲 2015年2月12日