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