1. 程式人生 > >LINUX安裝INTEL® MEDIA SERVER STUDIO

LINUX安裝INTEL® MEDIA SERVER STUDIO

2016年12月27日 12:35:16 supermanwg 閱讀數:2479更多

個人分類: 多媒體

最近在折騰Intel QuickSync技術,主要是要打算使用其提供的硬體編解碼功能。看看是否能夠有效的降低CPU的使用率。本來是以為直接下載ffmpeg的二進位制可執行檔案即可(在windows上,只要有安裝好Intel的驅動以及硬體支援,直接使用ffmpeg的可執行檔案,是可以正常執行的),沒想到在linux平臺下事情並沒有想像的那麼簡單。需要這臺的事情還是很多的。

Intel官方提供的SDK說明文件中,推薦的“黃金”作業系統是CentOS 7.1.1503並且使用其自帶的核心,這樣可以少折騰不少東西。目前使用的是Intel ® Media Server Studio 2016 R1 for Linux版本的,SDK中對於CentOS7.1是可以支援直接安裝RPM包的,並且會自動下載其預設的核心,也就是3.10的核心,打上補丁,並且安裝到系統中去。經過幾天的折騰,分別在CentOS7.1上安裝成功後又在Ubuntu14.04.4上也安裝成功。由於另一臺電腦是i5-3470的CPU,其實並沒有在2016的SDK支援列表中,因此裝上去了,在執行官網提供的samples程式碼,是會報錯的。所以後來就在自己的本子,也就是MSI的GE60上安裝了(I7-4700MQ,HD4600是有在SDK的支援列表中的),而由於目前磁碟資源緊張,沒有空間來安裝一個CentOS7.1,所以就直接在Ubuntu上編譯了。當然,如果可以的話,還是建議直接安裝CentOS7.1,因為在後面做的一些測試時,Ubuntu編譯的3.14的核心死掉了不少次,也沒去跟蹤具體是何原因導致(用的KDE的環境,畢竟涉及到圖形,而且本來GE60是雙顯示卡的,編譯3.14的核心後,顯示卡燈都是亮黃燈,也就是用獨顯的模式的 ,而如果是用核顯,則是亮藍燈,不過測試,亮黃燈的話,還是沒有什麼問題的,可以正常使用)。傑茜萊就簡單對如何在CentOS7.1以及Ubuntu14.04上安裝Intel media server studio做一下簡單的說明吧(其實官網的說明文件已經寫得很清晰了,自己權當做一下記錄吧)。

準備工作

先從https://software.intel.com/en-us/intel-media-server-studio 下載好studio,可以下載社群版本即可,專業版會多一些編解碼的東西(HEVC等),不過提供的SDK是一樣的。下載的話,需要類似註冊一下,主要是要提供郵箱地址,到時候會發一個下載連結給你,你就直接從連結就可以下載到對應的壓縮包。

下載完成後,就將壓縮包解壓到本地資料夾中即可。

Shell

1

2

3

4

5

6

$ tar -xvzf MediaServerStudio*.tar.gz

$ cd MediaServerStudio*

$ tar -xvzf SDK*.tar.gz

$ cd SDK*

$ cd CentOS

$ tar -xvzf install_scripts*.tar.gz

目前2016SDK支援的硬體列表如下,如果想要安裝後可用的話,要先選好硬體才行!

Intel® Core™ Processors Intel® Xeon® Processors
4 th Generation Intel Core™ Processors with Intel Iris™ Pro Graphics, Intel Iris Graphics or Intel HD Graphics 4200+ Series.

5th Generation Intel Core™ Processors with Intel Iris™ Graphics or Intel HD Graphics (5500, 6000, 6100).

Intel® Xeon® Processor E3 v3 Family with Intel® HD Graphics P4700.

Intel® Xeon® Processor E3 v4 Family with Intel® Iris™ Pro Graphics P6300.

(C226 chipset is required to use integrated graphics with Xeon processors)

CentOS7.1.1503

