Hardware video acceleration (简体中文)

From ArchWiki
(Redirected from VDPAU (简体中文))
Jump to navigation Jump to search

Tango-preferences-desktop-locale.png本文或本节需要翻译。要贡献翻译,请访问简体中文翻译团队Tango-preferences-desktop-locale.png

附注: 配置章节大部分内容未翻译(在 Talk:Hardware video acceleration (简体中文)# 中讨论)
翻译状态:本文是 VA-API翻译。上次翻译日期:2014-01-27。如果英文版本有所更改,则您可以帮助同步翻译。

硬件视频加速 让显卡进行视频的解码和编码,以减少CPU的负载并节省电力。

Linux 中有多种方式可以实现视频加速:

对于2007年以前的显卡,参见XvMC。大致的总览对比和应用支持,参见#支持的格式#支持的软件

安装

Intel

Intel graphics 开源驱动支持 VA-API:

NVIDIA

Nouveau 开源驱动支持 VA-API 和 VDPAU:

NVIDIA 专有驱动通过 nvidia-utils 支持以下:

  • GeForce 8 系列和更新的 GPU 的 VDPAU;
  • Fermi 和更新的 GPU 的 NVDECODE [1];
  • Kepler 和更新的 GPU 的 NVENCODE

ATI/AMD

ATIAMDGPU 开源驱动支持 VA-API 和 VDPAU:

AMDGPU PRO 专有驱动是基于 AMDGPU 驱动的,所以支持 VA-API 和 VDPAU。

翻译层

如果设备驱动不支持 VA-API,可以通过以下方式来曲线救国:

如果设备驱动不支持 VDPAU,可以这样曲线救国:

Verification

Your system may work perfectly out-of-the-box without needing any configuration. Therefore it is a good idea to start with this section to see that it is the case.

提示: mpv is great for testing hardware acceleration in practice.

检验 VA-API

运行 libva-utils 包提供的 vainfo 来检查 VA-API 的设置:

$ vainfo
libva info: VA-API version 0.39.4
libva info: va_getDriverName() returns 0
libva info: Trying to open /usr/lib/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.3)
vainfo: Driver version: Intel i965 driver for Intel(R) Skylake - 1.7.3
vainfo: Supported profile and entrypoints
      VAProfileMPEG2Simple            :	VAEntrypointVLD
      VAProfileMPEG2Simple            :	VAEntrypointEncSlice
      VAProfileMPEG2Main              :	VAEntrypointVLD
      VAProfileMPEG2Main              :	VAEntrypointEncSlice
      VAProfileH264ConstrainedBaseline:	VAEntrypointVLD
      VAProfileH264ConstrainedBaseline:	VAEntrypointEncSlice
      VAProfileH264ConstrainedBaseline:	VAEntrypointEncSliceLP
      VAProfileH264Main               :	VAEntrypointVLD
      VAProfileH264Main               :	VAEntrypointEncSlice
      VAProfileH264Main               :	VAEntrypointEncSliceLP
      VAProfileH264High               :	VAEntrypointVLD
      VAProfileH264High               :	VAEntrypointEncSlice
      VAProfileH264High               :	VAEntrypointEncSliceLP
      VAProfileH264MultiviewHigh      :	VAEntrypointVLD
      VAProfileH264MultiviewHigh      :	VAEntrypointEncSlice
      VAProfileH264StereoHigh         :	VAEntrypointVLD
      VAProfileH264StereoHigh         :	VAEntrypointEncSlice
      VAProfileVC1Simple              :	VAEntrypointVLD
      VAProfileVC1Main                :	VAEntrypointVLD
      VAProfileVC1Advanced            :	VAEntrypointVLD
      VAProfileNone                   :	VAEntrypointVideoProc
      VAProfileJPEGBaseline           :	VAEntrypointVLD
      VAProfileJPEGBaseline           :	VAEntrypointEncPicture
      VAProfileVP8Version0_3          :	VAEntrypointVLD
      VAProfileVP8Version0_3          :	VAEntrypointEncSlice
      VAProfileHEVCMain               :	VAEntrypointVLD
      VAProfileHEVCMain               :	VAEntrypointEncSlice

VAEntrypointVLD 指的是你的显卡能够解码这个格式,VAEntrypointEncSlice 指的是你的显卡可以编码这个格式。

上面的例子里,i965 驱动正在运行,所以你可以看见这一行:

libva info: Trying to open /usr/lib/dri/i965_drv_video.so

如果运行 vainfo 的时候出现了下面的错误提示:

libva info: va_openDriver() returns -1
vaInitialize failed with error code -1 (unknown libva error),exit

你要重新配置正确的驱动,详见Hardware video acceleration#Configuring VA-API.

Verifying VDPAU

Install vdpauinfo to verify if the VDPAU driver is loaded correctly and retrieve a full report of the configuration:

$ vdpauinfo
display: :0   screen: 0
API version: 1
Information string: G3DVL VDPAU Driver Shared Library version 1.0

Video surface:

name   width height types

420 16384 16384 NV12 YV12 422 16384 16384 UYVY YUYV 444 16384 16384 Y8U8V8A8 V8U8Y8A8 Decoder capabilities: name level macbs width height
MPEG1 --- not supported --- MPEG2_SIMPLE 3 9216 2048 1152 MPEG2_MAIN 3 9216 2048 1152 H264_BASELINE 41 9216 2048 1152 H264_MAIN 41 9216 2048 1152 H264_HIGH 41 9216 2048 1152 VC1_SIMPLE 1 9216 2048 1152 VC1_MAIN 2 9216 2048 1152 VC1_ADVANCED 4 9216 2048 1152 ..

