Tengo una computadora portátil con una discreta tarjeta gráfica Nvidia .
¿Cómo puedo saber si mi reproductor de video, ya sea mplayer o vlc o totem, está usando nvidia VDPAU o no? Por ejemplo, ejecutando mplayer2 con el siguiente script, recibo este mensaje:
Failed to open VDPAU backend libvdpau_nvidia.so: cannot open shared object file: No such file or directory
Pero tengo ese archivo en el sistema:
-rw-r--r-- 1 root root 1800952 2011-11-23 07:39 /usr/lib/nvidia-current/vdpau/libvdpau_nvidia.so.290.10
Script para descubrir el códec de un archivo:
#!/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
EDITAR: aparentemente no puede encontrar la biblioteca, ni siquiera cuando la llama a través de bumblebee's v3 optirun, aunque la biblioteca está allí:
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: intenté de nuevo con Ubuntu 12.04 y todavía no puedo hacer que funcione.
nvidia
video-player
719016
fuente
fuente
Respuestas:
Para responder a su pregunta y un poco sobre cómo habilitar la decodificación de gpu con mplayer o vlc.
Mplayer
La forma más fácil de ver si está obteniendo decodificación de gpu a través de vdpau es hacer lo que ha hecho: ejecutar mplayer desde una terminal. El cajero automático que has mostrado indica que no lo estás obteniendo.
Los requisitos para mplayer son:
mplayer
omplayer 2
nvidia-current
o los controladores de nvidia directamente desde nvidia, el paquete nvidia-current funcionará.libvdpau
Asegúrese de cumplir con lo anterior, luego ejecute el comando que hizo antes, aunque asegúrese de que el video sea h.264
Ex. de salida de terminal, líneas irrelevantes eliminadas
Si admite / obtiene vdpau a través de mplayer, puede configurar una
vc=
línea~/.mplayer/config
para verificar automáticamente y usar el decodificador ffvdpau * apropiado para los códecs compatiblesOtra forma de verificar es usar
vdpauinfo
. El paquete solo está disponible en 12.04 pero se puede instalar en 11.10. Para hacerlo, vaya aquí, descargue e instale congdebi
, aunquesoftware center
puede instalarlo si desea probarhttp://packages.ubuntu.com/precise/vdpauinfo
Para usar abrir una terminal y ejecutar
vdpauinfo
Ex. de algunos de los resultados de vdpauinfo en una computadora portátil con soporte básico de vdpau
Vlc
Si tiene hardware nvidia y no puede o no tiene soporte para vdpau, no se moleste con vlc que usa vaapi y es un truco para habilitar. Además, el rendimiento de vaapi en nvidia depende mucho del hardware. He habilitado aquí pero no lo uso, ffmpeg multi-thread es mejor con mi hardware en vlc.
Esto es solo lo básico para obtener vaapi y habilitar en vlc. Para obtener detalles específicos, debe buscar y preguntar cómo.
Los requisitos para vlc son:
vlc & ffmpeg libs compartidas que tienen soporte vaapi, 11.10 es bueno allí.
libva1
, también instalarlibva-x11-1
vainfo
vdpau-va-driver
Su mayor problema puede ser que las versiones de ubuntu de libva * y vdpau-va-driver no son lo suficientemente nuevas, necesitará obtener más consejos allí.
In 12.04 they are adequate
Correr
vainfo
en una terminal debería decirte dónde estás paradoEx. aquí de vainfo
Para habilitar la decodificación de gpu en vlc a través de vaapi y ffmpeg, de dos maneras
Desde una terminal, no es necesario establecer preferencias
Para configurar en la interfaz gráfica de usuario de vlc, las publicaciones anteriores son incorrectas en cuanto a cómo, la forma real se muestra en la pantalla
Herramientas> Preferencias> Entrada / Códecs> marque la casilla, leer sobre "Omitir filtro de desbloqueo en bucle H.264" puede valer la pena
Ex. desde la terminal de vlc decodificación de gpu a través de vaapi , utilizando el vpo de repo en 12.04 aunque 1.2 / 1.3 / 2.0 son versiones preferidas, un ppa para 2.0 debería estar disponible si se desea
fuente
Puede hacerlo verificando el uso de la CPU del proceso de reproducción, por ejemplo
top
. Si la descarga de vdpau está vigente, el uso de la CPU debe ser bajo. Por otro lado, la decodificación en la CPU dará como resultado una alta carga de CPU.fuente
VLC: De forma predeterminada, utiliza la aceleración de hardware de la plataforma si está disponible. Puede verificar yendo a Herramientas-> Preferencias-> Video-> Salida de video acelerada (Superposición) y ver si está marcada.
Por lo tanto, debe verificar si los controladores para la tarjeta gráfica Nvidia están instalados correctamente, lo que puede hacer utilizando el Sistema-> Administración-> Controladores adicionales .
fuente
Para comprobar que reproduciría una película en HD, descargue un avance del sitio web del avance de la película Apple / iTunes. en VLC llegó a Herramientas-> Preferencias-> Video-> Salida de video acelerada (Superposición) y la deshabilitó. Abra el monitor del sistema y vaya a la pestaña "Procesos" y busque VLC en la lista.
Inicie el avance o la película que tiene y observe qué tan alto está usando la CPU el proceso VLC. Ahora pare la película en VLC y vaya a Herramientas-> Preferencias-> Video-> Salida de video acelerada (Superposición) y luego "Habilite" la aceleración de hardware y guarde sus configuraciones. Puede ser necesario cerrar y luego reiniciar VLC para que los cambios surtan efecto. Lo reiniciaría para estar seguro.
Una vez que se reinicia VLC con la superposición de hardware habilitada. Reproduzca la misma película / avance que antes y vea si los recursos de la CPU son inferiores en el panel Monitor del sistema.
Si son significativamente más bajos, eso significa que está funcionando.
en mi caso, VLC pasó de usar 60-70% de CPU a solo 20-30%. Noté que MPlayer usó incluso menos. pasó del 60-70% a menos del 5% con aceleración de hardware.
Sus resultados variarán, pero si la aceleración de hardware funciona correctamente, debería ver una disminución bastante significativa en el uso de la CPU en ese proceso específico en el Monitor del sistema.
Por lo que entiendo, la aceleración de hardware de video no es compatible con todos los formatos de video y depende de su GPU en cuanto a qué formatos puede decodificar.
fuente