视频无法正确播放,视频驱动程序问题

视频无法正确播放,视频驱动程序问题

每当我使用 Media Player 或 VLC 打开视频、mkv、mp4 等时,所有内容都会显示如下:

1

它曾经运行良好,但我担心我在尝试让 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 驱动程序。

相关内容