Wie kann ich wissen, ob nvidia vdpau für mplayer / vlc / totem funktioniert?


8

Ich habe einen Laptop mit einer diskreten Nvidia-Grafikkarte .

Wie kann ich feststellen, ob mein Videoplayer, sei es mplayer oder vlc oder totem, nvidia VDPAU verwendet oder nicht? Wenn Sie beispielsweise mplayer2 mit dem folgenden Skript ausführen, wird folgende Meldung angezeigt:

Failed to open VDPAU backend libvdpau_nvidia.so: cannot open shared object file: No such file or directory

Aber ich habe eine solche Datei im System:

-rw-r--r-- 1 root root 1800952 2011-11-23 07:39 /usr/lib/nvidia-current/vdpau/libvdpau_nvidia.so.290.10

Skript zum Herausfinden des Codecs für eine Datei:

    #!/bin/bash
#Script to automatically find out which codec a file is using and determine whether or not to use VDPAU.

#if no input display usage
if [ -z "$1" ]; then
    echo usage: $0 /path/to/file
    exit
fi

#remember to change this to the path of your mplayer binary
mplayerlocation=/usr/bin/
cd $mplayerlocation

#kinda a lame way to do it, but bring up mplayer and pipe the output to a temporary file, then read which codec the file is
./mplayer -identify -vo vdpau $1 > /tmp/VIDEOCODEC &
sleep 0.5
killall mplayer
videocodec=`cat /tmp/VIDEOCODEC | grep ID_VIDEO_CODEC | cut -c 16-25`
rm /tmp/VIDEOCODEC

echo "VIDEO CODEC: $videocodec"

if [ $videocodec = "ffh264" ]; then
    codec='h264'
    echo \n Playing $1 with $codec codec \n
    ./mplayer -vo vdpau -vc ffh264vdpau $1

    exit
fi

if [ $videocodec = "ffmpeg2" ]; then
    codec='MPEG2'
    echo \n Playing $1 with $codec codec \n
    ./mplayer -vo vdpau -vc ffmpeg12vdpau $1

    exit
fi

if [ $videocodec = "ffwmv3" ]; then
    codec='WMV3'
    echo \n Playing $1 with $codec codec \n
    ./mplayer -vo vdpau -vc ffwmv3vdpau $1

    exit
fi

#VC1 is not supported on most gpus
#uncomment if it is supported on your gpu
#if [ $videocodec = "ffvc1" ]; then
#   codec='VC1'
#   echo \n Playing $1 with $codec codec \n
#   ./mplayer -vo vdpau -vc ffvc1vdpau $1
#
#   exit
#fi

#if it isnt one of those it is not supported by vdpau
#so we should play without vdpau
./mplayer $1
exit

EDIT: Anscheinend kann es die Bibliothek nicht finden, auch nicht, wenn es über bumblebees v3 optirun aufgerufen wird, obwohl die Bibliothek dort ist:

optirun vdpauinfo 
display: :0.0   screen: 0
Failed to open VDPAU backend libvdpau_nvidia.so: cannot open shared object file: No such file or directory
Error creating VDPAU device: 1
avilella@magneto:~$ locate libvdpau_nvidia.so | xargs ls
/usr/lib/nvidia-current/vdpau/libvdpau_nvidia.so  /usr/lib/nvidia-current/vdpau/libvdpau_nvidia.so.1  /usr/lib/nvidia-current/vdpau/libvdpau_nvidia.so.290.10

EDIT2: Ich habe es erneut mit Ubuntu 12.04 versucht und kann es immer noch nicht zum Laufen bringen.


Zum Beispiel für mplayer erhalte ich einen: [vdpau] Fehler beim Aufrufen von vdp_device_create_x11: 1
719016


Ich habe es erneut mit Ubuntu 12.04 versucht und kann es immer noch nicht zum Laufen bringen.
719016

Antworten:


11

Um Ihre Frage zu beantworten und ein wenig über das Aktivieren der GPU-Dekodierung mit mplayer oder vlc.

