我將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就是這樣!