我将Ubuntu 24.04与VAAPI一起使用浏览器上的硬件视频解码。要启用在Linux上的Google Chrome和Microsoft Edge中进行硬件解码,您需要添加命令行参数(“ - enable-features = vaapivideodecoder,vaapivideoencoder,vaapivideoencoder,vaapivideodecodecodecodelinuxgl)。线的结尾从他们的.desktop文件开始
这很简单,但是问题是,每当这些浏览器中的任何一个软件更新时,它的.desktop文件就会被覆盖,因此您必须再次进行。您可以将更新的桌面文件放在〜/.local/share/应用程序中,它们在其中覆盖了原件,但不会被覆盖,但是一次又一次的更新会更改浏览器图标的路径,以使浏览器按钮消失了!厌倦了此之后,我决定写这个脚本。
运行它,它将确保列出的桌面文件中没有以所需参数结尾的任何EXEC行都会添加它们,但仍然可以将它们的任何内容都放在单独的情况下。更新的文件将被复制到〜/.Local/share/应用程序,其中将覆盖最初安装的.desktop文件。由于它不会受到后续更新的影响,因此VAAPI参数将生存下来,但有时会在更新中更改图标路径等,这需要重新运行此脚本才能考虑到这一点。
DesktopFiles数组应具有相应的命令行参数,该参数应用于该数组中列出的所有桌面文件。阵列应包含您想要能够保留相应命令行参数的所有浏览器桌面文件的完整路径。我的是: -
用于基于铬的浏览器> = =版本131
declare -a desktopFiles=( " /var/lib/snapd/desktop/applications/brave_brave.desktop "
" /var/lib/snapd/desktop/applications/chromium_chromium.desktop "
" /usr/share/applications/microsoft-edge.desktop "
" /usr/share/applications/google-chrome.desktop " )
params= " --enable-features=AcceleratedVideoDecodeLinuxZeroCopyGL,AcceleratedVideoDecodeLinuxGL,AcceleratedVideoEncoder "用于基于Chromium <版本131的浏览器
declare -a desktopFiles2=() # None now, all browsers upgraded to version 131
params2= " --enable-features=VaapiVideoDecoder,VaapiVideoEncoder,VaapiVideoDecodeLinuxGL "参数变量设置为要确保的参数,将其附加到相应数组中列出的文件中的EXEC行。 processDesktopfiles函数与所需的Exec Line参数作为第一个参数和桌面文件路径阵列作为第二个参数,如下所示: -
processDeskTopFiles $params " ${desktopFiles[@]} "
processDeskTopFiles $params2 " ${desktopFiles2[@]} " 使用您的用户帐户运行脚本: -
./update-desktop-files.sh就是这样!