每当我使用 Media Player 或 VLC 打开视频、mkv、mp4 等时,所有内容都会显示如下:
它曾经运行良好,但我担心我在尝试让 Linux 版本的 Shadow 运行时搞砸了一些事情。
vlc 输出以下内容:avcodec decoder: Using G3DVL VDPAU Driver Shared Library version 1.0 for hardware decoding.
当我设置时VDPAU_DRIVER=vdpau
出现错误Failed to open VDPAU backend libvdpau_vdpau.so: cannot open shared object file: No such file or directory
,但是视频播放完美。 有想法该怎么解决这个吗?
编辑:我卸载了 mesa-vdpau-driver,VLC 可以正常工作,我猜它默认使用 VA-API,Media Player 仍然是一个问题。我仍然不确定为什么会出现这种情况。
sudo lshw -c video
*-display
description: VGA compatible controller
product: Tahiti XT [Radeon HD 7970/8970 OEM / R9 280X]
vendor: Advanced Micro Devices, Inc. [AMD/ATI]
physical id: 0
bus info: pci@0000:01:00.0
version: 00
width: 64 bits
clock: 33MHz
capabilities: pm pciexpress msi vga_controller bus_master cap_list rom
configuration: driver=radeon latency=0
resources: irq:46 memory:c0000000-cfffffff memory:dfe00000-dfe3ffff ioport:e000(size=256) memory:c0000-dffff
答案1
原因是你的加速后端没有正常工作。AMD/Intel 芯片原生支持 VA-API 硬件加速。
但大多数播放器只支持 NVIDIA 标准的 VDPAU。
解决方案是使用 VA-API 后端来加速 VDPAU。
首先检查你有什么:
sudo apt install vdpauinfo vainfo
vainfo
vdpauinfo
vainfo 将给出类似于以下内容的结果:
libva info: VA-API version 0.39.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_0_39
libva info: va_openDriver() returns 0
vainfo: VA-API version: 0.39 (libva 1.7.0)
vainfo: Driver version: Intel i965 driver for Intel(R) Haswell Mobile - 1.7.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
VAProfileH264MultiviewHigh : VAEntrypointVLD
VAProfileH264MultiviewHigh : VAEntrypointEncSlice
VAProfileH264StereoHigh : VAEntrypointVLD
VAProfileH264StereoHigh : VAEntrypointEncSlice
VAProfileVC1Simple : VAEntrypointVLD
VAProfileVC1Main : VAEntrypointVLD
VAProfileVC1Advanced : VAEntrypointVLD
VAProfileNone : VAEntrypointVideoProc
VAProfileJPEGBaseline : VAEntrypointVLD
(工作)vdpauinfo 应该显示类似的内容:
Decoder capabilities:
name level macbs width height
----------------------------------------------------
MPEG1 --- not supported ---
MPEG2_SIMPLE --- not supported ---
MPEG2_MAIN --- not supported ---
H264_BASELINE 51 16384 2048 2048
H264_MAIN 51 16384 2048 2048
H264_HIGH 51 16384 2048 2048
VC1_SIMPLE --- not supported ---
VC1_MAIN --- not supported ---
VC1_ADVANCED --- not supported ---
MPEG4_PART2_SP --- not supported ---
MPEG4_PART2_ASP --- not supported ---
DIVX4_QMOBILE --- not supported ---
DIVX4_MOBILE --- not supported ---
DIVX4_HOME_THEATER --- not supported ---
DIVX4_HD_1080P --- not supported ---
DIVX5_QMOBILE --- not supported ---
DIVX5_MOBILE --- not supported ---
DIVX5_HOME_THEATER --- not supported ---
DIVX5_HD_1080P --- not supported ---
H264_CONSTRAINED_BASELINE 51 16384 2048 2048
H264_EXTENDED --- not supported ---
H264_PROGRESSIVE_HIGH --- not supported ---
H264_CONSTRAINED_HIGH --- not supported ---
H264_HIGH_444_PREDICTIVE --- not supported ---
HEVC_MAIN --- not supported ---
HEVC_MAIN_10 --- not supported ---
HEVC_MAIN_STILL --- not supported ---
HEVC_MAIN_12 --- not supported ---
HEVC_MAIN_444 --- not supported ---
这是我系统的(正确)输出。VA-API 和 VDPAU 都提供加速。您的问题是 VDPAU 后端未提供正确的加速。这就是为什么当 VDPAU 被禁用(VDPAU_DRIVER=vdpau 设置)时,您会得到正确的输出,但没有加速。
因此,假设您已正确设置 VA-API,请为 VDPAU 安装 VA-API 后端。请执行以下操作:
apt install libvdpau-va-gl1
并尝试使用 VDPAU_DRIVER=va_gl
此外,由于您在 VA-API 上使用 VDPAU,因此只需省去中间人,并且(在 VLC 上)直接使用 VA-API 硬件加速(VLC 支持该功能)。
另外,您可以使用 mpv(它是一款出色的播放器,原生支持 VA-API)。
答案2
由于您有 Radeon (AMD/ATI) 显卡,因此您应该安装 Radeon 驱动程序。有两种 vdpau“类型”:一种是 intel(由内核提供),一种是 AMD(由闭源 radeon 驱动程序提供)。该错误可以解释为解决了错误的 VDPAU 驱动程序。