我一直在努力解决这个问题,因为 VLC 不使用我的 1030 的硬件解码,而 VLC 使用 VDPAU。希望有人能帮我解决这个问题。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
+-----------------------------------------------------------------------------+
| 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
编辑:问题是关于如何让 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
答案1
在这种情况下,问题出在 VLC 播放器的快速安装上。
使用以下命令删除 snap install:
sudo snap remove vlc
接下来是:
sudo apt-get remove --purge *vlc*
使用 apt 安装 VLC:
sudo apt-get install vlc
对于我在 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
答案2
或者,如果您不需要 nVidia 驱动程序,您可以进入 VLC 设置并在视频选项卡中选择另一个输出。