Como ativar a aceleração de hardware

3

Instalei o Ubuntu 16.04 e tenho uma NVIDIA GTX 1070 OC. Eu adicionei este PPA:

ppa:graphics-drivers/ppa

E eu instalei o pacote nvidia-370 para o meu GTX 1070 OC. Então eu joguei um arquivo de vídeo 4K com HEVC Codec e com exceção de aceleração de hardware para ser habilitado para decodificação de hardware codec HEVC, mas o jogador mpv estava usando o mod de decodificação de software. Como posso corrigir esse problema?

    
por Behrooz Ramezani 09.10.2016 / 23:25

1 resposta

1

Disclaimer: Desculpe, mas é uma resposta para o VLC, não o jogador mpv. Eu acredito que existem erros ou falta de suporte no mpv player porque na minha configuração, enquanto o VLC está funcionando bem com pouca CPU, o mpv player não funciona. Você pode enfrentar o problema de multithreading do FFmpeg (veja o ponto 4).

Eu realmente me esforcei para fazer isso funcionar, e estou um pouco decepcionado com o suporte limitado ao NVIDIA GTX 10 * 0 (Pascal) HEVC em comparação com a AMD.

Primeiro de tudo:

Aviso: A NVIDIA suporta apenas o perfil principal do HEVC no Linux

Até o momento, o driver NVIDIA 367.57 suporta apenas perfil HEVC Main , NOT Main 10 e outros. Veja: Solicitação de recurso na NVIDIA fórum . É uma limitação do driver NVIDIA Linux, o hardware (GTX10 * 0) suporta tecnicamente (o MPC-HC no Windows lê Main 10 facilmente).

Observe que a maioria dos filmes em 4K codificados com HEVC agora usam o perfil HEVC Main 10 .

Verifique o perfil HEVC do arquivo de mídia: Você pode verificar o perfil do arquivo HEVC clicando com o botão direito do mouse no arquivo > Properties > Audio/Video tab > Video > Codec .

Verifique o suporte ao perfil HEVC do driver: Mude para os drivers proprietários da NVIDIA (veja abaixo) e execute:

$ vdpauinfo
Information string: NVIDIA VDPAU Driver Shared Library  367.57  [crop]
Decoder capabilities:

name                        level macbs width height
----------------------------------------------------
[crop]
HEVC_MAIN                      153 262144  8192  8192
HEVC_MAIN_10                   --- not supported ---
HEVC_MAIN_STILL                --- not supported ---
HEVC_MAIN_12                   --- not supported ---
HEVC_MAIN_444                  --- not supported ---

1. Mude para drivers proprietários da NVIDIA

Você precisa de pelo menos a versão R367 ( nvidia-367 ).

 software-properties-gtk &

Vá para a guia Additional drivers , verifique NVIDIA binary driver e Apply das alterações.

2. Ativar aceleração de hardware no VLC

É claro que você deve ativar a aceleração de hardware no VLC > Tools > Preferences ( Simple ) > Input / Codecs > Hardware-acceleration decoding = Auto . Para a NVIDIA, você pode escolher VDPAU video decoder explicitamente.

3. Atualize o VLC para 2.2.4 ou 3.0

Existem vários bugs no VLC 2.2.2 (Ubuntu 16.04), corrigidos em versões posteriores ( veja: changelog ), que levam a este erro enganoso:

$ vlc --version
VLC media player 2.2.2 Weatherwax
$ vlc <file>
[crop]
[00007fa4b42cc5d8] vdpau_avcodec generic error: unsupported codec 1211250229 or profile 1

Isso é claramente um erro enganoso e de bugs. Difícil de dizer, mas 1211250229 significa AV_CODEC_ID_HEVC (pode ser verificado compilando com rustc este código enferrujado ) . E vimos de vdpauinfo que o perfil HEVC 1 ( = Main ) é suportado.

Neste momento, o VLC 2.2.4 não está disponível no VPA oficial do VLC ( check versão estável aqui ). Então atualize para o VLC 3.0 a partir do branch master ( verifique a versão master aqui ) mas tenha em mente que é um lançamento noturno:

$ sudo add-apt-repository ppa:videolan/master-daily
$ sudo apt update
$ sudo apt install vlc
$ vlc --version
[crop]
VLC version 3.0.0-git Vetinari

4. Desabilite temporariamente o multithread do VLC FFmpeg

Como isso não é suficiente, você pode enfrentar esse problema:

$ vlc <file> --verbose
[crop]
[00007f6bc4ccc688] avcodec decoder warning: thread type 1: disabling hardware acceleration

Explicações sobre este tópico no fórum da VLC:

% bl0ck_qu0te%

No mesmo segmento, há uma solução alternativa: no VLC > Ferramentas > Preferências (todas) > Entrada / Codecs > Codecs de vídeo > FFmpeg, altere o valor de Threads de 0 (auto) para 1 .

E pronto!

Mas isso é uma solução manual: lembre-se de que para assistir a vídeos não acelerados por GPU, você deve redefinir a configuração VLC FFmpeg Threads para usar todos os núcleos do seu processador ... ou compilar o VLC da fonte com a libav.

    
por KrisWebDev 13.11.2016 / 15:22