Pesquisa de site

Obtenha a aceleração de hardware VA-API do Firefox funcionando na GPU NVIDIA


Para máquinas Ubuntu com placa gráfica NVIDIA, veja como implementar aceleração de hardware para reprodução de vídeo no navegador Firefox.

O Firefox até agora suporta apenas VA-API para decodificação de GPU para descarregar a CPU e economizar energia. As GPUs Intel e AMD suportam VA-API. No entanto, a NVIDIA até agora oferece suporte à API apenas por meio do driver Nouveau de código aberto.

Se você tiver apenas uma GPU NVIDIA rodando com driver proprietário, a aceleração de vídeo por hardware não funcionará imediatamente para o Firefox.

Para escolha, existem o driver libvdpau-va-gl1 (somente h.264) ou o driver libva-vdpau, mas ambos parecem não estar mais atualizados. A melhor escolha até agora é o driver nvidia vaapi gratuito e de código aberto.

NOTA 1: Este tutorial até agora não funciona no laptop Optimus, consulte este relatório de bug para obter detalhes.
NOTA 2: Até o momento, isso é apenas para o Firefox, já que outros players, como o MPV, suportam o NVDEC da NVIDIA pronto para uso.
NOTA 3: Não está funcionando para o Firefox Snap pré-instalado em meu teste, pois ele roda em sandbox. Tente instalar o pacote deb oficial ou o pacote Mozilla PPA.

Etapa 1: Instale o driver NVIDIA VAAPI

O pacote de driver foi incluído no repositório do Ubuntu desde o Ubuntu 23.10.

Portanto, os usuários atuais do Ubuntu 23.10 e Ubuntu 24.04 podem simplesmente pressionar Ctrl+Alt+T para abrir o terminal e executar o comando para instalá-lo:

sudo apt install nvidia-vaapi-driver

Para a versão mais recente, existe um PPA não oficial que contém o pacote para Ubuntu 22.04, Ubuntu 23.10 e Ubuntu 24.04.

  • Primeiro, adicione o PPA executando o comando:

    sudo add-apt-repository ppa:ubuntuhandbook1/nvidia-vaapi

    Digite a senha do usuário quando for solicitada (sem feedback de asterisco) a autenticação sudo e pressione Enter para continuar.

  • Em seguida, atualize o cache do pacote do sistema executando o comando:

    sudo apt update
  • Por fim, instale o pacote de driver:

    sudo apt install nvidia-vaapi-driver

Em seguida, instale também o vainfo para verificar as informações do vaapi:

sudo apt install vainfo

Etapa 2: verifique as informações VA-API

Agora na janela do terminal, execute o comando:

vainfo

Para driver NVIDIA superior à versão 525, você precisa executar export NVD_BACKEND=direct primeiro para ativar o controle de back-end direto e export LIBVA_DRIVER_NAME=nvidia para especificar o driver.

Ele deve gerar algo como a captura de tela abaixo mostra, incluindo a versão va-api e a versão do driver (driver VA-API NVDEC), junto com os codecs suportados.

Você pode tentar reproduzir um arquivo de vídeo na linha de comando, usando MPV (superior a v0.36) para verificar se va-api funciona:

mpv --hwdec=vaapi /path/to/video-file

Ele gera algo parecido com Usando decodificação de hardware (vaapi).

Etapa 3: configurar o Firefox

Agora inicie o Firefox, digite about:config e pressione Enter, depois clique em “Aceitar o risco e continuar” para ir à página de configurações.

Em seguida, digite as seguintes chaves, uma por uma, na caixa de filtro e defina-as como verdadeiras:

    media.ffmpeg.vaapi.enabled
    gfx.x11-egl.force-enabled
    widget.dmabuf.force-enabled

Etapa 4: configurar variável de ambiente

Na janela do terminal (Ctrl+Alt+T), execute os seguintes comandos um por um para configurar a variável de ambiente para o Firefox va-api funcionar na NVIDIA:

  • Especifique o nome do driver:

    export LIBVA_DRIVER_NAME=nvidia
  • Desative a sandbox do processo RDD:

    export MOZ_DISABLE_RDD_SANDBOX=1
  • Para NVIDIA 525 e superior, defina também o controle direto:

    export NVD_BACKEND=direct
  • Para NVIDIA 470 herdada, especifique o nome da biblioteca do fornecedor EGL:

    export __EGL_VENDOR_LIBRARY_FILENAMES=/usr/share/glvnd/egl_vendor.d/10_nvidia.json
  • Como opção, você também pode ativar o log para fins de depuração:

    export NVD_LOG=1

Por fim, inicie o Firefox na mesma janela do terminal /usr/bin/firefox e reproduza um vídeo para verificar (veja a próxima etapa).

Se funcionar, você pode tornar as variáveis de ambiente permanentes através dos seguintes passos:

  • Primeiro, abra a pasta inicial, pressione Ctrl+h, descubra e clique em editar o arquivo .profile

  • Quando o arquivo abrir, adicione os comandos export anteriores que você executou (exclua o NVD_LOG) no final como novas linhas. Finalmente, salve o arquivo.

Você precisa sair e entrar novamente para que as alterações no arquivo .profile funcionem.

Etapa 5: verificar

Ao reproduzir um vídeo usando seu navegador Firefox, você pode usar o comando nvtop para verificar.

  • Primeiro, abra o terminal (Ctrl+Alt+T) e execute o comando para instalar o nvtop:

    sudo apt install nvtop
  • Em seguida, execute o comando nvtop no terminal durante a reprodução do vídeo. Se a GPU estiver decodificando, há uma linha na parte inferior marcada como tipo Compute, com informações de qual processo e comando. No caso, deve ter algo a ver com o Firefox.

Para escolha, você também pode executar nvidia-smi pmon. Em vez disso, deve haver o tipo C na saída para o processo correspondente durante a reprodução.

Para mais informações, consulte nvidia-vaapi-driver na página do github.

Desinstalar:

Se o driver de alguma forma não funcionar para você, você pode removê-lo executando o comando no terminal:

sudo apt remove --autoremove nvidia-vaapi-driver

Além disso, remova o PPA (se adicionado) por meio do comando:

sudo add-apt-repository --remove ppa:ubuntuhandbook1/nvidia-vaapi

Você também pode ir para a página about:config no Firefox para desfazer as alterações feitas e remover as linhas export (se definidas) em .profiles arquivo.

Artigos relacionados