Comment savoir si nvidia vdpau fonctionne pour mplayer / vlc / totem?

8

J'ai un ordinateur portable avec une carte graphique Nvidia discrète .

Comment puis-je savoir si mon lecteur vidéo, qu'il soit mplayer, vlc ou totem, utilise nvidia VDPAU ou non? Par exemple, en exécutant mplayer2 avec le script ci-dessous, je reçois ce message:

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

Mais j'ai un tel fichier dans le système:

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

Script pour trouver le codec d'un fichier:

    #!/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: apparemment, il ne peut pas trouver la bibliothèque, même pas en l'appelant via optirun v3 de bumblebee, bien que la bibliothèque soit là:

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: J'ai réessayé avec Ubuntu 12.04 et je n'arrive toujours pas à le faire fonctionner.

719016
la source
Par exemple, pour mplayer, j'obtiens une: [vdpau] Erreur lors de l'appel de vdp_device_create_x11: 1
719016
Peut-être lié: askubuntu.com/questions/100786/…
Bruno Pereira
J'ai réessayé avec Ubuntu 12.04 et je n'arrive toujours pas à le faire fonctionner.
719016

Réponses:

11

Pour répondre à votre question et un peu sur l'activation du décodage gpu avec mplayer ou vlc.

Mplayer

Le moyen le plus simple de voir si vous obtenez un décodage gpu via vdpau est de faire ce que vous avez fait - exécuter mplayer à partir d'un terminal. Atm ce que vous avez montré indique que vous ne l'obtenez pas.

Les conditions requises pour mplayer sont:

mplayer ou mplayer 2

nvidia-current ou les pilotes nvidia directement depuis nvidia, le paquet nvidia-current fera l'affaire.

libvdpau

Assurez-vous d'avoir respecté ce qui précède, puis exécutez la commande que vous avez faite auparavant, bien que assurez-vous que la vidéo est h.264

Ex. de la sortie du terminal, suppression des lignes non pertinentes

$ 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.

Si vous prenez en charge / obtenez vdpau via mplayer, vous pouvez définir une vc=ligne ~/.mplayer/configpour vérifier automatiquement et utiliser le décodeur ffvdpau * approprié pour les codecs pris en charge

Une autre façon de vérifier est d'utiliser vdpauinfo. Le package n'est disponible qu'en 12.04 mais peut être installé en 11.10. Pour ce faire, allez ici, téléchargez et installez avec gdebi, bien que software centervous puissiez installer pour vous si vous souhaitez essayer

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

Pour utiliser ouvrir un terminal et exécuter vdpauinfo

Ex. d'une partie de la sortie de vdpauinfo sur un ordinateur portable avec prise en charge de base de vdpau

$ 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

Si vous avez du matériel nvidia et que vous ne pouvez pas ou pas prendre en charge vdpau, ne vous embêtez pas avec vlc qui utilise vaapi et est plus difficile à activer. De plus, les performances de vaapi sur nvidia dépendent beaucoup du matériel. J'ai activé ici mais ne l'utilisez pas, ffmpeg multi-thread est meilleur avec mon matériel en vlc.

Ce ne sont que les bases de l'obtention de vaapi et de l'activation dans vlc. Pour plus de détails, vous devez rechercher et / ou demander comment.

Les conditions requises pour vlc sont:

librairies partagées vlc & ffmpeg qui prennent en charge vaapi, 11.10 est bien là.

libva1, installez également libva-x11-1 vainfo

vdpau-va-driver

Votre plus gros problème peut être que les versions d'ubuntu de libva * et vdpau-va-driver ne sont pas assez nouvelles, vous aurez besoin d'obtenir des conseils supplémentaires. In 12.04 they are adequate

Courir vainfodans un terminal devrait vous dire où vous en êtes

Ex. ici de 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

Pour activer le décodage GPU dans VLC via Vaapi et FFmpeg, deux façons

Depuis un terminal, pas besoin de paramétrer les préférences

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

Pour définir dans l'interface graphique de vlc, les messages précédents sont incorrects quant à la façon dont la manière réelle est affichée à l'écran

