vaapiの有効化

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

 自分のサーバーのCPUはこの間の騒動からhaswellのi5-4670Kです。
 出来ればqsvを利用したいと思います。
 本来ならばMSSと指定のOSをインストールするのが定石ですが、今現在CentOS6.9が走っており色々と細工をしていたので、この環境で使える道を探しました。
 そこで発見したのがvaapiを利用するという事でした。
 今まではchinachuで録画したものをmp4に変換するのをlibx264で任せていましたが、ここをqsvで行おうという実験です。
 成果としては自分としては納得したものが出来上がったので紹介したいと思います。

 まずepelを有効化します。普段必要のない方は/etc/yum.repos.d/のepelから始まる.repoを編集しenable=1をenable=0とします。

yum install epel-release

 一旦古いlibvaをインストールして必要なモジュール群をインストールします。

yum -y install libva-devel libdrm-devel

 古いlibvaを削除します。

yum -y remove libva-devel
yum -y remove libva

 libva,libva-utils,intel-vaapi-driverの1.8を取得しインストールします。intel-vaapi-driverのmasterがコンパイルに失敗するのでインストールできませんでした。(おそらくgcc周りをアップグレードすれば使えるとは思いますが)そこで1.8系のソースを展開します。

cd /usr/local/src
git clone https://github.com/01org/libva
cd libva
git checkout -b v1.8-branch origin/v1.8-branch
./autogen.sh
make
sudo make install
cd /usr/local/src
git clone https://github.com/01org/libva-utils
cd libva-utils/
git checkout -b v1.8-branch origin/v1.8-branch
PKG_CONFIG_PATH=/usr/local/lib/pkgconfig ./autogen.sh
make
sudo make install
cd /usr/local/src
git clone https://github.com/01org/intel-vaapi-driver
cd intel-vaapi-driver
git checkout -b v1.8-branch origin/v1.8-branch
PKG_CONFIG_PATH=/usr/local/lib/pkgconfig ./autogen.sh
make
sudo make install
cd

 インストール先は/usr/local/libにインストールされていますのでldconfigで読み込みできるようconfファイルを新規で作成します。

vi /etc/ld.so.conf.d/usrlocal.conf

 中身はこんな感じ

/usr/local/lib

 そしてldconfig実行

sudo ldconfig

 正常に読み込まれているかどうかを確認

$ ldconfig -p | grep libva
        libva.so.1 (libc6,x86-64) => /usr/local/lib/libva.so.1
        libva.so (libc6,x86-64) => /usr/local/lib/libva.so
        libva-x11.so.1 (libc6,x86-64) => /usr/local/lib/libva-x11.so.1
        libva-x11.so (libc6,x86-64) => /usr/local/lib/libva-x11.so
        libva-tpi.so.1 (libc6,x86-64) => /usr/local/lib/libva-tpi.so.1
        libva-tpi.so (libc6,x86-64) => /usr/local/lib/libva-tpi.so
        libva-glx.so.1 (libc6,x86-64) => /usr/local/lib/libva-glx.so.1
        libva-glx.so (libc6,x86-64) => /usr/local/lib/libva-glx.so
        libva-drm.so.1 (libc6,x86-64) => /usr/local/lib/libva-drm.so.1
        libva-drm.so (libc6,x86-64) => /usr/local/lib/libva-drm.so

 ここで一旦リブートします。

reboot

 まずiGPUが認識されているかを確認します。

$ lspci | grep 00:02.0
00:02.0 VGA compatible controller: Intel Corporation Xeon E3-1200 v3/4th Gen Core Processor Integrated Graphics Controller (rev 06)

 続いてvainfoで利用可能かどうかを確認します。

$ vainfo
error: can't connect to X server!
libva info: VA-API version 0.40.0
libva info: va_getDriverName() returns 0
libva info: Trying to open /usr/local/lib/dri/i965_drv_video.so
libva info: Found init function __vaDriverInit_0_40
libva info: va_openDriver() returns 0
vainfo: VA-API version: 0.40 (libva 1.8.3)
vainfo: Driver version: Intel i965 driver for Intel(R) Haswell Desktop - 1.8.3
vainfo: Supported profile and entrypoints
      VAProfileMPEG2Simple            : VAEntrypointVLD
      VAProfileMPEG2Simple            : VAEntrypointEncSlice
      VAProfileMPEG2Main              : VAEntrypointVLD
      VAProfileMPEG2Main              : VAEntrypointEncSlice
      VAProfileH264ConstrainedBaseline: VAEntrypointVLD
      VAProfileH264ConstrainedBaseline: VAEntrypointEncSlice
      VAProfileH264Main               : VAEntrypointVLD
      VAProfileH264Main               : VAEntrypointEncSlice
      VAProfileH264High               : VAEntrypointVLD
      VAProfileH264High               : VAEntrypointEncSlice
      VAProfileH264MultiviewHigh      : VAEntrypointVLD
      VAProfileH264MultiviewHigh      : VAEntrypointEncSlice
      VAProfileH264StereoHigh         : VAEntrypointVLD
      VAProfileH264StereoHigh         : VAEntrypointEncSlice
      VAProfileVC1Simple              : VAEntrypointVLD
      VAProfileVC1Main                : VAEntrypointVLD
      VAProfileVC1Advanced            : VAEntrypointVLD
      VAProfileNone                   : VAEntrypointVideoProc
      VAProfileJPEGBaseline           : VAEntrypointVLD

 こんな風に表示されればvaapiの準備は整いました。
 次はffmpegを用意します。

コメント

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