Mplayer

Der einfachste Weg, um festzustellen, ob Sie eine GPU-Dekodierung über vdpau erhalten, besteht darin, das zu tun, was Sie getan haben - mplayer von einem Terminal aus auszuführen. Atm, was Sie gezeigt haben, zeigt an, dass Sie es nicht bekommen.

Die Voraussetzungen für mplayer sind:

mplayer oder mplayer 2

nvidia-current oder die nvidia-treiber direkt von nvidia, das nvidia-current-paket reicht aus.

libvdpau

Stellen Sie sicher, dass Sie die oben genannten Bedingungen erfüllt haben, und führen Sie dann den zuvor ausgeführten Befehl aus. Stellen Sie jedoch sicher, dass das Video h.264 ist

Ex. von Terminalausgang, entfernte irrelevante Leitungen entfernt

$ mplayer  -vo vdpau -vc ffh264vdpau /home/doug/Videos/sintel.mp4 
MPlayer2 UNKNOWN (C) 2000-2011 MPlayer Team
Playing /home/doug/Videos/sintel.mp4.
Detected file format: QuickTime/MPEG-4/Motion JPEG 2000 format (libavformat)
[lavf] stream 0: video (h264), -vid 0
[lavf] stream 1: audio (aac), -aid 0, -alang und
VIDEO:  [H264]  1280x546  24bpp  24.000 fps  1597.2 kbps (195.0 kbyte/s)
==========================================================================
Forced video codec: ffh264vdpau
Opening video decoder: [ffmpeg] FFmpeg's libavcodec codec family
Selected video codec: [ffh264vdpau] vfm: ffmpeg (FFmpeg H.264 (VDPAU))
VO: [vdpau] 1280x546 => 1280x546 H.264 VDPAU acceleration 
[vdpau] Got display refresh rate 59.991 Hz.

Wenn Sie vdpau über mplayer unterstützen / erhalten, können Sie eine vc=Zeile ~/.mplayer/configfür die automatische Überprüfung festlegen und den entsprechenden ffvdpau * -Decoder für unterstützte Codecs verwenden

Eine andere Möglichkeit zur Überprüfung ist die Verwendung vdpauinfo. Das Paket ist nur in 12.04 verfügbar, kann jedoch in 11.10 installiert werden. Um dies zu tun, gehen Sie hier, laden Sie es herunter und installieren Sie es mit gdebi. Es software centerkann jedoch für Sie installiert werden, wenn Sie es versuchen möchten

http://packages.ubuntu.com/precise/vdpauinfo

Öffnen Sie ein Terminal und führen Sie es aus vdpauinfo

Ex. von einigen Ausgaben von vdpauinfo auf einem Laptop mit grundlegender vdpau-Unterstützung

$ vdpauinfo
display: :0   screen: 0
API version: 1
Information string: NVIDIA VDPAU Driver Shared Library  280.13  Wed Jul 27 17:18:15 PDT 2011

Video surface:

name   width height types
 -------------------------------------------
420     4096  4096  NV12 YV12 
422     4096  4096  UYVY YUYV 

Decoder capabilities:

name               level macbs width height
-------------------------------------------
MPEG1                 0  8192  2048  2048
MPEG2_SIMPLE          3  8192  2048  2048
MPEG2_MAIN            3  8192  2048  2048
H264_MAIN            41  8192  2048  2048
H264_HIGH            41  8192  2048  2048
VC1_SIMPLE            1  8190  2048  2048
VC1_MAIN              2  8190  2048  2048
VC1_ADVANCED          4  8190  2048  2048

Vlc

Wenn Sie über NVIDIA-Hardware verfügen und keine vdpau-Unterstützung haben oder nicht haben, sollten Sie sich nicht mit vlc beschäftigen, das Vaapi verwendet und dessen Aktivierung schwieriger ist. Darüber hinaus ist die Leistung von Vaapi auf NVIDIA stark von der Hardware abhängig. Ich habe hier aktiviert, aber nicht verwendet, ffmpeg Multi-Thread ist besser mit meiner Hardware in VLC.

