it-swarm.com.de

Woher weiß ich, ob nvidia vdpau für mplayer / vlc / totem funktioniert?

Ich habe einen Laptop mit einer diskreten Nvidia-Grafik Karte.

Woher weiß ich, ob mein Videoplayer mplayer oder vlc oder totem nvidia VDPAU verwendet oder nicht? Wenn Sie beispielsweise mplayer2 mit dem folgenden Skript ausführen, wird die 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

BEARBEITEN: anscheinend kann es die Bibliothek nicht finden, auch wenn es über Hummel 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
[email protected]:~$ 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 mit Ubuntu 12.04 erneut versucht und kann es immer noch nicht zum Laufen bringen.

8
719016

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

Mplayer

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

Die Voraussetzungen für einen Spieler sind:

mplayer oder mplayer 2

nvidia-current oder die NVIDIA-Treiber direkt von NVIDIA, das NVIDIA-aktuelle Paket reicht aus.

libvdpau

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

Ex. von der Terminal-Ausgabe entfernt irrelevante Linien

$ 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 durch mplayer unterstützen/erhalten, können Sie eine vc= -Zeile in ~/.mplayer/config setzen, um den entsprechenden ffvdpau * -Decoder für unterstützte Codecs automatisch zu überprüfen und zu verwenden

Eine andere Möglichkeit, zu überprüfen, ist die Verwendung von vdpauinfo. Das Paket ist nur in 12.04 verfügbar, kann aber in 11.10 installiert werden. Laden Sie dazu hier herunter und installieren Sie es mit gdebi, obwohl software center möglicherweise für Sie installiert wird, wenn Sie es versuchen möchten

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

Um es zu benutzen, öffne ein Terminal und starte vdpauinfo

Bsp. eines Teils der Ausgabe 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 nvidia-Hardware haben und keinen vdpau-Support haben oder nicht, dann kümmern Sie sich nicht um vlc, das vaapi verwendet und dessen Aktivierung Tricker ist. Darüber hinaus ist die Leistung von Vaapi unter NVIDIA stark hardwareabhängig. Ich habe hier aktiviert, aber nicht verwendet, FFMPEG Multi-Thread ist besser mit meiner Hardware in VLC.

Dies ist nur die Basis, um Vaapi zu erhalten und in VLC zu aktivieren. Nach Einzelheiten müssten Sie suchen und/oder fragen, wie.

Die Voraussetzungen für vlc sind:

vlc & ffmpeg shared libs mit vaapi-unterstützung, 11.10 ist dort gut.

libva1, installiere auch libva-x11-1vainfo

vdpau-va-driver

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

Wenn Sie vainfo in einem Terminal ausführen, sollten Sie wissen, wo Sie stehen

Bsp. hier von vainfo

$ 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 bis vaapi & 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 GUI von VLC einzustellen, sind die vorherigen Beiträge nicht korrekt, wie die tatsächliche Art und Weise auf dem Bildschirm angezeigt wird

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

enter image description here

Bsp. Vom Terminal der VLC-GPU-Dekodierung bis zum 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.
11
doug

Sie können dies tun, indem Sie die CPU-Auslastung des Wiedergabeprozesses in beispielsweise top überprüfen. Wenn die vdpau-Auslagerung aktiviert ist, sollte die CPU-Auslastung niedrig sein. Andererseits führt die Dekodierung auf der CPU zu einer hohen CPU-Last.

2
Egil

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

Starten Sie den Trailer oder Film, den Sie haben, und überprüfen Sie, wie hoch der CPU-Verbrauch des VLC-Prozesses ist. Stoppen Sie nun den Film in VLC und gehen Sie zu Extras-> Einstellungen-> Video-> Beschleunigte Videoausgabe (Overlay), aktivieren Sie die Hardwarebeschleunigung und speichern Sie Ihre Einstellungen. Möglicherweise muss VLC geschlossen und neu gestartet werden, damit die Änderungen wirksam werden. Ich würde es sicherheitshalber neu starten.

Sobald VLC mit aktiviertem Hardware-Overlay neu gestartet wurde. Spielen Sie den gleichen Film/Trailer wie zuvor ab und prüfen Sie, ob die CPU-Ressourcen in der Systemmonitoranzeige 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%. Mir ist aufgefallen, dass MPlayer noch weniger verbraucht. es ging von 60-70% auf unter 5% mit Hardwarebeschleunigung.

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

Soweit ich weiß, ist die Videohardware-Beschleunigung nicht mit allen Videoformaten kompatibel und hängt von Ihrer GPU ab, in welchen Formaten sie decodiert werden kann.

0
Wolver1n3

VLC verwendet standardmäßig die Hardwarebeschleunigung der Plattform, wenn diese verfügbar ist. Sie können dies überprüfen, indem Sie auf Player Extras-> Einstellungen-> Video-> Beschleunigte Videoausgabe (Overlay) klicken und prüfen, ob sie aktiviert ist.

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

0
AIB