CentOS7.1(1501)でIntel Media SDK 2016を動かす

スポンサーリンク
CentOS
スポンサーリンク

 今宵はサーバー機のメンテナンスを行うために、一度開ける機会があったので残ったHDDを利用して再度IntelMediaServerSDK(以降MSS)を触ってみました。
 第四世代のhaswellコアを利用したh264_qsvの挑戦です。
 前回は早く立ち上げなきゃいけない事情もあって、十分に検証できていませんでしたからね。

 まずはMSSに必須なCentOS7.1を用意します。今はすでに過去作品という事でMirrorサーバーにはおいてはおらず、アーカイブサーバまで探しに行きます。
 http://vault.centos.org/7.1.1503/isos/x86_64/CentOS-7-x86_64-Everything-1503-01.isoを用意しました。
 Everythingって現存するすべてのモジュールが入っているやつだったんですね。いつもNetInstallしか落とさないので知りませんでした。
 最初のインストールは最小インストールにとどめ、後程メディアからモジュールをインストールします。
 出来上がって再起動の時に焦りました。USBメモリに入れていたんですが最後Ejectしようとしてずっとアクセスしっぱなしになりましたからね。当時はどうやって防いだのでしょうか。
 再起動後、いつもならyum update&yum -y groupinstall base “Development tools”と続くのですがそれをしてはカーネルが上がってしまいます。ここは耐える時です。
 SCPでメディアISOを入れ込み、私は/home/cdromに格納しました。そしてそのCDを使えるようにloopデバイスでマウントさせます。
 書式としてはmount -o loop -t iso9660 [isoイメージファイル] [マウント場所]です。私の場合は先に/mnt/cdromディレクトリを作成しておき

mount -o loop -t iso9660 /home/cdrom/CentOS-7-x86_64-Everything-1503-01.iso /mnt/cdrom

 としました。
 これでDVDが参照できます。
 あとはこの中のモジュールだけを使って必要なモジュールを入れ込みます。やり方ですがMSSはyumでの使用を想定されて作られていますので、通常でこのDVDを読みに行かなくてはなりません。そのためひと手間かけます。
 DVDをレポジトリとして使えるように/etc/yum.repos.d/にmediadvd.repoというファイルを新規で作成します。中身は

[mediadvd]
name=mediadvd
baseurl=file:///mnt/cdrom
gpgcheck=0
enabled=1

 としました。そして一時的にインターネット側からの流入を避けるために、baseを利用できなくさせます。

mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.org

 こうすることで読みに行かなくすることができます。
 ここでようやくyumの出番です。yum updateとするとDVDの中身を読みに行ってくれます。ここからは普通の操作と一緒です。必要なファイル群をインストールしていきます。

yum update
yum -y groupinstall base "Development tools

 これで大体の事はできるようになりました。
 続いて必要なモジュールをインストールします。

yum -y install pciutils net-tools autoconf automake cmake freetype-devel gcc gcc-c++ git libtool make mercurial nasm pkgconfig zlib-devel mesa-dri-drivers wget bc

 続いてintelからMSSをダウンロードします。
 Intel Developer Zone

 ユーザー登録を行い,Intel Media Server Studio 2016 の Community Edition をダウンロードします.

 Intel Media Server Studio – Community Edition.
 Intel Media Server Studio for Linux (199 MB)

 MediaServerStudioEssentials2016.tar.gzが落とせるはずです。
 ちなみに2017以降のは第五世代以上のCPUが必要になります。新しいからと言って使えるわけではありません。
 さっそくSCPで取り込みます。その後カーネルの作成準備に入ります。
 まずカーネル作成はrootユーザーで作成することは推奨されません。それなので一般ユーザーを作りそこで作業します。
 一般ユーザーと言ってもsudoが使えるグループにいてください。また同時にvideoグループにも参加させておいてください。

tar zxvf MediaServerStudioEssentials2016.tar.gz
cd MediaServerStudioEssentials2016
tar zxvf SDK2016Production16.4.4.tar.gz 
cd SDK2016Production16.4.4
cd CentOS
tar zxvf install_scripts_centos_16.4.4-47109.tar.gz
sudo ./install_sdk_UMD_CentOS.sh
sudo mkdir /MSS
sudo chown $USER:$USER /MSS
cp build_kernel_rpm_CentOS.sh /MSS
cd /MSS
./build_kernel_rpm*.sh
cd /MSS/rpmbuild/RPMS/x86_64
sudo rpm -Uvh kernel-3.10.*.rpm
sudo reboot

 私の環境はi5-4670K+8GBMEMですが./build_kernel_rpm*.shで約30分かかりました。
再起動後カーネルが無事に立ち上がる事を確認します。
 uname -rで3.10.0-229.1.2.47109.MSSr1.el7.centos.x86_64と出れば下準備はOKです。
 この後ffmpegでh264_qsvが利用できるように環境を整えていきます。
 先ほど利用したユーザでまたコンパイルを続けます。

sudo mkdir /opt/intel/mediasdk/include/mfx
sudo cp /opt/intel/mediasdk/include/*.h /opt/intel/mediasdk/include/mfx
sudo vi /usr/lib64/pkgconfig/libmfx.pc

 viが起動するので中身を書いてあげます。

prefix=/opt/intel/mediasdk
exec_prefix=${prefix}
libdir=${prefix}/lib/lin_x64
includedir=${prefix}/include

Name: libmfx
Description: Intel Media SDK
Version: 16.4.2
Libs: -L${libdir} -lmfx -lva -lstdc++ -ldl -lva-drm -ldrm
Cflags: -I${includedir} -I/usr/include/libdrm

 テストプラグラムを実行してみます

cd MediaServerStudioEssentials2016
tar zxvf MediaSamples_Linux_2016_bin.tar.gz
cd MediaSamples_Linux_2016_bin
./sample_multi_transcode -i::h264 content/test_stream.264 -o::h264 out.h264 -hw -la

 最後にThe test PASSEDと出れば動いています。

 次にffmpegを用意します。
 コーディングガイドに従ってサクサク進めていきます。
 そして最後のffmpegの./configureで–enable-libmfxを追加します。
 長くなりましたので次回centos7ffmpegでのエンコードについて触れてみたいと思います。

コメント

タイトルとURLをコピーしました