linux下浏览器开启视频解码硬件加速

背景

偶然发现使用浏览器观看视频会消耗150%的CPU资源,
一看之下 chrome://gpu 里竟然显示不支持视频解码的硬件加速.
然后重新跑去windows下确认,的确linux下的许多地方都是无法加速.尚有缺憾.

于是尝试开启浏览器的视频解码硬件加速.

一些方法

基于chromium都可以使用一些通用的方法.

chromium

尽管chromium可以使用 ~/.config/chromium-flags.conf.
但似乎不如直接在浏览器里配置选项来得更有保证.

打开 chrome://flags,将以下4个参数设置为enabled

  1. ignore-gpu-blocklist
  2. enable-gpu-rasterization
  3. enable-zero-copy
  4. enable-accelerated-video-decode(直接决定视频解码的硬件加速结果)

vivaldi

很遗憾目前只支持前3个参数.
第4个参数暂时不支持,因此使用启动参数的方式支持.

1
vivaldi-stable --use-gl=desktop --enable-features=VaapiVideoDecoder

如果需要从launcher启动,
可以拷贝 /usr/share/applications/vivaldi-stable.desktop
~/.local/share/applications/vivaldi-stable.desktop
而后在每个 Exec 中带上参数.

目前来看一些常用的launcher都会优先使用用户的配置.
即便无法如此,也可以在每次升级软件后,手动重新配置系统级的配置.

效果

看视频时的CPU消耗:

vivaldi: 90~160 => 50~100
chromium: 80~110 => 40~70

大约都能降低1/3,也还不错.

至于为什么vivaldi在性能上表现如此糟糕,暂时不清楚原因.

其他情况下的视频硬件加速配置

实现视频加速的API

  1. VA-API(Video Acceleration API) Intel家的
  2. VDPAU(Video Decode and Presentation API for Unix) Nvidia家的
  3. NVDECODE/NVENCODE nvidia家专用的

VA-API的驱动支持

  1. nvidia显卡

    libva-vdpau-drivernvidia-utils

  2. AMD核显

    libva-vdpau-drivermesa

  3. 配置

    如果没有问题,不需要刻意配置

    1
    2
    export LIBVA_DRIVER_NAME=vdpau  # Nvidia
    export LIBVA_DRIVER_NAME=radeonsi # AMD
  4. 检测

    需要安装 libva-utils 之后使用 vainfo 命令.

VDPAU的驱动支持

  1. nvidia显卡

    nvidia-utils 包揽所有功能.

  2. AMD核显

    mesa-vdpau 公版驱动

  3. 配置

    如果没有问题,不需要刻意配置

    1
    2
    export VDPAD_DRIVER=nvidia      # nvidia
    # AMD比较麻烦,查起来比较困难点. rg vdpau -i /var/log/Xorg.0.log
  4. 检测

    需要安装 vdpauinfo 并使用同名命令.

参考

  1. 主要参考
  2. 硬件视频加速(ArchWiki)
  3. chromium的硬件视频加速(ArchWiki)