Linux mint , ubuntu で Intel GPU によるVAAPI( ハードウェアアクセラレーション ) を使用できるようにする
VLCで動画を閲覧していた時のCPU使用率が50%と高く、ハードウェアアクセラレーション(動画再生支援)が適切に設定が出来ていないため設定しました。
今回使用した環境
CPU:Celeron N2807
GPU:Intel Atom® プロセッサー Z3700 シリーズ向けインテル® HD グラフィックス
OS:linux mint 19
この方法は Intel のCPUに内蔵されているGPUを使用する場合です。
まず、mpvプレイヤーで再生状況を確認しました。
mpv abcd.mp4 --hwdec=vaapi --vo=opengl
Playing: abcd.mp4
(+) Video --vid=1 (*) (h264 640x360 23.976fps)
(+) Audio --aid=1 --alang=und (*) (aac 2ch 44100Hz)
VO does not support requested hardware decoder, or loading it failed.
AO: [pulse] 44100Hz stereo 2ch float
VO: [opengl] 640x360 yuv420p
AV: 00:00:03 / 00:01:30 (3%) A-V: 0.000 Cache: 9s+5MB
VO does not support requested hardware decoder, or loading it failed.
とありますので、ハードウェアアクセラレーションが適切に設定できていないようです。
vainfo を先ず、インストールします。
$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get install vainfo
$ vainfo
libva info: VA-API version 1.1.0
libva info: va_getDriverName() returns 0
libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/i965_drv_video.so
libva info: va_openDriver() returns -1
vaInitialize failed with error code -1 (unknown libva error),exit
vaInitialize failed with error code -1 (unknown libva error),exit
とありますので、MintやUbuntu VAAPI を利用するためには libva1 と i965-va-driverのインストールが必要です*3*4。libva1はVAAPIのランタイム、i965-va-driverはIntel用のVAAPI ドライバーです。すでにMintではlibva1はインストール済みです。
CentOS で VAAPI を利用するためには libva と libva-intel-driver が必要です*5*6。
i965-va-driver をインストールします。
今回は、Synapticパッケージマネージャにてインストールしました。
Synapricパッケージマネージャには検索機能がありますので、「vaapi」 と検索します。
i965-va-driverにチェックボックスにチェックし、適用をクリックしインストールをします。なお上の写真はi965-va-driverインストール後の写真です。コマンドでインストールする場合は「 sudo apt-get install i965-va-driver 」 でインストールできます。
インストール後にvainfoで状況を確認します。
$ vainfo
libva info: VA-API version 1.1.0
libva info: va_getDriverName() returns 0
libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/i965_drv_video.so
libva info: Found init function __vaDriverInit_1_1
libva info: va_openDriver() returns 0
vainfo: VA-API version: 1.1 (libva 2.1.0)
vainfo: Driver version: Intel i965 driver for Intel(R) Bay Trail - 2.1.0
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
VAProfileH264StereoHigh : VAEntrypointVLD
VAProfileVC1Simple : VAEntrypointVLD
VAProfileVC1Main : VAEntrypointVLD
VAProfileVC1Advanced : VAEntrypointVLD
VAProfileNone : VAEntrypointVideoProc
VAProfileJPEGBaseline : VAEntrypointVLD
きちんと認識されているようです。VLCのハードウェアアクセラレーションの設定をVAAPI、出力をOpenGLにしました。その結果、CPU使用率も下がりました。
chromiumもハードウェアアクセラレーションを使用したい場合は下記を見てください。
参考になったサイト
*2:LIVA【終息】 | 株式会社リンクスインターナショナル
*3:QSV 対応 Intel CPU で H.264 のハードウェアエンコード on Linux - Qiita
*4:vaInitialize failed with error code -1 (unknown libva error),exit · Issue #60 · intel/libva · GitHub
*5:QSV 対応 Intel CPU で H.264 のハードウェアエンコード on Linux - Qiita
*6:vaInitialize failed with error code -1 (unknown libva error),exit · Issue #60 · intel/libva · GitHub