web-dev-qa-db-fra.com

Comment activer l'accélération matérielle

J'ai installé Ubuntu 16.04 et j'ai un OC NVIDIA GTX 1070. J'ai ajouté ce PPA:

ppa:graphics-drivers/ppa

Et j'ai installé le paquet nvidia-370 pour ma GTX 1070 OC. Ensuite, j'ai lu un fichier vidéo 4K avec le codec HEVC, excepté pour permettre l’accélération matérielle du codec HEVC lors du décodage matériel, mais mpv player utilisait le mod de décodage logiciel. Comment puis-je résoudre ce problème?

3
Behrooz Ramezani

Disclaimer: Désolé mais c'est une réponse pour VLC, pas un lecteur MPV. Je crois qu’il ya des bugs ou un manque de support dans mpv player car dans ma configuration, alors que VLC fonctionne correctement avec un processeur faible, mpv player ne fonctionne pas. Vous pouvez être confronté au problème du multithreading de FFmpeg (voir le point 4).

J'ai vraiment eu du mal à faire en sorte que cela fonctionne et je suis un peu déçu du support limité de NVIDIA GTX 10 * 0 (Pascal) HEVC par rapport à AMD.

Tout d'abord:

Avertissement: NVIDIA ne prend en charge que le profil principal HEVC sous Linux

Au moment de la rédaction, le pilote NVIDIA 367.57 ne prend en charge que profil HEVCMainname__, NOTMain 10 et autres. Voir: demande de fonctionnalité sur le forum NVIDIA . C'est une limitation du pilote Linux NVIDIA, le matériel (GTX10 * 0) le supporte techniquement (MPC-HC sous Windows lit facilement Main 10).

Notez que la plupart des films 4K codés avec HEVC utilisent maintenant le profil HEVC Main 10.

Vérifier le profil HEVC du fichier multimédia: Vous pouvez vérifier votre profil HEVC de fichier en cliquant avec le bouton droit de la souris sur votre fichier> Propertiesname__> Audio/Videonglet> Videovariable__> Codecvariable__.

Vérifiez la prise en charge du profil HEVC du pilote: Basculez vers les pilotes propriétaires de NVIDIA (voir ci-dessous) et exécutez:

$ 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. Basculez vers les pilotes propriétaires NVIDIA

Vous devez avoir au moins la version R367 (nvidia-367).

 software-properties-gtk &

Allez à l'onglet Additional drivers, cochez NVIDIA binary driver et Applyles modifications.

2. Activer l'accélération matérielle dans VLC

Bien sûr, vous devez activer l'accélération matérielle dans VLC> Toolsname__> Preferences__ (Simple__)> Input / Codecs> Hardware-acceleration decoding = Autovariable__. Pour NVIDIA, vous pouvez choisir VDPAU video decoder explicitement.

3. Mettez à jour VLC vers 2.2.4 ou 3.0

Il existe plusieurs bogues dans VLC 2.2.2 (Ubuntu 16.04), corrigés dans les versions ultérieures (voir: journal des modifications), qui ont conduit à cette erreur trompeuse:

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

C'est clairement une erreur trompeuse et buggy. Difficile à dire, mais 1211250229 veut dire AV_CODEC_ID_HEVC(peut être vérifié en compilant avec rustcthis code rouillé ). Et nous avons vu de vdpauinfoque le profil HEVC 1 ( = Mainname __ ) est pris en charge.

Pour le moment, VLC 2.2.4 n'est pas disponible auprès du PPA officiel de VLC (vérifiez la version stable ici). Mettez donc à niveau VLC 3.0 à partir de la branche principale (vérifiez la version principale ici), mais gardez à l'esprit qu'il s'agit d'une version nocturne:

$ 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. Désactivez temporairement le multithreading VLC FFmpeg

Comme cela ne suffit pas, vous pouvez maintenant faire face à ce problème:

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

Explications sur ce fil sur le forum VLC:

Cela signifie que vous utilisez FFmpeg, ce qui ne permet plus d'activer l'accélération matérielle et le threading en même temps. Vous devez utiliser libav [mais] ceci est décidé lors de la compilation de VLC. Vous ne pouvez pas le changer au moment de l'exécution.

Une solution de contournement est disponible sur le même fil: Dans VLC> Outils> Préférences (Tous)> Entrée/Codecs> Codecs vidéo> FFmpeg, modifiez la valeur de Threadsde 0 (auto) en 1.

Et tu as fini!

Mais il s’agit d’une solution de contournement manuelle: gardez à l’esprit que pour visionner des vidéos sans accélération GPU, vous devez réinitialiser le paramètre VLC FFmpeg Threadspour utiliser tous vos cœurs de processeur ... ou compiler VLC à partir de la source avec libav.

1
KrisWebDev