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を使ってみるかな。