J'ai un ordinateur portable avec une carte discrète Nvidia graphics.
Comment savoir si mon lecteur vidéo, qu'il s'agisse de mplayer, de vlc ou de 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, la bibliothèque ne peut pas être trouvée, même quand on l’appelle via l’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 essayé à nouveau avec Ubuntu 12.04 et je n'arrive toujours pas à le faire fonctionner.
Pour répondre à votre question et à l'activation du décodage de gpu avec mplayer ou vlc.
Mplayer
Le moyen le plus simple de savoir si vous obtenez le décodage gpu via vdpau est de faire ce que vous avez fait: exécuter mplayer depuis 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 à partir de nvidia, le paquet nvidia-current fera l'affaire.
libvdpau
name__
Assurez-vous que vous rencontrez ce qui précède, puis exécutez la commande que vous avez déjà faite, mais assurez-vous que la vidéo est au format h.264.
Ex. de la sortie du terminal, lignes supprimées supprimées
$ 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 supportez/obtenez vdpau par le biais de mplayer, vous pouvez définir une ligne vc=
dans ~/.mplayer/config
pour vérifier automatiquement et utiliser le décodeur ffvdpau * approprié pour les codecs pris en charge.
Une autre façon de vérifier consiste à utiliser vdpauinfo
name__. Le package est uniquement disponible dans 12.04 mais peut être installé dans 11.10. Pour ce faire, cliquez ici, téléchargez et installez avec gdebi
name__, bien que software center
puisse être installé à votre place si vous souhaitez essayer.
http://packages.ubuntu.com/precise/vdpauinfo
Pour utiliser, ouvrez un terminal et exécutez vdpauinfo
name__
Ex. de la sortie de vdpauinfo sur un ordinateur portable prenant en charge 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 n'avez pas de support vdpau, ne vous embêtez pas avec vlc qui utilise vaapi & 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, le multi-thread ffmpeg est préférable avec mon matériel en vlc.
Ceci est juste les bases pour obtenir le vaapi et l’activation dans vlc. Pour plus de détails, vous devez rechercher et/ou demander comment.
Les conditions requises pour vlc sont:
vlc & ffmpeg bibliothèques partagées qui ont un support vaapi, 11.10 est bien ici.
libva1
, installez également libva-x11-1
vainfo
name__
vdpau-va-driver
Votre plus gros problème est peut-être que les versions d'ubuntu de libva * & vdpau-va-driver ne sont pas assez nouvelles, vous devrez donc obtenir des conseils supplémentaires. In 12.04 they are adequate
Lancer vainfo
dans un terminal devrait vous indiquer votre position.
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 à travers vaapi & ffmpeg, deux manières
A partir d'un terminal, pas besoin de paramétrer dans les préférences
vlc --ffmpeg-hw /path/to/supported/video/name
Pour définir dans l'interface graphique de vlc, , les publications précédentes sont incorrectes quant à la manière dont la manière réelle est affichée à l'écran.
Outils> Préférences> Entrée/Codecs> cochez la case. La lecture du message "Ignorer le filtre de déblocage en boucle H.264" peut s'avérer utile.
Ex. depuis le terminal de vlc gpu décodant par vaapi , en utilisant le repo vlc dans 12.04 bien que 1.2/1.3/2.0 soient des versions préférées, un ppa pour 2.0 devrait être disponible si désiré
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.
Vous pouvez le faire en vérifiant l'utilisation du processeur du processus de lecture, par exemple top
name__. Si le déchargement de vdpau est activé, l'utilisation du processeur devrait être faible. D'autre part, le décodage sur le processeur entraînera une charge de processeur élevée.
Pour vérifier si je visais un film HD, téléchargez une bande-annonce à partir du site Web de la bande-annonce Apple/iTunes. sur VLC, allez dans 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.
Commencez la bande-annonce ou le film que vous avez et regardez à quelle hauteur le processus VLC utilise le processeur. Arrêtez maintenant le film sur VLC et allez dans Outils-> Préférences-> Vidéo-> Sortie vidéo accélérée (superposition) puis "Activer" 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 en sécurité.
Une fois que VLC est redémarré avec la superposition matérielle activée. Lisez le même film/trailer que précédemment et voyez si les ressources du processeur sont plus basses dans le panneau du moniteur système.
Si elles sont nettement inférieures, cela signifie que cela fonctionne.
dans mon cas, VLC est passé de 60 à 70% d’utilisation à 20-30%. J'ai remarqué que MPlayer en 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 significative de l'utilisation du processeur sur ce processus spécifique sous le Moniteur système.
D'après ce que j'ai compris, l'accélération matérielle vidéo n'est pas compatible avec tous les formats vidéo. Elle dépend de votre GPU en ce qui concerne les formats qu'elle peut décoder.
VLC, utilise par défaut l'accélération matérielle de la plate-forme si elle est disponible.Vous pouvez vérifier en accédant au lecteur Outils-> Préférences-> Vidéo-> Sortie vidéo accélérée (superposition) et voyez 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 utiliser à l'aide de Système-> Administration-> Pilotes supplémentaires.