O Google Chrome 88 (e mais recente) tornou a decodificação de vídeo acelerada por hardware disponível no Linux, mas não é habilitada por padrão. No entanto, o Google Chrome não é o único navegador baseado em Chromium a suportar aceleração de hardware no Linux. Este artigo explica como habilitar a decodificação de vídeo acelerada por hardware nos navegadores Google Chrome, Brave, Vivaldi e Opera em execução no Debian, Ubuntu, Pop!_OS ou Linux Mint (somente Xorg).
Usar a decodificação de vídeo acelerada por hardware em seu navegador deve resultar em menos uso da CPU (e, portanto, menos consumo de bateria) ao reproduzir vídeos online.
É importante notar que o navegador da web Chromium tinha patches que permitiam a decodificação de vídeo acelerada por hardware disponível no Linux por algum tempo, e algumas distribuições Linux o empacotaram usando esses patches. Portanto, os usuários do Chromium têm aceleração de hardware no Linux há algum tempo, dependendo da distribuição do Linux ou se instalaram o Chromium corrigido de alguma outra forma. Por exemplo. no Ubuntu/Linux Mint há um PPA com compilações do Chromium com patch VA-API. Portanto, essas instruções também podem funcionar para o navegador Chromium, dependendo de como ele é compilado.
Também gostaria de acrescentar que essas instruções para habilitar a decodificação de vídeo acelerada por hardware também funcionam em outras distribuições Linux, e não apenas em distribuições Linux baseadas em Debian/Ubuntu, no entanto, os nomes dos drivers são diferentes.
Testei essas instruções usando o desktop Ubuntu 20.10 com gráficos Nvidia e os navegadores listados abaixo foram instalados usando o pacote original do Ubuntu (usando um pacote DEB). Também testado usando um laptop com gráficos Intel (10ª geração) no Ubuntu 20.04 e 20.10.
Em meu teste, consegui fazer com que a decodificação de vídeo acelerada por hardware funcionasse no Linux usando:
Obviamente, deve continuar a funcionar com versões mais recentes do que essas (por exemplo, Google Chrome 89, Brave 1.20, etc.).
Para mim, a decodificação de vídeo acelerada por hardware não funcionou usando:
chrome://flags/#enable-accelerated-video-decode
(para permitir a decodificação de vídeo acelerada por hardware).Além disso, isso não funciona no Wayland. Você pode usar VA-API no XWayland, usando a sinalização de linha de comando --use-gl=egl
, mas eu não tentei.
Coisas que você precisa para habilitar a decodificação de vídeo acelerada por hardware nos navegadores da web que mencionei acima (então Google Chrome 88+, Brave 1.19+, Vivaldi 3.6+ e Opera 74+):
1. Ative os seguintes sinalizadores de navegador da web:
chrome://flags/#ignore-gpu-blocklist
chrome://flags/#enable-accelerated-video-decode
2. Instale o driver VA-API para poder decodificar a mídia (fonte):
sudo apt install i965-va-driver-shaders
sudo apt install intel-media-va-driver-non-free
sudo apt install mesa-va-drivers
vdpau-va-driver
com patch. Você pode obtê-lo aqui para Ubuntu/Linux Mint. O pacote Ubuntu 20.04 de lá também funciona no Ubuntu 20.10 e mais recente. Se você quiser ver os patches usados por este pacote, baixe o arquivo .debian.tar.gz (do mesmo link acima) e olhe dentro da pasta "patches".Por que as versões não gratuitas do intel-media-va-driver
e do i965-va-driver
? Em teoria, isso deve funcionar com a versão gratuita (?), Mas em meu teste em um laptop com Intel Gen 10, a decodificação de vídeo acelerada por hardware funcionou apenas com o driver intel-media-va-driver-non-free
, e não intel-media-va-driver
(não tenho certeza sobre o driver i965, mas presumi que poderia ser semelhante).
3. Necessário apenas para placas gráficas que não suportam decodificação de vídeo por hardware VP9: instale a extensão do navegador h264ify.
Se sua placa de vídeo não suporta decodificação de vídeo de hardware VP9, instale a extensão do navegador h264ify (ou Enhanced-h264ify - alguns usuários dizem que isso funciona para eles, enquanto a extensão original não; para mim é o contrário) e certifique-se de que está habilitado para VP9.
Se você ainda não vê o MojoVideoDecoder na guia chrome://media-internals
(veja abaixo na seção para saber como verificar se a decodificação de vídeo acelerada por hardware está ativada e realmente usada pelo navegador), tente reiniciar o navegador da web após instalar esta extensão. Já vi casos em que isso era necessário e alguns em que não era.
4. Inicie o navegador da web usando a sinalização --use-gl=desktop
para ativar a aceleração de hardware VA-API.
Para poder usar VA-API para decodificação de vídeo, você precisará iniciar o navegador da web, seja ele Chromium, Google Chrome, Brave, Opera ou Vivaldi, usando a seguinte sinalização de linha de comando: --use-gl=desktop
. Isso faz com que o navegador da web use OpenGL e desative o ANGLE como back-end de renderização. Embora haja lugares onde eu li que isso não deveria ser mais necessário, isso foi necessário em meu teste, com gráficos Nvidia e Intel (não tenho gráficos AMD para testar isso).
Por exemplo. para iniciar o Google Chrome usando este sinalizador:
google-chrome-stable --use-gl=desktop
Inicie o Brave usando este:
brave-browser --use-gl=desktop
E assim por diante.
Para tornar esta alteração permanente, copie o arquivo .desktop do navegador de /usr/share/applications
para ~/.local/share/applications
(se esta pasta não existir, crie-a). Ao copiar o arquivo aqui, garantimos que ele não será substituído por uma atualização. Em seguida, abra o arquivo .desktop (por exemplo, brave-browser.desktop
, brave-browser-beta.desktop
, google-chrome.desktop
, etc.) a partir deste local ~/.local/share/applications
, com um editor de texto. Nesse arquivo, procure a linha que começa com Exec=
e altere o executável para incluir --use-gl=desktop
. Por exemplo, para Brave: Exec=/usr/bin/brave-browser-stable --use-gl=desktop
, ou para Google Chrome: Exec=/usr/bin/google-chrome-stable --use-gl=desktop %U
Observação importante: Se você vir uma imagem de vídeo completamente branca depois de fazer isso e estiver usando os drivers proprietários da Nvidia, verifique chrome://flags
e certifique-se de que o Vulkan não está habilitado lá. Ter o Vulkan ativado, mas iniciar o navegador usando a opção --use-gl=desktop
fará com que isso aconteça.
Outra observação, desta vez para usuários do Opera: se depois de usar a extensão h264ify, você não puder mais reproduzir vídeos no YouTube e outros sites semelhantes, consulte soluções daqui para habilitar o suporte h264 no Opera (observe que se o navegador da web que você está usando for Opera Beta, a pasta deve ser /opera-beta
).
É isso aí.
Agora vamos verificar se o navegador da Web está usando decodificação de vídeo acelerada por hardware.
Primeiro, vamos verificar se o navegador oferece suporte a vídeo acelerado por hardware. Faça isso abrindo uma nova guia e visitando chrome://gpu
. Nesta página, você verá "Video Decode: Hardware accelerated
" (em verde, como aqui):
Isso significa que seu navegador da web agora oferece suporte para decodificação de vídeo acelerada por hardware. Mas é realmente capaz de decodificar vídeo por hardware? Vamos verificar isso também, abrindo um vídeo do YouTube em uma guia, deixe essa guia em execução e abra uma nova guia com chrome://media-internals
.
Na guia chrome://media-internals
, clique no URL do vídeo (para expandi-lo), role para baixo e procure em Player Properties
, e você deve encontrar a propriedade kVideoDecoderName
:
Se o valor kVideoDecoderName
for MojoVideoDecoder
(anteriormente era GpuVideoDecoder
, mas agora MojoVideoDecoder
é usado no Linux), significa que o vídeo que está sendo reproduzido atualmente no YouTube na outra guia está usando decodificação de vídeo acelerada por hardware. Todos os outros valores kVideoDecoderName (VpxVideoDecoder, FFmpegVideoDecoder e Dav1dVideoDecoder) significam que o vídeo reproduzido na outra guia do navegador está usando renderização de software.
Esse post foi traduzido do site LinuxUprising.com pela rtland.team.
Confira a versão original desse post em inglês:
How To Enable Hardware Accelerated Video Decode In Google Chrome, Brave, Vivaldi And Opera Browsers On Debian, Ubuntu Or Linux Mint