VLC 播放器 - 无法打开 VDPAU 后端 libvdpau_nvidia.so

Sto*_*ate 5 video nvidia vlc vdpau

我一直在努力用 VLC 解决这个问题,而不是使用 VDPAU 的 VLC 使用我的 1030 硬件解码。希望这里有人能帮我解决这个问题。H264 和 H265 也有同样的问题。VLC 回退到 CPU 渲染就好了,但我需要弄清楚为什么它无法为我的 Nvidia GT 1030 加载 VDPAU 硬件解码。

一些开始的信息......

Distributor ID: Ubuntu
Description:    Ubuntu 18.04.1 LTS
Release:    18.04
Codename:   bionic

4.15.0-39-generic

+-----------------------------------------------------------------------------+
| NVIDIA-SMI 390.77                 Driver Version: 390.77                    |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  GeForce GT 1030     Off  | 00000000:01:00.0  On |                  N/A |
| 35%   28C    P8    N/A /  30W |    116MiB /  1996MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID   Type   Process name                             Usage      |
|=============================================================================|
|    0       943      G   /usr/lib/xorg/Xorg                            62MiB |
|    0      1090      G   /usr/bin/gnome-shell                          52MiB |
+-----------------------------------------------------------------------------+

Information string: NVIDIA VDPAU Driver Shared Library  390.77  Tue Jul 10 22:09:49 PDT 2018
MPEG1                           0 65536  4096  4096
MPEG2_SIMPLE                    3 65536  4096  4096
MPEG2_MAIN                      3 65536  4096  4096
MPEG4_PART2_SP                  3  8192  2048  2048
MPEG4_PART2_ASP                 5  8192  2048  2048
HEVC_MAIN                      153 262144  8192  8192
HEVC_MAIN_10                   --- not supported ---
HEVC_MAIN_STILL                --- not supported ---
HEVC_MAIN_12                   --- not supported ---
HEVC_MAIN_444                  --- not supported ---

/usr/lib/i386-linux-gnu/vdpau/libvdpau_nvidia.so
/usr/lib/i386-linux-gnu/vdpau/libvdpau_nvidia.so.1
/usr/lib/i386-linux-gnu/vdpau/libvdpau_nvidia.so.390.77
/usr/lib/x86_64-linux-gnu/vdpau/libvdpau_nvidia.so
/usr/lib/x86_64-linux-gnu/vdpau/libvdpau_nvidia.so.1
/usr/lib/x86_64-linux-gnu/vdpau/libvdpau_nvidia.so.390.77

VLC media player 3.0.4 Vetinari (revision 3.0.4-0-gf615db6)
[000000000210d3b0] main libvlc: Running vlc with the default interface. Use 'cvlc' to use vlc without interface.
Qt: Session management error: None of the authentication protocols specified are supported
Failed to open VDPAU backend libvdpau_nvidia.so: cannot open shared object file: No such file or directory
Failed to open VDPAU backend libvdpau_nvidia.so: cannot open shared object file: No such file or directory
[00007f6c48c06a30] main decoder error: buffer deadlock prevented
Run Code Online (Sandbox Code Playgroud)

编辑:问题是关于让 VDPAU 硬件解码工作,而不是 VA-API。无论哪种方式,即使按照 VA-API 的说明进行操作,仍然无法使硬件解码正常运行,无论 VLC 设置为使用 VA-API 还是 VDPAU。错误可以在对 OP 的评论中找到。

错误日志:

VAProfileMPEG2Simple :  VAEntrypointVLD VAProfileMPEG2Main :    VAEntrypointVLD VAProfileMPEG4Simple :  VAEntrypointVLD VAProfileMPEG4AdvancedSimple :  VAEntrypointVLD <unknown profile> : VAEntrypointVLD VAProfileH264Main : VAEntrypointVLD VAProfileH264High : VAEntrypointVLD VAProfileVC1Simple :    VAEntrypointVLD VAProfileVC1Main : VAEntrypointVLD VAProfileVC1Advanced :   VAEntrypointVLD

Qt: Session management error: None of the authentication protocols specified are supported libva info: VA-API version 0.39.0 libva info: va_getDriverName() returns -1 libva error: va_getDriverName() failed with unknown libva error,driver_name=(null)

[00007f55080a34c0] vaapi_drm generic error: vaInitialize: unknown libva error libva info: VA-API version 0.39.0 libva info: va_getDriverName() returns -1 libva error: va_getDriverName() failed with unknown libva error,driver_name=(null)

[00007fae100a37a0] vaapi_drm generic error: vaInitialize: unknown libva error Failed to open VDPAU backend libvdpau_nvidia.so: cannot open shared object file: No such file or directory [00007fae1cc0c400] main decoder error: buffer deadlock prevented QObject::~QObject: Timers cannot be stopped from another thread
Run Code Online (Sandbox Code Playgroud)

Sto*_*ate 5

这种情况下的问题在于 VLC 播放器的 snap 安装。

删除 snap 安装:

sudo snap remove vlc
Run Code Online (Sandbox Code Playgroud)

跟进它:

sudo apt-get remove --purge *vlc*
Run Code Online (Sandbox Code Playgroud)

使用 apt 安装 VLC:

sudo apt-get install vlc
Run Code Online (Sandbox Code Playgroud)

对于我在视频输出的 openGL 渲染中遇到的另一个问题,我删除/清除了 390.77 驱动程序并添加ppa:graphics-driver并安装了 415.18。

修复后的良好日志历史示例:

VLC media player 3.0.4 Vetinari (revision 3.0.4-0-gf615db6332)[000055963f262570] main libvlc: Running vlc with the default interface. Use 'cvlc' to use vlc without interface. [00007fb868c09430] avcodec decoder: Using NVIDIA VDPAU Driver Shared Library 415.18 Thu Nov 15 21:34:27 CST 2018 for hardware decoding 
[00007fb868cc1d60] avcodec decoder: Using NVIDIA VDPAU Driver Shared Library 415.18 Thu Nov 15 21:34:27 CST 2018 for hardware decoding
Run Code Online (Sandbox Code Playgroud)

  • 如果您使用 snap 安装了 VLC,那么在我看来,运行 `sudo apt-get remove --purge *vlc*` 是毫无意义的。 (3认同)