Google Chrome 88 (e versioni successive) ha reso disponibile la decodifica video con accelerazione hardware su Linux, ma non è abilitata per impostazione predefinita. Tuttavia, Google Chrome non è l'unico browser Web basato su Chromium che supporta l'accelerazione hardware su Linux. Questo articolo spiega come abilitare la decodifica video con accelerazione hardware nei browser Web Google Chrome, Brave, Vivaldi e Opera in esecuzione su Debian, Ubuntu, Pop! _OS o Linux Mint (solo Xorg).
L'utilizzo della decodifica video con accelerazione hardware nel browser Web dovrebbe comportare un minore utilizzo della CPU (e quindi un consumo della batteria inferiore) durante la riproduzione di video online.
Vale la pena notare che il browser Web Chromium disponeva di patch che consentivano da tempo di rendere disponibile la decodifica video con accelerazione hardware su Linux e alcune distribuzioni Linux lo hanno impacchettato con queste patch. Quindi gli utenti di Chromium hanno avuto l'accelerazione hardware su Linux per un po' di tempo, a seconda della loro distribuzione Linux o se hanno installato Chromium patchato in qualche altro modo. Ad esempio, sotto Ubuntu/Linux Mint c'è un PPA con build Chromium con patch VA-API. Pertanto, queste istruzioni potrebbero funzionare anche per il browser Chromium, a seconda di come è strutturato.
Vorrei anche aggiungere che queste istruzioni su come abilitare la decodifica video con accelerazione hardware funzionano anche su altre distribuzioni Linux, non solo distribuzioni Linux basate su Debian / Ubuntu, ma i nomi dei driver sono diversi.
Ho testato queste istruzioni con il desktop Ubuntu 20.10 con grafica Nvidia e ho installato i browser Web elencati di seguito con la loro confezione Ubuntu originale (con un pacchetto DEB). Testato anche con un laptop con grafica Intel (10a generazione) con Ubuntu 20.04 e 20.10. Non possiedo un dispositivo grafico AMD per testarlo.
Nel mio test, sono riuscito a far funzionare la decodifica video con accelerazione hardware in Linux con:
- Google Chrome stabile 88
- Coraggioso stabile 1.19
- Vivaldi snapshot 3.6 / [Modifica] Anche l'ultimo Vivaldi Stable 3.6 funziona
- Opera Beta 74
Ovviamente dovrebbe funzionare ancora con le versioni più recenti (es. Google Chrome 89, Brave 1.20, ecc.).
Per me, La decodifica video con accelerazione hardware non funzionava con:
Vivaldi stabile 3.5. Vivaldi Stable è ora la versione 36 e ha la decodifica video con accelerazione hardware funzionante- Opera stabile 73
- Microsoft Edge:non esiste nemmeno un
chrome://flags/#enable-accelerated-video-decode
Flag (per abilitare la decodifica video con accelerazione hardware).
Puoi utilizzare l'API VA su XWayland utilizzando il --use-gl=egl
Flag della riga di comando, ma non ho provato . A partire da Google Chrome 91 (e altri browser basati su Chromium 91) è necessario anche il --enable-features=VaapiVideoDecoder
Segnala.
[[Modifica]]Ho provato a seguire le istruzioni seguenti, quindi a utilizzare il browser con il --use-gl=egl
Segnala su Wayland, lavorando su un laptop con grafica Intel e riproduzione video con accelerazione hardware. Tuttavia, i video su questo laptop sono a scatti con queste impostazioni. Quindi in questo caso preferisco utilizzare la riproduzione video con accelerazione hardware di Firefox (su cui quando si utilizza Wayland e Firefox sullo stesso laptop, la riproduzione del video è fluida, ma l'utilizzo della CPU è maggiore rispetto a quando si utilizza un browser basato su Chromium).
Come abilitare la decodifica video con accelerazione hardware nei browser Web Google Chrome, Brave, Vivaldi e Opera su Debian, Ubuntu o Linux Mint (X11)
Cose che ti serviranno per abilitare la decodifica video con accelerazione hardware nei browser web sopra menzionati (ad esempio Google Chrome 88+, Brave 1.19+, Vivaldi 3.6+ e Opera 74+):
1. Abilita i seguenti flag del browser web:
Per i browser basati su Google Chrome 90 e precedenti:
- Sovrascrivi l'elenco di rendering del software:
chrome://flags/#ignore-gpu-blocklist
- Decodifica video con accelerazione hardware:
chrome://flags/#enable-accelerated-video-decode
Per i browser basati su Google Chrome 91 e versioni successive (non esiste più la decodifica video con accelerazione hardware, ma è necessario utilizzare un nuovo flag della riga di comando, vedere il passaggio 4):
- Sovrascrivi l'elenco di rendering del software:
chrome://flags/#ignore-gpu-blocklist
2. Installa il driver VA API per poter decodificare i media (sorgente), oltre a libva-drm2 e libva-x11-2 (questi 2 sono probabilmente già installati, ma per ogni evenienza; ho aggiunto questi 2 in una modifica successiva dopo aver notato che l'accelerazione hardware non funziona senza di loro, e una volta installato vainfo che contengono questi 2 pacchetti come dipendenze, sarebbe iniziare a lavorare):
- Per hardware Intel Gen 7 e precedenti:
sudo apt install i965-va-driver-shaders libva-drm2 libva-x11-2
- Per hardware Intel Gen 8+:
sudo apt install intel-media-va-driver-non-free libva-drm2 libva-x11-2
- Per i driver Nouveau e AMD (Non sono riuscito a far usare un browser per l'accelerazione hardware con i driver Nouveau, forse avrai più fortuna):
sudo apt install mesa-va-drivers libva-drm2 libva-x11-2
- Per driver Nvidia proprietari – Puoi installarli dai repository o utilizzando il driver GPU proprietario PPA (ad es. avviare la finestra di dialogo driver aggiuntivi su Ubuntu e installarlo da lì). Se stai utilizzando driver Nvidia proprietari, avrai bisogno di uno con patch anche
vdpau-va-driver
([[modifica]]Questa patch non supporta più VP9, anche se la tua grafica lo supporta, quindi devi comunque usare l'estensione h264ify – vedi sotto). Puoi ottenerlo da qui (è necessario anchelibvdpau1
da qui poiché è una dipendenza da vdpau-va-driver) per Debian / Ubuntu / Linux Mint / Pop! _OS ecc. Il pacchetto Ubuntu 20.04 da lì funziona anche su Ubuntu 20.10 e versioni successive. Se vuoi vedere le patch usate da questo pacchetto, scarica l'archivio .debian.tar.gz (usando lo stesso link di cui sopra) e cerca nella cartella "patches". Nel caso in cui questi DEB non funzionino su Debian (non l'ho provato), utilizzare questi collegamenti per vdpau-va-driver (orig.tar.gz | debian.tar.xz) e libvdau (orig.tar.gz | debian.tar.xz) per scaricare gli archivi .orig.tar.gz e .debian.tar.xz e compilare il pacchetto DEB sul proprio sistema. Installa anche libva-drm2 e libva-x11-2:sudo apt install libva-drm2 libva-x11-2
Perché le versioni non libere del intel-media-va-driver
e i965-va-driver
? In teoria, dovrebbe funzionare con la versione gratuita (?), ma nel mio test su un laptop Intel Gen 10, la decodifica video con accelerazione hardware ha funzionato solo con intel-media-va-driver-non-free
Driver e non intel-media-va-driver
(Non sono sicuro del driver i965, ma ho pensato che potrebbe essere simile). C'è anche qualcun altro lì che ha detto che questo ha funzionato per lei.
3. Richiesto solo per le schede grafiche che non supportano la decodifica video hardware VP9:installa l'estensione del browser h264ify.
Se la tua scheda grafica non supporta la decodifica video hardware VP9, installa l'estensione del browser h264ify (o Enhanced-h264ify - alcuni utenti dicono che funziona per loro mentre l'estensione originale no; per me è il contrario) e assicurati che sia abilitato per VP9.
[[Modifica]]Utenti Nvidia:il driver vdpau-va con patch menzionato sopra non accelera più l'hardware VP9 nei browser basati su Chromium. Quindi è necessario utilizzare l'estensione h264ify ed evitare VP9 per ottenere la decodifica video con accelerazione hardware.
Se ancora non vedi MojoVideoDecoder im chrome://media-internals
(consulta la sezione seguente per verificare che la decodifica video con accelerazione hardware sia abilitata e sia effettivamente utilizzata dal browser), prova a riavviare il browser web dopo aver installato questa estensione. Ho visto casi in cui era richiesto e altri in cui non lo era.
4. Avvia il browser web con il --use-gl=desktop
Contrassegna per abilitare l'accelerazione hardware dell'API VA. [[Modifica] Per i browser basati su Chromium 91 e versioni successive, devi avviarlo anche con quello --enable-features=VaapiVideoDecoder
Segnala.
Per utilizzare l'API VA per la decodifica video, è necessario avviare il browser web, sia esso Chromium, Google Chrome, Brave, Opera o Vivaldi, con il seguente flag della riga di comando:--use-gl=desktop
. Di conseguenza, il browser web utilizza OpenGL e disattiva ANGLE come backend di rendering. Sebbene ci siano posti in cui ho letto che questo non dovrebbe più essere necessario, nel mio test era richiesto sia con la grafica Nvidia che Intel (non ho la grafica AMD per testarlo).
Ad esempio, per avviare Google Chrome con questo flag:
google-chrome-stable --use-gl=desktop
Inizia Brave con questo:
brave-browser --use-gl=desktop
E così via.
Per rendere permanente questa modifica, copia il file .desktop del browser da /usr/share/applications
a ~/.local/share/applications
(Se questa cartella non esiste, creala). Copiando il file qui, ci assicuriamo che non venga sovrascritto da un aggiornamento. Quindi apri il file .desktop (ad es. brave-browser.desktop
, brave-browser-beta.desktop
, google-chrome.desktop
, ecc.) da esso ~/.local/share/applications
Posizione, con un editor di testo. In questo file, cerca la riga che inizia con Exec=
e modifica l'eseguibile per includere --use-gl=desktop
. Per esempio. per coraggioso:Exec=/usr/bin/brave-browser-stable --use-gl=desktop
o per Google Chrome:Exec=/usr/bin/google-chrome-stable --use-gl=desktop %U
[Modifica molto importante] Con Chromium 91 (e tutti i browser basati su di esso) il flag del browser per la decodifica video con accelerazione hardware è scomparso. Per ottenere la riproduzione video con accelerazione hardware, devi aggiungere un nuovo flag della riga di comando:--enable-features=VaapiVideoDecoder
Aggiungi questo flag proprio come aggiungi quel --use-gl=desktop
Bandiera. Avrai bisogno di entrambi, o almeno di quello di cui avevo bisogno per ottenere la decodifica video con accelerazione hardware.
Ad esempio, per avviare Google Chrome con questi due flag, utilizza:
google-chrome-stable --use-gl=desktop --enable-features=VaapiVideoDecoder
Oppure avvia Brave invece:
brave-browser --use-gl=desktop --enable-features=VaapiVideoDecoder
Nota importante:se vedi un'immagine video completamente bianca quando avvii il browser con --use-gl=desktop
, controlla chrome://flags
e assicurati che Vulkan non sia attivato lì. Quando Vulkan è attivato e il browser viene avviato con --use-gl=desktop
L'opzione fa sì che ciò avvenga.
Un'altra nota, questa volta per gli utenti di Opera :Se non riesci a riprodurre video su YouTube e altri siti dopo aver utilizzato l'estensione h264ify, consulta le Soluzioni da qui per abilitare il supporto h264 in Opera (nota che se il browser web che stai utilizzando è Opera Beta, la cartella è il /opera-beta
).
Questo è tutto.
Come verificare che la decodifica video con accelerazione hardware sia abilitata e funzioni in qualsiasi browser Web basato su Chromium
Ora controlliamo se il browser web utilizza la decodifica video con accelerazione hardware.
Innanzitutto, controlliamo se il browser supporta il video con accelerazione hardware. Per fare ciò, apri una nuova scheda e visita chrome://gpu
. In questa pagina dovresti vedere "Decodifica video:Accelerazione hardware" (in verde, come qui):
Ciò significa che il tuo browser web ora supporta la decodifica video con accelerazione hardware. Ma è effettivamente in grado di decodificare video utilizzando l'hardware? Verifichiamolo anche aprendo un video di YouTube e quindi premendo Ctrl + Shift + i
per aprire Chrome DevTools. Nel menu con i 3 punti verticali, fai clic su More tools -> Media
. Quindi fai clic sul titolo del video nella barra laterale sinistra di DevTools (Players
Sezione) e cerca nel Video Decoder
Sezione del Media
Scheda Chrome DevTools:
Quando dice che il nome del decoder è VideoDecode Accelerator
oppure, anch'io la vedevo così VDAVideoDecoder
(prima era MojoVideoDecoder
, e prima era GpuVideoDecoder
quindi se ottieni uno di questi e stai utilizzando una versione precedente del browser va bene, hai l'accelerazione hardware) e Hardware decoder
è true
, quindi utilizzare la decodifica video con accelerazione hardware. Se si chiama FFmpegVideoDecoder
, VpxVideoDecoder
o Dav1dVideoDecoder
(e in questo caso il Hardware decoder
dovrebbe dire false
) il tuo browser web non utilizza la decodifica video con accelerazione hardware.