我安装了 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
检查生锈的代码)。我们从vdpauinfo
HEVC 配置文件中看到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,将值Threads
从0
(自动)更改为1
。
您已经完成了!
但这是一种手动的解决方法:请记住,要观看非 GPU 加速的视频,您应该重置 VLC FFmpegThreads
设置以使用所有 CPU 核心……或者使用 libav 从源代码编译 VLC。