如何启用硬件加速

如何启用硬件加速

我安装了 Ubuntu 16.04,并且拥有 NVIDIA GTX 1070 OC。我添加了这个 PPA:

ppa:graphics-drivers/ppa

我为我的 GTX 1070 OC 安装了 nvidia-370 包。然后我使用 HEVC 编解码器播放 4K 视频文件,并希望启用硬件加速来硬件解码 HEVC 编解码器,但 mpv 播放器使用的是软件解码模式。我该如何解决这个问题?

答案1

免责声明:抱歉,但这是针对 VLC 而不是 mpv 播放器的答案。我认为 mpv 播放器存在错误或缺乏支持,因为在我的设置中,虽然 VLC 在低 CPU 下运行良好,但 mpv 播放器却不行。您可能会遇到 FFmpeg 多线程问题(请参阅第 4 点)。

我真的很难让它工作,但与 AMD 相比,我对 NVIDIA GTX 10*0(Pascal)HEVC 支持有限感到有点失望。

0. 检查 HEVC 配置文件支持

编辑:NVIDIA VDPAU 驱动程序自 450.51 版起支持 Linux 上的 HEVC Main 10 配置文件

检查媒体文件 HEVC 配置文件:您可以通过右键单击文件 > Properties>Audio/Video选项卡 > Video>来检查文件的 HEVC 配置文件Codec

检查驱动程序 HEVC 配置文件支持:切换到 NVIDIA 专有驱动程序(见下文)并运行:

$ vdpauinfo
Information string: NVIDIA VDPAU Driver Shared Library  367.57  [crop]
Decoder capabilities:

name                        level macbs width height
----------------------------------------------------
[crop]
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 ---

$ vdpauinfo
Information string: NVIDIA VDPAU Driver Shared Library  450.80.02  [crop]
Decoder capabilities:

name                        level macbs width height
----------------------------------------------------
[crop]
HEVC_MAIN                      153 262144  8192  8192
HEVC_MAIN_10                   153 262144  8192  8192
HEVC_MAIN_STILL                --- not supported ---
HEVC_MAIN_12                   153 262144  8192  8192
HEVC_MAIN_444                  --- not supported ---

1. 切换到 NVIDIA 专有驱动程序

您至少需要版本 R367 ( nvidia-367)。

 software-properties-gtk &

转到Additional drivers选项卡,检查NVIDIA binary driver并查看Apply更改。

2. 在 VLC 中启用硬件加速

当然,你必须在 VLC > Tools> Preferences( Simple) > Input / Codecs> Hardware-acceleration decoding=中启用硬件加速Auto。对于 NVIDIA,你可以VDPAU video decoder明确选择。

3. 将 VLC 更新至 2.2.4 或 3.0

VLC 2.2.2(Ubuntu 16.04)中存在几个错误,已在后续版本中修复(看:变更日志),这会导致以下误导性错误:

$ vlc --version
VLC media player 2.2.2 Weatherwax
$ vlc <file>
[crop]
[00007fa4b42cc5d8] vdpau_avcodec generic error: unsupported codec 1211250229 or profile 1

这显然是一个误导性和错误。很难说,但1211250229确实意味着AV_CODEC_ID_HEVC (可以通过编译来rustc检查生锈的代码。我们从vdpauinfoHEVC 配置文件中看到1=Main) 受支持。

目前,官方 VLC PPA 尚未提供 VLC 2.2.4(在这里查看稳定版本)。因此,请从主分支升级到 VLC 3.0(在这里检查主版本)但请记住这是一个夜间版本:

$ sudo add-apt-repository ppa:videolan/master-daily
$ sudo apt update
$ sudo apt install vlc
$ vlc --version
[crop]
VLC version 3.0.0-git Vetinari

4. 暂时禁用 VLC FFmpeg 多线程

由于这还不够,您现在可能会面临这个问题:

$ vlc <file> --verbose
[crop]
[00007f6bc4ccc688] avcodec decoder warning: thread type 1: disabling hardware acceleration

解释此主题在 VLC 论坛上:

这意味着您正在使用 FFmpeg,它不再允许同时启用硬件加速和线程。您需要使用 libav [但] 这是在编译 VLC 时决定的。您无法在运行时更改它。

在同一个线程中,有一个解决方法:在 VLC > 工具 > 偏好设置(全部) > 输入/编解码器 > 视频编解码器 >FFmpeg,将值Threads0(自动)更改为1

您已经完成了!

但这是一种手动的解决方法:请记住,要观看非 GPU 加速的视频,您应该重置 VLC FFmpegThreads设置以使用所有 CPU 核心……或者使用 libav 从源代码编译 VLC。

相关内容