Outils> Préférences> Entrée / Codecs> cochez la case, la lecture de "Ignorer le filtre de déblocage en boucle H.264" peut s'avérer utile

entrez la description de l'image ici

Ex. à partir du terminal de décodage gpu vlc via vaapi , en utilisant le repo vlc en 12.04 bien que 1.2 / 1.3 / 2.0 soient les versions préférées, un ppa pour 2.0 devrait être disponible si vous le souhaitez

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.
doug
la source
Pas même lors de l'appel via optirun de bumblebee, ne peut pas trouver la bibliothèque, bien qu'elle soit là: optirun vdpauinfo display:: 0.0 screen: 0 Impossible d'ouvrir le backend VDPAU libvdpau_nvidia.so: ne peut pas ouvrir le fichier objet partagé: aucun fichier ou répertoire création d'un périphérique VDPAU: 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
Si, comme il apparaît maintenant, vous avez un matériel vidéo hybride / optimus, vous devrez rechercher comment autoriser le décodage gpu via la puce nvidia. Moi-même, je n'ai jamais possédé un tel matériel, une question spécifique à ce problème peut attirer l'attention de ceux qui le font et sont confrontés ou, espérons-le, "résoudre" ce problème
doug
cette question contient des informations sur l'hybride, probablement d'autres askubuntu.com/questions/100786/…
doug
2

Vous pouvez le faire en vérifiant l'utilisation du processeur du processus de lecture par exemple top. Si le déchargement de vdpau est en vigueur, l'utilisation du processeur doit être faible. D'un autre côté, le décodage sur le processeur entraînera une charge élevée du processeur.

Egil
la source
0

VLC, utilise par défaut l'accélération matérielle de la plate-forme si elle est disponible.Vous pouvez le vérifier en allant dans Outils du lecteur-> Préférences-> Vidéo-> Sortie vidéo accélérée (superposition) et voir si elle est cochée.

Vous devez donc vérifier si les pilotes de la carte graphique Nvidia sont correctement installés, ce que vous pouvez faire en utilisant Système-> Administration-> Pilotes supplémentaires .

AIB
la source
Pour vlc, Outils-> Préférences-> Vidéo-> Sortie vidéo accélérée (superposition) est cochée, mais cela se comporte comme lorsque je l'exécute avec mplayer, donc je suppose que cela ne fonctionne pas non plus.
719016
0

Pour vérifier que je jouerais un film HD, téléchargez une bande-annonce à partir du site Web de la bande-annonce du film Apple / iTunes. sur VLC, accédez à Outils-> Préférences-> Vidéo-> Sortie vidéo accélérée (superposition) et désactivez-la. Ouvrez le Moniteur système et accédez à l'onglet "Processus" et recherchez VLC dans la liste.

Démarrez la bande-annonce ou le film que vous avez et regardez à quelle hauteur le processus VLC utilise le processeur. Maintenant, arrêtez le film sur VLC et allez dans Outils-> Préférences-> Vidéo-> Sortie vidéo accélérée (superposition) puis "Activez" l'accélération matérielle et enregistrez vos paramètres. Il peut être nécessaire de fermer puis de redémarrer VLC pour que les modifications prennent effet. Je le redémarrerais pour être sûr.

Une fois VLC redémarré avec la superposition matérielle activée. Lisez le même film / bande-annonce qu'avant et voyez si les ressources du processeur sont inférieures dans le panneau Moniteur système.

S'ils sont nettement inférieurs, cela signifie que cela fonctionne.

dans mon cas, VLC est passé de 60 à 70% du processeur à seulement 20 à 30%. J'ai remarqué que MPlayer utilisait encore moins. il est passé de 60 à 70% à moins de 5% avec l'accélération matérielle.

Vos résultats varieront, mais si l'accélération matérielle fonctionne correctement, vous devriez constater une baisse assez importante de l'utilisation du processeur sur ce processus spécifique sous le Moniteur système.

D'après ce que je comprends, l'accélération matérielle vidéo n'est pas compatible avec tous les formats vidéo et cela dépend de votre GPU en ce qui concerne les formats qu'il peut décoder.

Wolver1n3
la source