N卡LinuxB站视频硬解-使用nvidia-vaapi-driver

nvidia-vaapi-driver配置

  • N卡驱动安装
  • 安装nvidia-vaapi-driver
  • 内核参数设置
  • 环境变量配置
  • 安装ffmpeg
  • Firefox软件内参数设置
  • 验证
    • vainfo输出
    • nvidia-settings

在使用linux系统的firefox看B站视频时发现不支持硬件解码,而笔记本开启了独显直连后只用N卡,N卡并不支持vaapi,支持vdpau,而firefox不支持使用vdpau作硬解,很矛盾。

在AUR源中的libva-nvidia-driver可以解决这个问题,github仓库的readme中有需要配置的参数,详见elFarto的仓库

本机环境:

  • GeForce RTX 2060(notebook)

  • 显卡驱动版本:535.104.05

N卡驱动安装

使用该库需要安装闭源N卡驱动,manjaro可以在安装时选装,Debian 12需要在英伟达官网下载。先把X server停用,再安装闭源驱动。

# 查看默认X Server显示管理器
cat /etc/X11/default-display-manager
# /usr/sbin/gdm3
sudo service gdm3 stop

停用后按Ctrl+Alt+F3进tty,再运行.run文件按步骤安装。若需要停用开源驱动nouveau,则在安装程序停用默认显卡驱动后,执行以下命令:

sudo update-initramfs -u
sudo reboot

重启后关闭gdm3,再执行安装程序。

安装nvidia-vaapi-driver

Manjaro使用以下命令进行安装:

#manjaro/arch linux
yay -S libva-nvidia-driver

Debian 12软件源中内置的版本为0.0.8,最新版为0.0.10,因此下载源码自行编译安装。

下载地址:https://github.com/elFarto/nvidia-vaapi-driver/archive/refs/tags/v0.0.10.zip

首先安装所需的依赖:

sudo apt install meson gstreamer1.0-plugins-bad libffmpeg-nvenc-dev libva-dev libegl-dev libgstreamer-plugins-bad1.0-dev

在源码解压位置执行如下命令:

meson setup build
sudo meson install -C build

即可安装成功。

内核参数设置

nvidia-vaapi-driver需要将nvidia_drm使用参数nvidia-drm.modeset=1进行配置,在GRUB里进行配置:

sudo vim /etc/default/grub

GRUB_CMDLINE_LINUX_DEFAULT加上"nvidia-drm.modeset=1"

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash acpi_osi=linux nvidia-drm.modeset=1"

ESC+:+wq退出后执行以下命令:

sudo update-initramfs -u
sudo update-grub

重启后生效。

环境变量配置

sudo vim /etc/environment

/etc/environment中添加以下环境变量:

# Controls which backend this library uses. Either egl (default), or direct. See direct backend for more details.
NVD_BACKEND=direct
# Disables the sandbox for the RDD process that the decoder runs in.
MOZ_DISABLE_RDD_SANDBOX=1
# For libva versions prior to 2.15, this forces libva to load the nvidia backend.
LIBVA_DRIVER_NAME=nvidia
# Required for the 470 driver series only. It overrides the list of drivers the glvnd library can use to prevent Firefox from using the MESA driver by mistake.
_EGL_VENDOR_LIBRARY_FILENAMES=/usr/share/glvnd/egl_vendor.d/10_nvidia.json

ESC+:wq退出后执行

source /etc/environment

即可生效。

安装ffmpeg

使用nvidia-vaapi-driver需要安装支持vaapi的ffmpeg,Debian 12和Manjaro 22.1.3的软件源都含有这种ffmpeg。

sudo apt install ffmpeg

验证方法:

ffmpeg -hwaccels

输出文本中应该包含vaapi

Firefox软件内参数设置

地址栏输入about:config进入参数设置页面,更改以下参数:

设置原因
media.ffmpeg.vaapi.enabledtrueRequired, enables the use of VA-API.
media.rdd-ffmpeg.enabledtrueRequired, default on FF97. Forces ffmpeg usage into the RDD process, rather than the content process.
media.av1.enabledfalseOptional, disables AV1. If your GPU doesn’t support AV1, this will prevent sites using it and falling back to software decoding.
gfx.x11-egl.force-enabledtrueRequired, this driver requires that Firefox use the EGL backend. It may be enabled by default. It is recommended to test it with the MOZ_X11_EGL=1 environment variable before enabling it in the Firefox configuration.
widget.dmabuf.force-enabledtrueRequired on NVIDIA 470 series drivers, and currently REQUIRED on 500+ drivers due to a Firefox change. Note that Firefox isn’t coded to allow DMA-BUF support without GBM support, so it may not function completely correctly when it’s forced on.

表摘自elFarto的仓库

验证

vainfo输出

安装成功后,vainfo输出以下内容:

libva info: VA-API version 1.17.0
libva info: User environment variable requested driver 'nvidia'
libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/nvidia_drv_video.so
libva info: Found init function __vaDriverInit_1_0
libva info: va_openDriver() returns 0
vainfo: VA-API version: 1.17 (libva 2.12.0)
vainfo: Driver version: VA-API NVDEC driver [direct backend]
vainfo: Supported profile and entrypoints
      VAProfileMPEG2Simple            :	VAEntrypointVLD
      VAProfileMPEG2Main              :	VAEntrypointVLD
      VAProfileVC1Simple              :	VAEntrypointVLD
      VAProfileVC1Main                :	VAEntrypointVLD
      VAProfileVC1Advanced            :	VAEntrypointVLD
      VAProfileH264Main               :	VAEntrypointVLD
      VAProfileH264High               :	VAEntrypointVLD
      VAProfileH264ConstrainedBaseline:	VAEntrypointVLD
      VAProfileHEVCMain               :	VAEntrypointVLD
      VAProfileVP8Version0_3          :	VAEntrypointVLD
      VAProfileVP9Profile0            :	VAEntrypointVLD
      VAProfileHEVCMain10             :	VAEntrypointVLD
      VAProfileHEVCMain12             :	VAEntrypointVLD
      VAProfileVP9Profile2            :	VAEntrypointVLD
      VAProfileHEVCMain444            :	VAEntrypointVLD