這個是SDK說明文件中推薦的“黃金”系統,也就是首選了。很多軟體都會預裝以及測試好了,很是容易。具體系統下載的話,官網提供從http://vault.centos.org/7.1.1503/isos/x86_64/ 下載,建議通過種子的方式下載,這樣會快不少。下載完成,安裝下系統,這些步驟都還是要的,優先選擇安裝為Development and Creative Workstation。這樣主要是省事一些,其實就算是安裝最精簡的版本,也是可以的,並不會費事多少。

CentOS會比較省事,但是指令碼中缺少了對mesa-dri-drivers的依賴處理,所以執行指令碼前,還是先安裝下mesa-dri-drivers。然後執行install_sdk_UMD_CentOS.sh應該就可以完成對UMD的安裝。

Shell

1

2

sudo yum install mesa-dri-drivers -y

sudo ./install_sdk_UMD_CentOS.sh

安裝完成,大致看到的是以下這樣的結果,沒有報錯之類的。

install_UMD_success

之後,就要開始給核心打補丁,並安裝核心。這個步驟需要一個非root使用者,所以要事先建立好一個非root使用者,指令碼會給你對應的提示就是了。執行的指令碼是build_kernel_rpm_CentOS.sh,也是很傻瓜化的操作,會自動下載原始碼的RPM包,並解壓,打補丁,編譯。如果沒出現什麼意外,可以看到以下的結果。那麼應該是成功了。會燒掉一些時間來做核心的編譯,編譯成功後,會自動打成RPM包,下次換個裝置就不需要再次編譯了,RPM包拷過去就可以了。很是方便。

kernel_build_success

接下來就是把編譯好的核心安裝包安裝一下,重啟就可以大功告成了!!

Shell

1

2

3

cd rpmbuild/RPMS/x86_64/

rpm -Uvh kernel-3.10.*.rpm

reboot

Ubuntu14.04

Ubuntu14.04的安裝會相對麻煩。不過現在也提供了指令碼,會比較快速的搞定,本身也有做部分的支援包。

執行Generic目錄下的install_media.sh或者執行install_ubuntu.sh指令碼,需要使用root許可權,指令碼中,會將原有系統中的libdrm以及libva相關的檔案給刪除掉。所以記得做好備份(不然到時候圖形出不來,還是很麻煩的)!!!這麼做,主要是怕載入原有的SO檔案了,導致沒有正常執行(我並沒有這麼做,並沒有刪除這些SO檔案,僅僅只是將檔案拷貝到對應的目錄而已,也正常執行,這個應該是因為後面配置了環境變數的緣故吧)。

install_ubuntu.sh如下(這個是官網提供的,並沒有在SDK說明文件中)。

Shell

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

#!/bin/bash

echo "remove other libdrm/libva"

find /usr -name "libdrm*" | xargs rm -rf

find /usr -name "libva*" | xargs rm -rf

echo "Remove old MSS install files ..."

rm -rf /opt/intel/mediasdk

rm -rf /opt/intel/common

rm -rf /opt/intel/opencl

echo "install user mode components"

#unpack the generic package

tar -xvzf intel-linux*.tar.gz

#put the generic components in standard locations

