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.
nvidia
video-player
719016
quelle
quelle
Antworten:
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
odermplayer 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
Wenn Sie vdpau über mplayer unterstützen / erhalten, können Sie eine
vc=
Zeile~/.mplayer/config
für die automatische Überprüfung festlegen und den entsprechenden ffvdpau * -Decoder für unterstützte Codecs verwendenEine 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 mitgdebi
. Essoftware center
kann jedoch für Sie installiert werden, wenn Sie es versuchen möchtenhttp://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
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 installierenlibva-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
vainfo
in einem Terminal sollte Ihnen sagen, wo Sie stehenEx. hier von vergeblichen
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
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
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
quelle
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.quelle
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 .
quelle
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.
quelle