Dies sind nur die Grundlagen, um Vaapi zu erhalten und in VLC zu aktivieren. Für Einzelheiten müssten Sie suchen und fragen, wie.

Die Voraussetzungen für vlc sind:

vlc & ffmpeg Shared Libs, die Vaapi-Unterstützung haben, 11.10 ist dort gut.

libva1, auch installieren libva-x11-1 vainfo

vdpau-va-driver

Ihr größtes Problem könnte sein, dass Ubuntus Versionen von libva * & vdpau-va-driver nicht neu genug sind. Dort müssen Sie weitere Ratschläge einholen. In 12.04 they are adequate

Das Laufen vainfoin einem Terminal sollte Ihnen sagen, wo Sie stehen

Ex. hier von vergeblichen

$ vainfo
libva: libva version 0.32.0
Xlib:  extension "XFree86-DRI" missing on display ":0.0".
libva: va_getDriverName() returns 0
libva: Trying to open /usr/lib/dri/nvidia_drv_video.so
libva: va_openDriver() returns 0
vainfo: VA API version: 0.32
vainfo: Driver version: Splitted-Desktop Systems VDPAU backend for VA-API - 0.7.3
vainfo: Supported profile and entrypoints
  VAProfileMPEG2Simple            : VAEntrypointVLD
  VAProfileMPEG2Main              : VAEntrypointVLD
  VAProfileH264Main               : VAEntrypointVLD
  VAProfileH264High               : VAEntrypointVLD
  VAProfileVC1Simple              : VAEntrypointVLD
  VAProfileVC1Main                : VAEntrypointVLD
  VAProfileVC1Advanced            : VAEntrypointVLD

Um die GPU-Dekodierung in VLC über Vaapi und ffmpeg zu aktivieren, gibt es zwei Möglichkeiten

Von einem Terminal aus müssen keine Einstellungen vorgenommen werden

vlc --ffmpeg-hw /path/to/supported/video/name

Um in der Benutzeroberfläche von vlc festzulegen, sind die vorherigen Beiträge falsch, wie der tatsächliche Weg auf dem Bildschirm angezeigt wird

Extras> Einstellungen> Eingabe / Codecs> Aktivieren Sie das Kontrollkästchen. Das Lesen von "H.264 In-Loop-Deblocking-Filter überspringen" kann sich als sinnvoll erweisen

Geben Sie hier die Bildbeschreibung ein

Ex. Vom Terminal der vlc-GPU-Decodierung durch Vaapi unter Verwendung des Repo-VLC in 12.04, obwohl 1.2 / 1.3 / 2.0 bevorzugte Versionen sind, sollte auf Wunsch ein ppa für 2.0 verfügbar sein

vlc --ffmpeg-hw '/home/doug/Videos/sintel.mp4' 
VLC media player 1.1.13 The Luggage (revision exported)
clipped .....

libva: libva version 0.32.0
Xlib:  extension "XFree86-DRI" missing on display ":1".
libva: va_getDriverName() returns 0
libva: Trying to open /usr/lib/dri/nvidia_drv_video.so
libva: va_openDriver() returns 0
[0x863468c] avcodec decoder: Using VA API version 0.32 for hardware decoding.

Nicht einmal beim Aufrufen über bumblebees optirun kann die Bibliothek nicht gefunden werden, obwohl sie vorhanden ist: optirun vdpauinfo display :: 0.0 screen: 0 VDPAU-Backend konnte nicht geöffnet werden libvdpau_nvidia.so: freigegebene Objektdatei kann nicht geöffnet werden: Keine solche Datei oder Verzeichnisfehler Erstellen eines VDPAU-Geräts: 1 avilella @ magneto: ~ $ locate libvdpau_nvidia.so | xargs ls /usr/lib/nvidia-current/vdpau/libvdpau_nvidia.so /usr/lib/nvidia-current/vdpau/libvdpau_nvidia.so.1 /usr/lib/nvidia-current/vdpau/libvdpau_nvidia.so.290.10
719016

