it-swarm.com.de

So aktivieren Sie die Hardwarebeschleunigung

Ich habe Ubuntu 16.04 installiert und eine NVIDIA GTX 1070 OC. Ich habe diese PPA hinzugefügt:

ppa:graphics-drivers/ppa

Und ich habe das nvidia-370-Paket für meine GTX 1070 OC installiert. Dann habe ich eine 4K-Videodatei mit HEVC-Codec abgespielt und abgesehen davon, dass die Hardwarebeschleunigung für die Hardware-Decodierung des HEVC-Codec aktiviert wurde, aber der MPV-Player verwendete den Software-Decodierungs-Mod. Wie kann ich dieses Problem beheben?

3

Haftungsausschluss: Entschuldigung, aber es ist eine Antwort für VLC, nicht für MPV-Player. Ich glaube, es gibt Fehler oder mangelnde Unterstützung im MPV-Player, weil in meinem Setup, während VLC mit niedriger CPU gut funktioniert, der MPV-Player dies nicht tut. Möglicherweise tritt das FFmpeg-Multithreading-Problem auf (siehe Punkt 4).

Ich habe wirklich Mühe, dies zum Laufen zu bringen, und ich bin ein bisschen enttäuscht über die eingeschränkte NVIDIA GTX 10 * 0 (Pascal) HEVC-Unterstützung im Vergleich zu AMD.

Als erstes:

Warnung: NVIDIA unterstützt unter Linux nur das HEVC-Hauptprofil

Zum Zeitpunkt des Schreibens unterstützt der NVIDIA-Treiber 367.57 nur HEVC-ProfilMain, NOTMain 10 und andere. Siehe: Funktionsanforderung im NVIDIA-Forum . Dies ist eine NVIDIA Linux-Treiberbeschränkung, die von der Hardware (GTX10 * 0) technisch unterstützt wird (MPC-HC unter Windows) liest Main 10 leicht).

Beachten Sie, dass die meisten mit HEVC codierten 4K-Filme jetzt das HEVC Main 10 -Profil verwenden.

Mediendatei-HEVC-Profil prüfen: Sie können Ihr Datei-HEVC-Profil prüfen, indem Sie mit der rechten Maustaste auf Ihre Datei klicken> Properties> Audio/Video tab> Video> Codec.

Überprüfen Sie die HEVC-Profilunterstützung des Treibers: Wechseln Sie zu den proprietären NVIDIA-Treibern (siehe unten) und führen Sie Folgendes aus:

$ 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. Wechseln Sie zu proprietären NVIDIA-Treibern

Sie benötigen mindestens Version R367 (nvidia-367).

 software-properties-gtk &

Gehen Sie zur Registerkarte Additional drivers, überprüfen Sie NVIDIA binary driver und Apply die Änderungen.

2. Aktivieren Sie die Hardwarebeschleunigung in VLC

Natürlich müssen Sie die Hardwarebeschleunigung in VLC> Tools> Preferences (Simple)> Input / Codecs> Hardware-acceleration decoding = Auto aktivieren. Für NVIDIA können Sie VDPAU video decoder explizit auswählen.

3. Aktualisieren Sie VLC auf 2.2.4 oder 3.0

Es gibt mehrere Fehler in VLC 2.2.2 (Ubuntu 16.04), die in späteren Versionen behoben wurden ( siehe: changelog), die zu diesem irreführenden Fehler führen:

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

Das ist eindeutig ein irreführender und fehlerhafter Fehler. Schwer zu sagen, aber 1211250229 bedeutet AV_CODEC_ID_HEVC (kann durch Kompilieren mit rustc dieses rostiger Code ) . Und wir haben aus vdpauinfo gesehen, dass das HEVC-Profil 1 ( = Main ) unterstützt wird.

Derzeit ist VLC 2.2.4 nicht über die offizielle VLC-PPA erhältlich (stabile Version hier prüfen). Aktualisieren Sie also von der Hauptverzweigung (überprüfen Sie die Hauptversion hier) auf VLC 3.0, aber denken Sie daran, dass es eine nächtliche Veröffentlichung ist:

$ 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. Deaktivieren Sie vorübergehend das VLC FFmpeg-Multithreading

Da dies nicht ausreicht, können Sie jetzt mit dem folgenden Problem konfrontiert werden:

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

Erklärungen zu diesem Thread im VLC-Forum:

Dies bedeutet, dass Sie FFmpeg verwenden, wodurch die gleichzeitige Aktivierung von Hardwarebeschleunigung und Threading nicht mehr möglich ist. Sie müssen libav verwenden, [aber] dies wird beim Kompilieren von VLC entschieden. Sie können es zur Laufzeit nicht ändern.

Im selben Thread gibt es eine Problemumgehung: Ändern Sie in VLC> Extras> Einstellungen (Alle)> Eingabe/Codecs> Videocodecs> FFmpeg den Wert von Threads in 0 (auto) bis 1.

Und du bist fertig!

Aber das ist eine manuelle Umgehung: Denken Sie daran, dass Sie die Einstellung VLC FFmpeg Threads zurücksetzen sollten, um alle Ihre CPU-Kerne zu verwenden ... oder VLC aus dem Quellcode mit libav zu kompilieren, um Videos ohne GPU-Beschleunigung anzusehen.

1
KrisWebDev