/bin/cp -r etc/* /etc

/bin/cp -r opt/* /opt

/bin/cp -r usr/* /usr

#ensure that new libraries can be found

echo '/usr/lib64' > /etc/ld.so.conf.d/libdrm_intel.conf

echo '/usr/local/lib' >> /etc/ld.so.conf.d/libdrm_intel.conf

ldconfig

echo "install kernel build dependencies"

apt-get -y install git fakeroot build-essential ncurses-dev xz-utils libssl-dev bc g++

echo "download 3.14.5 kernel"

if [ ! -f ./linux-3.14.5.tar.xz ]; then

     wget https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.14.5.tar.xz

fi

tar -xJf linux-3.14.5.tar.xz

echo "apply kernel patches"

cp  /opt/intel/mediasdk/opensource/patches/kmd/3.14.5/intel-kernel-patches.tar.bz2 .

tar -xvjf intel-kernel-patches.tar.bz2

cd linux-3.14.5

for i in ../intel-kernel-patches/*.patch; do patch -p1 < $i; done

echo "build patched 3.14.5 kernel"

make olddefconfig

make -j 8

make modules_install

make install

echo "Install finished, please "

echo "1. update LD_LIBRARY_PATH to include /usr/lib64;/usr/local/lib"

echo "2. add user to video group: usermod -a -G video user"

echo "3. reboot"

執行了install_ubuntu.sh後,核心也就編譯並安裝了。接下來,還需要編譯libdrm以及編譯libva。

Shell

1

2

3

4

5

6

7

8

9

10

sudo apt-get install libxcb1-dev libpciaccess-dev # 依賴這2個編譯標頭檔案

cd /opt/intel/mediasdk/opensource/libdrm/2.4.54-47109

tar -xf libdrm-2.4.54.tar.bz2

libdrm-2.4.54/

./configure && make && make install

cd /opt/intel/mediasdk/opensource/libva/1.67.0.pre1-47109

tar -xf libva-1.67.0.pre1.tar.bz2

cd libva-1.67.0.pre1/

./configure && make && make install

都是很簡單的操作。編譯安裝後,再設定下環境變數吧。新增到/etc/environment

Shell

1

2

3

LD_LIBRARY_PATH="/usr/local/lib;/usr/lib64"

LIBVA_DRIVER_NAME=iHD

LIBVA_DRIVERS_PATH=/opt/intel/mediasdk/lib64

重啟後,應該也就安裝成功了!!!

驗證是否安裝成功

重啟後,可以通過檢視核心資訊。CentOS7.1會看到如下的資訊:

Shell

1

2

uname -r

3.10.0-229.1.2.47109.MSSr1.el7.centos.x86_64

核心會被標記上MSSr1,目前的SDK是2016 R1版本。而Ubuntu14.04(我使用的是3.13的核心)。則是如下:

Shell

1

2

uname -r

3.14.5

我並沒有像官方那麼,還給核心加上自己的標識,反正本身版本就不一致。

可以通過lsmod來檢視是否有載入對應正確的核心模組。

Shell

1

2

3

4

5

6

7

lsmod | grep 'i915'

i915                  938476  1

video                  19263  1 i915

i2c_algo_bit           13413  1 i915

drm_kms_helper         98274  1 i915

drm                   311336  3 i915,drm_kms_helper

i2c_core               40325  5 drm,i915,i2c_i801,drm_kms_helper,i2c_algo_bit

當然,使用samples的程式碼來驗證是最佳的,因為核心可以執行成功,但是並不代表可以正常執行SDK提供的程式碼(硬體限制)。

大致的話,還是比較推薦使用CentOS7.1進行安裝的,因為步驟都很簡單明瞭,安裝後的SDK檔案之類的,在/opt/intel目錄下。

samples如果打算編譯的話,則需要安裝下cmake(可以不編譯的,有提供二進位制檔案)。

Shell

1

2

sudo apt-get install cmake -y # ubuntu

sudo yum install cmake -y # centos

執行下sample_multi_transcode

Shell

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

./sample_multi_transcode -i::h264 ../content/test_stream.264 -o::h264 /tmp/out.h264 -hw -la

Multi Transcoding Sample Version 6.0.16043361.361

libva info: VA-API version 0.99.0

libva info: va_getDriverName() returns 0

libva info: User requested driver 'iHD'

libva info: Trying to open /opt/intel/mediasdk/lib64/iHD_drv_video.so

libva info: Found init function __vaDriverInit_0_32

libva info: va_openDriver() returns 0

Pipeline surfaces number: 120

MFX HARDWARE Session 0 API ver 1.17 parameters:

Input  video: AVC

Output video: AVC

Session 0 was NOT joined with other sessions

Transcoding started

Transcoding finished

Common transcoding time is  0.26 sec

MFX session 0 transcoding PASSED:

Processing time: 0.26 sec

Number of processed frames: 101

The test PASSED

如果顯示The test PASSED,那麼則顯示正常運行了!!!也就是SDK安裝完成了!

以上,大致說了下如何在linux上安裝Intel® Media Server Studio。

參考資料:

轉載請註明: 轉載自elkPi