支持的硬件

VA-API

开源驱动:

闭源驱动:

VDPAU

开源驱动:

闭源驱动:

支持的格式

VA-API

Open source Proprietary
AMD Intel Nvidia AMD Nvidia
MPEG2 解码 AMD Radeon 9500 或更新 Intel GMA 4500 或更新 Nvidia GeForce 8 或更新 AMD Radeon HD 4000 或更新 Nvidia GeForce 8 或更新
MPEG4 解码 AMD Radeon HD 6000 或更新 -- Nvidia GeForce 200 或更新 AMD Radeon HD 6000 或更新 Nvidia GeForce 200 或更新
H264 解码 AMD Radeon HD 4000 或更新 Intel GMA 45001, Ironlake Graphics 或更新 Nvidia GeForce 8 或更新 AMD Radeon HD 4000 或更新 Nvidia GeForce 8 或更新
VC1 解码 AMD Radeon HD 4000 或更新 Intel Sandy Bridge Graphics 或更新 Nvidia GeForce 8200, 8300, 8400, 9300, 200 或更新 AMD Radeon HD 4000 或更新 Nvidia GeForce 8 或更新
MPEG2 编码 -- Intel Ivy Bridge Graphics 或更新 -- -- --
H264 编码 -- Intel Sandy Bridge Graphics 或更新 -- -- --

1libva-intel-driver-g45-h264AUR 软件包为其提供支持。具体方法和注意事项参看: 在 GMA 4500 硬解 H.264

运行下面的命令以查看你的GPU支持哪些功能。这个命令由 libva-utils 软件包提供:

$ vainfo

VAEntrypointVLD 表示你可以解码该格式,VAEntrypointEncSlice 表示你可以编码该格式。

VDPAU

开源 闭源
AMD Intel Nvidia AMD Nvidia
MPEG2 decoding Radeon 9500 and newer
2
GeForce 8 and newer
2
GeForce 8 and newer
MPEG4 decoding Radeon HD 6000 and newer
2
GeForce 200 and newer
2
GeForce 200 and newer
H.264 decoding Radeon HD 4000 and newer GMA 45001, Ironlake Graphics and newer GeForce 8 and newer Radeon HD 4000 and newer GeForce 8 and newer
HEVC (H.265) decoding
2
2
GeForce 9004 and newer
VC1 decoding Radeon HD 4000 and newer
2
GeForce 83 and newer
2
GeForce 83 and newer

要检查一个功能是否被 GPU 支持,可以使用 vdpauinfo 软件包提供的命令:

$ vdpauinfo

配置

环境变量 VDPAU_DRIVER 决定使用的驱动。可以全局设置针对一个用户 设置 环境变量

正确的驱动程序名称取决于您的设置:

  • Intel 使用 va_gl.
  • 开源AMD/ATI驱动程序,您需要将它设置为适当的驱动程序版本取决于你的GPU。
  • Nvidia的专有版本将变量设置为“nvidia”。
$ grep -i vdpau /var/log/Xorg.0.log
(II) RADEON(0): [DRI2] VDPAU driver: r300

然后设置 VDPAU 驱动:

VDPAU_DRIVER=r300

多显卡显示

对混合显卡(NVIDIA和AMD),需要设置下面环境变量。

$ export DRI_PRIME=1

更多信息,参阅 PRIME wiki 页面。

支持的软件

开启软件的硬件加速

|| flashpluginAUR
|| mplayer mplayer2AUR
  • gnome-mplayer — 开启硬件加速: Edit > Preferences > Player, 设置 Video Output 为 vdpau.
|| gnome-mplayer
  • SMplayer — 开启硬件加速: Options > Preferences > General > Video, 设置 Output driver 为 vdpau.
|| smplayer
  • bomi — 硬件加速可以启用: Preferences > Video > Hardware acceleration.
https://bomi-player.github.io || bomiAUR[损坏的链接:package not found] bomi-gitAUR
|| mpv
|| vlc

GStreamer

安装 gstreamer-vaapi 软件包,它存在于官方软件仓库

$ gst-launch-1.0 playbin uri=file:///path/to/foobar.mpeg

如果发现了支持的格式,VA-API会自动被使用。

基于GStreamer的播放器:

  • totem: 不需要配置。

MPlayer

安装 mplayer-vaapiAUR 软件包,它存在于官方软件仓库

$ mplayer -vo vaapi -va vaapi foobar.mpeg
  • -vo - 指定 vaapi 视频输出驱动
  • -va - 指定 vaapi 视频解码驱动
注意: 你也可以配合VDPAU后端使用 mplayer2AUR 。详情参看 MPlayer (简体中文)#启用 VDPAU

基于 MPlayer 的播放器:

  • gnome-mplayer: 开启硬件加速的方法: 编辑 > 首选项 > 播放器, 并设置视频输出vaapi
  • smplayer: 开启硬件加速的方法: 选项 > 首选项 > 常规 > 视频, 并设置输出驱动vaapi

VLC media player

安装 vlc 软件包,它位于官方软件仓库。

开启硬件加速的方法: 工具 > 首选项 > 输入 / 编解码器, 然后设置 硬件加速解码视频加速 (VA) API