简而言之:无法在 Chrome 中启用硬件视频加速。我的台式机集成了 GPU Intel UHD 750 和 Core i5 11600,它运行 Kubuntu 20.04。
最初,我根本没有硬件加速,所以即使是 VLC 播放视频也没有加速,尽管我已经intel-media-va-driver-non-free
安装了。的输出vainfo
是
libva info: VA-API version 1.7.0
libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/iHD_drv_video.so
libva info: Found init function __vaDriverInit_1_7
libva info: va_openDriver() returns 1
libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/i965_drv_video.so
libva info: Found init function __vaDriverInit_1_6
libva info: va_openDriver() returns -1
我搜索了解决方案,但没有找到有同样问题的人。我决定就相关问题遵循一些建议。首先,我将内核从 5.11 更新到 5.15,但这并没有帮助。然后我添加了一个 repo 来安装英特尔驱动程序的 21.xx 版本,如此处评论中所建议的:https ://githubmemory.com/repo/HaveAGitGat/Tdarr/issues/452 。在升级了一些软件包并安装了一些保留的软件包后,我得到了视频加速。的当前输出vainfo
为
libva info: VA-API version 1.12.0
libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/iHD_drv_video.so
libva info: Found init function __vaDriverInit_1_12
libva info: va_openDriver() returns 0
vainfo: VA-API version: 1.12 (libva 2.12.0)
vainfo: Driver version: Intel iHD driver for Intel(R) Gen Graphics - 21.3.3 (6fdf88c)
vainfo: Supported profile and entrypoints
VAProfileNone : VAEntrypointVideoProc
VAProfileNone : VAEntrypointStats
等等。
下一步是在 Chrome 中启用硬件加速。我按照这里的说明https://www.linuxupprising.com/2021/01/how-to-enable-hardware-accelerated.html但没有帮助。该chrome://gpu
选项卡显示以下内容
图形功能状态
- 帆布:仅限软件。禁用硬件加速
- 画布进程外光栅化:已禁用
- 合成:仅限软件。禁用硬件加速
- 多个光栅线程:禁用
- 进程外光栅化:禁用
- OpenGL:已禁用
- 光栅化:仅限软件。禁用硬件加速
- 原始绘图:已禁用
- Skia 渲染器:已启用
- 视频解码:仅限软件。禁用硬件加速
- Vulkan:已禁用
- WebGL:已禁用
- WebGL2:已禁用
检测到的问题
- 已通过阻止列表、about:flags 或命令行禁用加速视频解码。
禁用功能:video_decode - Gpu 合成已通过阻止列表、about:flags 或命令行禁用。浏览器将退回到软件合成,硬件加速将不可用。
禁用功能:gpu_compositing - GPU 进程无法启动:GPU 进程使用 SwiftShader 崩溃太多次。
禁用功能:所有
...
我还尝试在 Firefox 中启用视频加速,但失败了。此外,我安装了 Chromium,chrome://gpu
现在显示几乎所有功能都已启用,但视频加速未启用。
请帮忙!
免责声明
您可能不会在基于 Chrome 的浏览器中真正获得硬件加速。但我们不要投降:有些事情还是可以做的。
我与您的设置的区别是:
TigerLake-LP GT2 [Iris Xe Graphics]
来自lspci
)。我想配方应该是一样的。
需要的包
我有这些(名称可能与 Ubuntu 不同):
您可能还需要一些工具来检查:
浏览器设置
我设置它们
chrome://flags
,然后重新启动浏览器。这也适用于 Chromium,而 Vivaldi 内部 URL 位于vivaldi://
前缀上。浏览器启动
您需要使用额外的选项重新启动浏览器:
您可以编辑您的启动配置文件以添加此配置文件。我的现在看起来像这样:
检查状态
这是最好的,恕我直言,你能做到。
浏览器
重新启动后,您可以转到内部 URL
chrome://gpu
并检查。这是我自己的状态:我保留
Raw Draw: Disabled
是因为它在浏览器中表现不佳。如果您想尝试它,请返回标志并启用“启用原始绘制”标志。vainfo
如果您安装了它,只需运行它。我的工作是这样的:
vdpauinfo
和上面一样。某处存在导致核心转储的错误。不过,似乎没有人注意到这一点。:-(
但是,使用
MALLOC_CHECK_
并没有多大帮助。我怀疑某些 VDPAU 库中存在错误,导致此错误以及随后无法使用硬件加速。不过只是猜测。
真实世界
现实可能会令人失望地偏离我们的愿望。
在一个选项卡上播放视频(我使用 Youtube),然后在另一个选项卡上打开
chrome://media-internals
,选择播放器选项卡。在最近播放器中选择名为 的项目blob:https://www.youtube.com/...
。在Player 属性中,您可以找到这样的行:
这不是硬件解码器,应该是
VDAVideoDecoder
。在下一个日志区域中,您可以找到一些线索:
您也可以
intel_gpu_top
在另一个终端窗口中使用(sudo
在 ArchLinux 中需要,不确定 Ubuntu)。我有四个可用的“引擎”:“渲染/3D”、“Blitter”、“视频”和“视频增强”。
During the browser play I can see the first two engines being busy, while "Video" is just idling. The video decoder engine provided by my GPU isn't in use at all!
It seems like the browser is not able to use hardware accelerated video, despite it thinks it should.
Let's make a different check.
VLC
It looks like VLC can make use of the hardware acceleration. Start it up with the GUI and go to Tools > Preferences > Input & Codecs and choose "Automatic" option under Hardware-accelerated decoding. Then close it and play a test video from command line (to get some diagnostics output).
In the last two lines is says it is using hardware decoding. As we don't trust the logs, in another terminal window you can run
intel_gpu_top
and see that the "Video" resource is now being actively used.Firefox
I know this is a little bit beyond the original scope (Chrome), but I think it's worth mentioning it. With Firefox it is possible to see some hardware accelerated video decode in action, thanks to VA-API, both under XOrg and Wayland.
A guide on ArchLinux' wiki (link below) will guide you (at your own risk) on how to modify a few toggles to enable hardware accelerated video while our usual
intel_gpu_top
will show whether the GPU is working or not.Vimeo, for example, seems to be able to take advantage of this support, while YouTube requires a specific browser extension in order to disable the VP9 video codec.
Similarly, WebRTC-based applications like Google Meet seem to work, if you also set
media.webrtc.platformencoder
totrue
. Mirosoft Teams is not supported under Firefox.That same extension exists for Chrome, but it seems it is not as effective as in Firefox.
Wrap up
It looks like hardware acceleration for video decoding is kicking and live in Linux.
This would then point at bugs in the Chromium-based browser(s) more than in the environment.
Maybe the future will be brighter. But not now.
References
Mainly from ArchLinux wiki, but I think those details can be applied to a large number of other distros.
https://wiki.archlinux.org/title/Hardware_video_acceleration https://wiki.archlinux.org/title/Chromium#Hardware_video_acceleration https://wiki.archlinux.org/title/VLC_media_player#Hardware_video_acceleration https://wiki.archlinux.org/title/firefox#Hardware_video_acceleration