Linuxのvlcで Failed to open VDPAU backend のエラーが出ることについて

Linuxのvlcで「Failed to open VDPAU backend libvdpau_vdpau.so: 共有オブジェクトファイルを開けません: そのようなファイルやディレクトリはありません」のエラーが出ることについて調べてみました。

もともとは、VDPAUの何かのエラーがでていて、「export VDPAU_DRIVER=vdpau」を $HOME/.bash_profile へ記述することで対応をしたのですが、その設定をすると、このエラーが出るようになったと記憶しています。

とりあえず動いていたので、このままにしていたのですが、最近 MacBook ProでUbuntuを動かしたときも似たようなエラーが発生して調べたのでした。

ハードウェアビデオアクセラレーション – ArchWiki」は参考になります。

NVIDIAのグラフィックカードを使っているときに、VDPAUが使われるようです。ということで、vdpauinfoコマンドをインストールして、現在の環境がどうなっているか確認をするのが良いです。CentOS7だとepelパッケージに含まれていました。

$ sudo yum -y install vdpauinfo
$ vdpauinfo 
display: :0   screen: 0
API version: 1
Information string: NVIDIA VDPAU Driver Shared Library  390.67  Fri Jun  1 03:14:45 PDT 2018
(略)

vdpauinfoでエラーが出る場合は、VDPAUに対応するドライバーのインストールが必要です。ここでは問題なく表示できたので、VDPAUの対応はきちんとできているようです。

ということで、もう少し調べてみたところ、エラーの原因は、適当にVDPAU_DRIVERを指定していたのが問題で、NVIDIAのグラフィックカードを使っているときはnvidiaを指定する必要がありました。

Xorg.0.logを見ると指定する値がわかるとのこと。

$ grep -iE 'vdpau | dri driver' /var/log/Xorg.0.log
[   369.296] (II) NVIDIA(0): [DRI2]   VDPAU driver: nvidia

ということで、CentOS7の$HOME/.bash_profile (Ubuntuなら $HOME/.profile)で下記を指定するようにしました。ログインをし直すと反映されます。

export VDPAU_DRIVER=nvidia

ついでに、VA-APIも対応するようにしておいた方が良いようなので、libva-utils(vainfoコマンドが使えるようになる)とlibva-vdpau-driver(vdpauでva-apiを使えるようになる)をインストールして、vainfoで情報を確認。どちらもepelリポジトリにあります。

$ sudo yum -y install libva-utils libva-vdpau-driver
$ vainfo
libva info: VA-API version 0.40.0
libva info: va_getDriverName() returns 0
libva info: Trying to open /usr/lib64/dri/nvidia_drv_video.so
libva info: Found init function __vaDriverInit_0_40
libva info: va_openDriver() returns 0
vainfo: VA-API version: 0.40 (libva )
vainfo: Driver version: Splitted-Desktop Systems VDPAU backend for VA-API - 0.7.4
(略)

vlcを起動したときに発生するエラーは、以上で解決したのですが、起動時にウィンドウのサイズ指定ができると嬉しいので、そちらも調べました。ただ、指定する方法がよくわかりませんでした。

調べている最中に、mpvというアプリもあることを知りました。そちらだと指定できそうなので、インストールしてみました。nux-desktopリポジトリにあります。

mpvでは比率になりますが、オプションがあって簡単に指定できました。コンソールへの出力も必要ないので –really-quiet もつけてます。

$ sudo yum -y install mpv
$ mpv sample.mp4 --window-scale=0.2 --really-quiet &

ということで、mpvを使ってみるかな。

同じカテゴリの記事: Linux