nvidia-settings

打开一个B站视频播放,右键视频统计信息,可以发现解码方式为AVC。

在播放视频的同时打开英伟达控制面板,可以发现,Video Engine Utilization已经不为0,证明已经在使用硬件解码了。

硬解成功

  • 10
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
### 回答1: 以下是几个值得推荐的 Linux 学习视频: 1.《Linux 基础入门教程》(B 站 UP 主:黑马程序员):该视频Linux 的历史、安装、基本命令、文件系统、用户管理、软件安装等方面进行了详细讲解,适合初学者入门。 2.《Linux 系统管理》(B 站 UP 主:极客时间):该视频Linux 系统的安装、网络配置、用户管理、磁盘管理、安全设置等方面进行了深入讲解,适合想要深入学习 Linux 系统管理的人。 3.《Linux 命令行》(B 站 UP 主:鸟哥的 Linux 私房菜):该视频Linux 命令行的基础、常用命令、管道、正则表达式等方面进行了详细讲解,适合想要深入学习 Linux 命令行的人。 4.《Linux 内核原理》(B 站 UP 主:极客时间):该视频Linux 内核的结构、进程管理、内存管理、文件系统、网络协议等方面进行了深入讲解,适合想要深入了解 Linux 内核原理的人。 以上视频都是比较优质的 Linux 学习资源,希望能对你有所帮助。 ### 回答2: Linux作为在计算机领域非常流行的操作系统之一,从事技术工作人员和计算机专业学生,都需要学习它的部分技能或全部技能。而对于初学者而言,通过学习视频的形式来掌握基本的Linux操作和指令用法,能够更快更好地有一个知识框架。本文将推荐几个值得学习的Linux视频教程。 1.《Linux鸟哥的私房菜》 《Linux鸟哥的私房菜》这个教程是许多人学习Linux的首选。鸟哥做教学视频已经有13年的历史,他的基础知识讲解和实战案例都能够让人轻松理解和掌握。他的视频难度适中,适合从零基础开始入门的初学者。同时,这个教程也是国内较为知名的Linux学习视频,在B站视频网站均有收录。 2.《Linux操作系统完全教程》 《Linux操作系统完全教程》是纯英文教学视频,但中文在线字幕十分清晰,能够让用户更好地理解。这个教程详细讲解了Linux操作系统的管理,网络管理等方面的知识,同时也讲解了Linux的架构和设计模型。这个教程难度较高,适合已具备Linux一定基础并想要进一步拓展的用户。 3.《Linux命令行》 《Linux命令行》是由数据科学家William Shotts编写而成,主要讲解Linux命令行的基础知识和使用方法,其中包括了文件和目录管理,文本编辑,系统管理等一系列知识。这个教程语言简单,易于理解,课程内容又非常实用。值得一提的是,《Linux命令行》还为用户提供了练习题目,能够帮助用户更好地理解和掌握。 总之,以上推荐的三个Linux视频教程,无论是针对零基础还是进阶学习而言,都有着较为详细的讲解和相对应的实战操作,对于Linux操作系统的学习和掌握都是非常优质的学习资料。当然,也有其他优秀的Linux视频教程,在学习中具体进行选择。 ### 回答3: Linux是一款开源的操作系统,向IT从业者提供了一个稳定、安全和可定制化的环境。学习Linux不仅可以加强自己的技能,还可以提高自己在行业内的竞争力。在学习Linux时,如何选择一个适合自己的学习视频也变得尤为重要。以下是我推荐的一些Linux学习视频: 1. Linux Command Line Basics by Learn Linux TV:这个视频系列是由一位经验丰富的Linux管理员讲解的,专注于介绍Linux命令行界面的基础知识。视频从入门开始,循序渐进地讲解Linux命令行操作。观看这个教程,可以让你更深入地理解Linux操作系统的基本知识。 2. Linux Mastery by Udemy:这是一个在Udemy上很受欢迎的课程,旨在让初学者逐步掌握Linux系统配置、管理和维护等方面的知识。课程包括多个模块,涵盖Linux基础知识、Shell编程、网络管理等多个方面。 3. The Complete Linux LPIC-1 Certification Course by Udemy:这个课程是专为那些准备参加Linux Professional Institute LPIC-1认证考试的学生设计的。课程覆盖了考试的全部内容,包括Linux系统管理、Shell编程、网络管理等方面。此外,课程还提供了模拟考试和练习试题,并详细讲解答案。 4. Linux Administration Bootcamp:这是一个由Linux管理员讲解的课程,涵盖了Linux系统管理、命令行操作、文件系统和磁盘管理等多个方面。课程以实践为导向,学生需要亲自在Linux环境中进行操作练习,以巩固知识。 总体而言,选择适合自己的 Linux 学习视频需要考虑自己的学习目标和现有的Linux技能水平。上述视频课程都拥有很高的评价和大量的学习者,可以满足大多数学习者的需求。由于Linux操作系统在IT行业的应用越来越广泛,通过学习Linux可以提升自己的职业竞争力。希望这些推荐的视频能帮助读者更好地学习和掌握Linux
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Lyre丶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值