linux下浏览器开启视频解码硬件加速
背景
偶然发现使用浏览器观看视频会消耗150%的CPU资源,
一看之下 chrome://gpu
里竟然显示不支持视频解码的硬件加速.
然后重新跑去windows下确认,的确linux下的许多地方都是无法加速.尚有缺憾.
于是尝试开启浏览器的视频解码硬件加速.
一些方法
基于chromium都可以使用一些通用的方法.
chromium
尽管chromium可以使用 ~/.config/chromium-flags.conf
.
但似乎不如直接在浏览器里配置选项来得更有保证.
打开 chrome://flags
,将以下4个参数设置为enabled
- ignore-gpu-blocklist
- enable-gpu-rasterization
- enable-zero-copy
- 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
- VA-API(Video Acceleration API) Intel家的
- VDPAU(Video Decode and Presentation API for Unix) Nvidia家的
- NVDECODE/NVENCODE nvidia家专用的
VA-API的驱动支持
-
nvidia显卡
libva-vdpau-driver
与nvidia-utils
-
AMD核显
libva-vdpau-driver
与mesa
-
配置
如果没有问题,不需要刻意配置
1
2export LIBVA_DRIVER_NAME=vdpau # Nvidia
export LIBVA_DRIVER_NAME=radeonsi # AMD -
检测
需要安装
libva-utils
之后使用vainfo
命令.
VDPAU的驱动支持
-
nvidia显卡
nvidia-utils
包揽所有功能. -
AMD核显
mesa-vdpau
公版驱动 -
配置
如果没有问题,不需要刻意配置
1
2export VDPAD_DRIVER=nvidia # nvidia
AMD比较麻烦,查起来比较困难点. rg vdpau -i /var/log/Xorg.0.log -
检测
需要安装
vdpauinfo
并使用同名命令.