2
Wenn Sie, wie es jetzt aussieht, über eine Hybrid- / Optimus-Videohardware verfügen, müssen Sie untersuchen, wie Sie die GPU-Decodierung über den NVIDIA-Chip ermöglichen können. Ich selbst habe noch nie eine solche Hardware besessen. Eine spezielle Frage zu diesem Thema könnte einige Aufmerksamkeit von denen auf sich ziehen, die dieses Problem haben und hoffentlich "behoben" haben
Doug,

Diese Frage hat einige Informationen über Hybrid, wahrscheinlich andere askubuntu.com/questions/100786/…
Doug

2

Sie können dies tun, indem Sie beispielsweise die CPU-Auslastung des Wiedergabevorgangs überprüfen top. Wenn das vdpau-Offloading aktiviert ist, sollte die CPU-Auslastung gering sein. Andererseits führt das Decodieren auf der CPU zu einer hohen CPU-Last.


0

VLC verwendet standardmäßig die Hardwarebeschleunigung der Plattform, falls verfügbar. Sie können dies überprüfen, indem Sie unter Extras-> Einstellungen-> Video-> Beschleunigte Videoausgabe (Überlagerung) des Players überprüfen, ob diese aktiviert ist.

Sie sollten daher überprüfen, ob die Treiber für die Nvidia-Grafikkarte ordnungsgemäß installiert sind. Verwenden Sie dazu System-> Administration-> Zusätzliche Treiber .


Für vlc ist Extras-> Einstellungen-> Video-> Beschleunigte Videoausgabe (Überlagerung) aktiviert, aber es verhält sich so, als würde ich es mit mplayer ausführen, also denke ich, dass es auch nicht funktioniert.
719016

0

Um zu überprüfen, ob ich einen HD-Film abspielen würde, laden Sie einen Trailer von der Apple / iTunes-Trailer-Website herunter. auf VLC gehen Sie zu Extras-> Einstellungen-> Video-> Beschleunigte Videoausgabe (Überlagerung) und deaktivieren Sie es. Öffnen Sie den Systemmonitor, gehen Sie zur Registerkarte "Prozesse" und suchen Sie VLC in der Liste.

Starten Sie den Trailer oder Film, den Sie haben, und sehen Sie sich an, wie hoch der VLC-Prozess die CPU belegt. Stoppen Sie nun den Film in VLC und gehen Sie zu Extras-> Einstellungen-> Video-> Beschleunigte Videoausgabe (Überlagerung), aktivieren Sie die Hardwarebeschleunigung und speichern Sie Ihre Einstellungen. Möglicherweise muss VLC geschlossen und dann neu gestartet werden, damit die Änderungen wirksam werden. Ich würde es aus Sicherheitsgründen neu starten.

Sobald VLC mit aktiviertem Hardware-Overlay neu gestartet wurde. Spielen Sie denselben Film / Trailer wie zuvor ab und prüfen Sie, ob die CPU-Ressourcen im Systemmonitor niedriger sind.

Wenn sie deutlich niedriger sind, bedeutet dies, dass es funktioniert.

In meinem Fall ging VLC von 60-70% CPU auf nur 20-30% über. Mir ist aufgefallen, dass MPlayer noch weniger verbraucht. Mit der Hardwarebeschleunigung stieg sie von 60-70% auf unter 5%.

Ihre Ergebnisse variieren, aber wenn die Hardwarebeschleunigung ordnungsgemäß funktioniert, sollte die CPU-Auslastung für diesen bestimmten Prozess unter dem Systemmonitor erheblich sinken.

Soweit ich weiß, ist die Beschleunigung der Videohardware nicht mit allen Videoformaten kompatibel und hängt von Ihrer GPU ab, welche Formate sie decodieren kann.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.