当前个人电脑(PC)的处理器通常足以顺畅处理各种类型的内容。然而,在观看视频等特定任务时,处理器可能会承受更高的负荷。尽管如此,播放通常还是平稳进行,因为流媒体服务会自动降低视频质量以适应网速或PC性能不足的情况。
然而,减少CPU的负荷是有意义的,因为这可以降低功耗,延长笔记本电脑电池寿命。PC的图形单元(GPU)位于主处理器中、单独的图形芯片或专用显卡上。除了显示桌面外,GPU通常很少有其他工作要做。但在播放(解码)视频方面,GPU往往比CPU更强大。
此外,GPU在将视频转换为其他格式(编码)时也能提供帮助。整体功耗降低,视频可以在更高品质水平下播放或更快地转换。
是否以及如何通过图形芯片利用硬件加速取决于Linux下的多个因素:
还有几个接口可用于不同的应用领域,可以用于硬件加速:
媒体播放器通常会自动识别可用的接口并默认使用硬件加速。然而,常见的图形芯片在网页浏览器中通常不提供此功能。
目前的图形芯片提供了对H264(AVCHD)、H265(HEVC)和VP9编解码器的支持。这意味着你已经拥有了足够的支持,因为YouTube通常使用H264或VP9。
你可以从Nvidia、Intel和AMD了解芯片的功能。
在未来几年内,YouTube将越来越多地采用免许可费的AV1编解码器,这是VP9的改进版本。Netflix也将开始使用AV1。
然而,只有较新的图形芯片,如Intel Tiger Lake(第11代)或Nvidia GeForce RTX 2050,才能提供AV1的硬件加速(解码器)。如果你需要使用AV1编码器进行转换,则需要GeForce RTX 4050、AMD Radeon RX 7000或Intel Arc的显卡。
即使图形芯片支持某种格式,驱动程序和接口也必须兼容。例如,如果安装了Nvidia驱动程序,VLC可以使用Vdpau进行硬件加速。
然而,像Mozilla Firefox或Google Chrome这样的浏览器依赖于VA-API,而Nvidia驱动程序不支持VA-API。从Ubuntu 23.04开始,只有官方发行版仓库才提供适合的VA-API驱动程序(“nvidia-vaapi-driver”)。对于Intel图形,标准支持包括VA-API;AMD驱动程序同时支持VA-API和Vdpau。
对于Nvidia芯片,开源驱动程序Nouveau也支持VA-API和VDPAU,但仅限于较旧的芯片组,如GeForce 700或600系列。
通常,Intel的图形单元位于PC的CPU中。自2011年左右以来,Quick Sync Video技术已被包含在Sandy Bridge处理器中(Intel HD Graphics 2000和3000)。Linux发行版通常包含了必要的驱动程序。
你可以通过名为“vainfo”的工具在终端中查看芯片组的功能。安装该工具包后,它将显示VA-API和Intel驱动程序的版本号。
你还可以看到支持的编解码器配置文件,如“VAProfileH264Main”和“VAProfileVP8Version0_3”。添加“VAEntrypointEncSliceLP”表示编码,即加速转换到这种格式也被支持。
你可以使用另一个工具检查程序是否实际使用VA-API。安装该工具后,启动`intel_gpu_top`,并在另一个终端中以`vlc`的形式调用媒体播放器。
注意:如果PC中安装了Nvidia独立显卡,那么Intel图形单元的功能将无法使用。对于带有混合图形的笔记本电脑,你可以在Nvidia X Server Settings工具中的“PRIME profiles”下切换到Intel芯片。如果没有此选项,请在终端中运行`prime-select intel`(将“intel”替换为“nvidia”或“on-demand”,视需要而定)。然后注销并重新登录。
Firefox在X11(Linux Mint)和Wayland(Ubuntu)下默认支持VA-API。调用内部地址“about:support”来检查其功能。在“Graphics”部分下方,你将看到“WebRenderer”。如果显示“WebRenderer (software)”,则硬件加速未激活。在“Media”部分,你可以查看哪些编解码器提供了硬件解码。
你可以在此处调用YouTube的高分辨率示例视频列表。右键点击视频并选择“Statistics for interested parties”,如果“Codec”后的行以“av01”开头,那么硬件加速仅在图形芯片已支持该格式时可用。
点击“Quality”右侧的齿轮图标,尝试不同的分辨率,直到“Codec”后出现“vp09”。
你还可以在Firefox中安装“Your Codecs”扩展,以阻止VP8、VP9或AV1格式。如果全部被阻止,YouTube将提供使用AVC1编解码器(H.264)的视频,但通常只提供最高分辨率为1080p的视频。
在YouTube设置中,通过顶部左侧的汉堡菜单(三条水平线),在“Playback and performance”下可以影响行为。如果图形芯片不支持AV1,激活“Prefer AV1 for SD”选项。这样,YouTube仅在低分辨率下使用AV1,从而减少CPU负荷。否则,它将切换到VP9或其他格式。在终端中,你可以使用`top -b -n1 | grep 'Cpu(s)'`来查看GPU支持如何减少CPU负荷。
对于AMD图形芯片,Linux会自动设置必要的驱动程序,并且可以通过vainfo检查功能。如果工具没有显示任何内容,可能是因为内核模块不支持芯片组。
对于较新的AMD图形卡,建议使用6.2或更高版本的内核。Ubuntu 22.04会自动通过更新安装该版本。Linux Mint 21用户应转到“系统管理 > 更新管理”,然后在菜单中选择“查看 > Linux内核”。选择一个较新的内核版本并点击“安装”。
如果你想检查GPU利用率,可以安装Radeon-Profile工具。安装完成后,输入以下三行命令:
GPU利用率的值会在你播放视频时增加。
互联网上有许多关于如何在基于Chromium的浏览器中激活硬件加速的技巧。根据程序版本和桌面环境的不同,你可能会成功。然而,在我们的测试中,我们未能让Google Chrome或Chromium合作。原因之一是Ubuntu和Linux Mint中的VA-API版本过时。目前,这些浏览器无论安装哪个版本都无法与AMD图形芯片配合工作。因此,描述仅适用于Intel图形芯片。
如果你不怕麻烦,可以更新库和驱动程序。为此,使用脚本“build_intel_media.sh”(仅适用于Intel芯片)。它安装开发所需的程序包,将源代码下载到“$HOME/src”文件夹,并编译文件。然后重启Linux。
在终端中,现在vainfo将显示VA-API版本1.21或更高(之前为1.14)。在Linux Mint中,通过应用程序管理将Chromium设置为系统包。Google Chrome尚未与新VA-API兼容,Snap包也不兼容Ubuntu。
Post by Polly