Você deve ter notado que assistir a vídeos HD do Youtube e outros sites semelhantes nos navegadores Google Chrome ou Chromium no Linux aumenta consideravelmente o uso da CPU e, se você usa um laptop, ele fica muito quente e a bateria esgota-se muito rapidamente. Isso ocorre porque o Chrome/Chromium (Firefox também, mas não há como forçar isso) não suporta decodificação de vídeo acelerada por hardware no Linux.
Este artigo explica como instalar uma versão beta ou de desenvolvimento do Chromium que inclui um patch que habilita VA-API no Linux, trazendo suporte para decodificação de vídeo acelerada por GPU, o que deve diminuir significativamente o uso da CPU ao assistir vídeos HD online. As instruções cobrem apenas placas de vídeo Intel e Nvidia, já que não tenho uma placa de vídeo ATI/AMD para tentar isso, nem tenho experiência com essas placas de vídeo, mas pelo que li, isso deve funcionar com ATI/Gráficos AMD também.
Este é o Chromium dos repositórios do Ubuntu (18.04) sem decodificação de vídeo acelerada por GPU reproduzindo um vídeo 1080p do YouTube:
O mesmo vídeo 1080p do YouTube sendo reproduzido no Chromium com o patch VA-API e decodificação de vídeo acelerada por hardware habilitada no Ubuntu 18.04:
Observe o uso da CPU nas imagens. Ambas as capturas de tela foram tiradas em meu antigo, mas ainda bastante poderoso desktop. No meu laptop, o uso da CPU Chromium sem aceleração de hardware é muito maior.
O patch para adicionar suporte VA-API ao Chromium no Linux, intitulado "Habilitar VAVDA, VAVEA e VAJDA no linux com VAAPI apenas" foi inicialmente enviado ao Chromium há mais de um ano, mas ainda a ser mesclado.
O Chrome tem a opção de substituir a lista de renderização de software (#ignore-gpu-blacklist
), mas essa opção não ativa a decodificação de vídeo acelerada por hardware. Depois de habilitar esta opção, você pode encontrar o seguinte ao visitar chrome://gpu
: "Video Decode: Hardware accelerated", mas isso não significa que realmente funcione. Abra um vídeo HD no YouTube e verifique o uso da CPU em uma ferramenta como htop
(é o que estou usando nas capturas de tela acima para verificar o uso da CPU) - você deve ver alto uso da CPU porque a decodificação de vídeo GPU não está realmente habilitada. Há também uma seção abaixo para saber se você está realmente usando decodificação de vídeo acelerada por hardware.
Os patches usados pelas compilações do Chromium Ubuntu com VA-API habilitada usados neste artigo estão disponíveis aqui.
Como um benefício adicional, ao usar o Chromium com VA-API instalado do PPA, você consegue ter compilações nativas do Chromium (pacotes DEB reais) no Ubuntu, em vez do novo padrão de compilações do Snap Chromium, que o Ubuntu iniciou empurrando por padrão.
Deve ficar claro para todos os que estão lendo isso que o Chromium Beta ou Dev Branch não é considerado estável. Então você pode encontrar bugs, pode travar, etc. Funciona bem agora, mas quem sabe o que pode acontecer após alguma atualização. Usar os PPAs abaixo substituirá sua instalação estável atual do Chromium (se já estiver instalada).
Além do mais, os repositórios Chromium Beta e Dev Branch PPA usados neste artigo requerem a execução de algumas etapas extras se você deseja habilitar o suporte a Widevine (para que você possa reproduzir vídeos Netflix e vídeos pagos do YouTube, etc.), ou se você precisar de recursos como Sync (que precisa registrar uma chave de API e configurá-la em seu sistema). As instruções para realizar esses ajustes são explicadas na descrição do Chromium Dev Branch PPA.
Para gráficos Nvidia, o driver de vídeo vdpau precisa ser atualizado para implementar vaQuerySurfaceAttributes. Portanto, um driver vdpau-va com patch é necessário para usar isso com a Nvidia. Felizmente, o Chromium-dev PPA fornece este pacote corrigido e irei vinculá-lo para que você possa baixá-lo manualmente caso queira usar o Beta PPA.
O Chromium com o patch VA-API também está disponível para algumas outras distribuições do Linux, em repositórios de terceiros, como Arch Linux (para Nvidia você precisará this patch do libva-vdpau-driver) por exemplo. Se você não usa Ubuntu ou Linux Mint, você terá que encontrar esses pacotes sozinho.
1. Adicione o Chromium com PPA de suporte VA-API.
O Chromium com suporte VA-API está disponível em dois repositórios PPA - um com Chromium Beta e outro com Chromium Dev. Escolha um dos 2 (e apenas adicione um)! O Beta PPA deve ser mais estável.
Para adicionar o Chromium PPA de ramificação beta e instalar o navegador Chromium no Ubuntu, Linux Mint e Ubuntu ou versões do Linux Mint como Xubuntu, Kubuntu, Ubuntu MATE, Lubuntu, Linux Mint MATE, et.c, use:
sudo add-apt-repository ppa:saiarcot895/chromium-beta
Você pode adicionar o Chromium Dev branch PPA e instalar a versão de desenvolvimento do navegador Chromium mais recente no Ubuntu ou Linux Mint (e outras distribuições Linux baseadas no Ubuntu, incluindo elementary, bem como Ubuntu ou Linux Mint sabores como Xubuntu, Kubuntu, Ubuntu MATE, Linux Mint MATE e assim por diante) usando:
sudo add-apt-repository ppa:saiarcot895/chromium-dev
2. Fixe o PPA com uma prioridade de 1001.
A versão do Chromium do PPA pode ser substituída por uma atualização do Ubuntu. Para evitar isso, podemos fixar os pacotes Chromium VAAPI PPA para ter uma prioridade de 1001 (com 500 sendo o padrão no Ubuntu e> 1000 significando instalar os pacotes mesmo se for um downgrade), para que os pacotes do PPA não sejam substituídos por qualquer atualização do Ubuntu, e eles podem ser instalados mesmo se a versão do sistema for mais recente. Faremos isso da seguinte maneira.
Execute isso em um terminal:
sudo nano /etc/apt/preferences.d/saiarcot895-chromium-beta-pin-1001
E cole o seguinte:
Package: *
Pin: release o=LP-PPA-saiarcot895-chromium-beta
Pin-Priority: 1001
Agora salve o arquivo e saia (no Nano, salve usando Ctrl + o
e saia com Ctrl + x
).
Execute em um terminal:
sudo nano /etc/apt/preferences.d/saiarcot895-chromium-dev-pin-1001
E cole o seguinte:
Package: *
Pin: release o=LP-PPA-saiarcot895-chromium-dev
Pin-Priority: 1001
Agora salve o arquivo e saia (no Nano, salve usando Ctrl + o
e saia com Ctrl + x
).
3. Instale o navegador Chromium a partir do Saiarcot895 (VA-API) PPA:
sudo apt update
sudo apt install chromium-browser
4. Instale o driver VA-API
Para placas de vídeo Intel, você precisará instalar o pacote i965-va-driver
(pode já estar instalado):
sudo apt install i965-va-driver
Para placas de vídeo Nvidia, você precisa do patch vdpau-va-driver
do Chromium Dev PPA. Se você adicionou o Chromium Dev PPA, pode instalá-lo usando este comando:
sudo apt install vdpau-va-driver
Para aqueles que usam Ubuntu 20.10 (para o qual este pacote ainda não foi carregado no PPA), você pode baixar o pacote DEB vdpau-va-driver
com patch aqui e instalá-lo manualmente. Você só precisa do pacote vdpau-video (você não precisa do pacote -dbgsym
) do Ubuntu 20.04 e instalá-lo. Ele funciona no Ubuntu 20.10 e 20.04.
5. Ative a opção de vídeo acelerado por hardware no Chromium.
Copie e cole o seguinte na barra de URL do Chrome: chrome://flags/#enable-accelerated-video-decode
(ou pesquise a opção Hardware-accelerated video decode
em chrome://flags
), ative-a e reinicie o navegador Chromium.
Em uma versão padrão do Google Chrome/Chromium, esta opção aparece como indisponível, mas você poderá habilitá-la agora porque usamos a versão Chromium habilitada para VA-API.
6. Instale a extensão do Chrome h264ify.
O YouTube (e provavelmente alguns outros sites também) usa codecs de vídeo VP8 ou VP9 por padrão, e muitas GPUs não suportam decodificação de hardware para este codec. A extensão h264ify forçará o YouTube a usar H.264, que deve ser compatível com a maioria das GPUs, em vez de VP8/VP9.
Esta extensão também pode bloquear vídeos de 60fps, útil em máquinas de baixo custo.
Você pode verificar o codec usado por um vídeo do YouTube clicando com o botão direito no vídeo e selecionando Stats for nerds
. Com a extensão h264ify ativada, você deve ver avc/mp4a como os codecs. Sem essa extensão, o codec deve ser algo como vp09/opus.
7. [Somente Nvidia] A partir do Chromium 76, os usuários da Nvidia devem iniciar o navegador Chromium com o sinalizador --use-gl=desktop
para desativar o ANGLE. Sem isso, a decodificação de vídeo acelerada por hardware não funcionará.
Portanto, você precisará iniciar o navegador Chromium assim:
chromium-browser --use-gl=desktop
Você pode copiar o arquivo da área de trabalho do Chromium de /usr/share/applications/
para ~/.local/share/applications/
e modificar sua linha Exec
para incluir este sinalizador. Dessa forma, ao iniciar o navegador Chromium, ele usará automaticamente este sinalizador (e não será substituído por atualizações):
cp /usr/share/applications/chromium-browser.desktop ~/.local/share/applications/sed -i 's/Exec=chromium-browser %U/Exec=chromium-browser --use-gl=desktop %U/' ~/.local/share/applications/chromium-browser.desktop
Abra um vídeo no YouTube. Em seguida, abra uma nova guia no Chromium e digite o seguinte na barra de URL: 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 as compilações do Chromium usam MojoVideoDecoder
no Linux), isso significa que o vídeo que está sendo reproduzido no YouTube na outra guia está usando decodificação de vídeo acelerada por hardware.
Se estiver escrito FFmpegVideoDecoder
ou VpxVideoDecoder
, a decodificação acelerada de vídeo não está funcionando ou talvez você tenha se esquecido de instalar ou desabilitar a extensão h264ify do Chrome.
Se não estiver funcionando, você pode tentar depurá-lo executando chromium-browser
na linha de comando e ver se mostra algum erro relacionado ao VA-API. Você também pode executar vainfo
(instale-o no Ubuntu ou Linux Mint: sudo apt install vainfo
) e vdpauinfo
(para Nvidia; instale-o no Ubuntu ou Linux Mint: sudo apt install vdpauinfo
) e veja se mostra um erro.
Se você deseja remover completamente as compilações do Chromium com VA-API do seu sistema e reverter para as compilações do navegador Chromium estáveis oficiais fornecidas pelo Ubuntu/Linux Mint, você pode limpar o PPA.
Para limpar um PPA, você precisará do utilitário de limpeza PPA, que pode ser instalado usando:
sudo apt install ppa-purge
Em seguida, limpe o Chromium PPA que você adicionou:
sudo ppa-purge ppa:saiarcot895/chromium-beta
sudo ppa-purge ppa:saiarcot895/chromium-dev
Também vamos remover o arquivo de preferências do APT que usamos para fixar este PPA, porque ele não está mais fazendo nada:
sudo rm /etc/apt/preferences.d/saiarcot895-chromium-*-pin-1001
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 Acceleration In Chromium On Ubuntu Or Linux Mint (VA-API Patched PPA Builds)