Como posso saber se a nvidia vdpau está funcionando para o mplayer / vlc / totem?

7

Eu tenho um laptop com uma placa discreta de gráficos Nvidia .

Como posso saber se meu player de vídeo é o mplayer ou o vlc ou o totem está usando o nvidia VDPAU ou não? Por exemplo, executando o mplayer2 com o script abaixo, recebo esta mensagem:

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

Mas eu tenho esse arquivo no 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 descobrir o codec de um arquivo:

    #!/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: aparentemente, ele não consegue encontrar a biblioteca, nem mesmo ao chamá-lo via optirun v3 do bumblebee, embora a biblioteca esteja 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: Eu tentei novamente com o Ubuntu 12.04 e ainda não consigo trabalhar.

    
por 719016 30.05.2011 / 12:20

4 respostas

10

Para resolver sua dúvida & amp; um pouco sobre como ativar a decodificação de gpu com mplayer ou vlc.

Mplayer

A maneira mais fácil de ver se você está obtendo a descodificação gpu através do vdpau é fazer o que você fez - execute o mplayer a partir de um terminal. Atm o que você mostrou indica que você não está recebendo isso.

Os requisitos para o mplayer são:

mplayer ou mplayer 2

nvidia-current ou os drivers nvidia diretamente da nvidia, o pacote nvidia-current fará.

libvdpau

Verifique se você atendeu ao acima e execute o comando que fez antes, mas certifique-se de que o vídeo seja h.264

da saída do terminal, removeu linhas irrelevantes

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

Se você apoiar / obter o vdpau através do mplayer, poderá definir uma linha vc= em ~/.mplayer/config para verificação automática & amp; use o decodificador ffvdpau * apropriado para os codecs suportados

Outra maneira de verificar é usar vdpauinfo . O pacote está disponível somente em 12.04, mas pode ser instalado em 11.10. Para fazer isso, clique aqui e faça o download do & amp; instale com gdebi , embora software center possa instalar para você se você quiser tentar

link

Para usar, abra um terminal & amp; executar vdpauinfo

Ex. de algumas das saídas do vdpauinfo em um laptop com suporte vdpau básico

$ 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

Se você tiver nvidia hardware & amp; não pode ou não tem suporte a vdpau, então não se incomode com vlc que usa vaapi & amp; é mais complicado de ativar. Além disso, o desempenho do vaapi na nvidia depende muito do hardware. Já habilitei aqui mas não uso, o ffmpeg multi-thread é melhor com meu hardware em vlc.

Este é apenas o básico para obter o vaapi & amp; habilitando em vlc. Para detalhes você precisa pesquisar & amp; ou pergunte como.

Os requisitos para a vlc são:

vlc & amp; ffmpeg shared libs que possuem suporte a vaapi, 11.10 é bom lá.

libva1 , instale também libva-x11-1 vainfo

vdpau-va-driver

Seu maior problema pode ser que as versões do Ubuntu da libva * & amp; vdpau-va-driver não são novos o suficiente, você precisará obter mais conselhos lá. In 12.04 they are adequate

A execução de vainfo em um terminal deve informar onde você está

Ex. aqui 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

Para ativar a decodificação de gpu em vlc a vaapi & amp; ffmpeg, duas maneiras

De um terminal, não é necessário definir preferências

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

Para definir na GUI do vlc, as postagens anteriores estão incorretas sobre como, a maneira real é mostrada na tela

Ferramentas > Preferências > Entrada / Codecs > marque a caixa, lendo em "Ignorar filtro de desbloqueio em loop H.264" pode ser útil

Ex.doterminaldevlcgpudecodificandoavaapi,usandoorepovlcem12.04,embora1.2/1.3/2.0sejamversõespreferenciais,umppapara2.0deveestardisponívelsedesejado

vlc--ffmpeg-hw'/home/doug/Videos/sintel.mp4'VLCmediaplayer1.1.13TheLuggage(revisionexported)clipped.....libva:libvaversion0.32.0Xlib: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.
    
por doug 03.02.2012 / 03:51
2

Você pode fazer isso verificando o uso da CPU do processo de reprodução, por exemplo top . Se o descarregamento do vdpau estiver em vigor, o uso da CPU deverá ser baixo. Por outro lado, a decodificação na cpu resultará em alta carga de cpu.

    
por Egil 30.05.2011 / 13:02
0

VLC, Por padrão, usa a aceleração de hardware da plataforma, se ela estiver disponível.Você pode verificar acessando as Ferramentas- > Preferências- > Video- > Saída de Vídeo Acelerada (Overlay) e ver se está marcado.

Portanto, você deve verificar se os drivers da placa gráfica Nvidia estão instalados corretamente, o que pode ser feito usando o Sistema- > Administração- > Drivers Adicionais .

    
por AIB 30.05.2011 / 12:36
0

Para verificar, eu reproduzia um filme em alta definição, "Download de um trailer" no site da Apple / iTunes trailer do filme. no VLC, vá para Ferramentas- > Preferências- > Vídeo- > Saída de Vídeo Acelerada (Overlay) e desative-a. Abra o monitor do sistema e vá para a aba "Processos" e encontre o VLC na lista.

Inicie o trailer ou filme que você tem e veja como o processo VLC está usando a CPU. Agora pare o filme no VLC e vá em Ferramentas- > Preferências- > Vídeo- > Saída de Vídeo Acelerada (Overlay) e depois "Ativar" a aceleração de hardware e salve suas configurações. Pode ser necessário fechar e reiniciar o VLC para que as alterações entrem em vigor. Eu voltaria a ser seguro.

Quando o VLC for reiniciado com a sobreposição de hardware ativada. Reproduza o mesmo filme / trailer de antes e veja se os recursos da CPU estão mais baixos no painel Monitor do sistema.

Se eles forem significativamente menores, isso significa que está funcionando.

no meu caso, o VLC passou de 60 a 70% da CPU para apenas 20 a 30%. Notei que o MPlayer usava ainda menos. passou de 60-70% para menos de 5% com aceleração de hardware.

Seus resultados irão variar, mas se a aceleração de hardware estiver funcionando corretamente, você deverá ver uma diminuição significativa no uso da CPU nesse processo específico no Monitor do Sistema.

Pelo que entendi, a aceleração do hardware de vídeo não é compatível com todos os formatos de vídeo e depende da sua GPU quanto a quais formatos ela pode decodificar.

    
por Wolver1n3 02.02.2012 / 20:51