Eu tenho um laptop com uma placa de vídeo Nvidia discreta .
Como posso saber se meu player de vídeo, mplayer, vlc ou totem, está usando a nvidia VDPAU ou não? Por exemplo, executando 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á-la através do opt3 da 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: Tentei novamente com o Ubuntu 12.04 e ainda não consigo fazê-lo funcionar.
nvidia
video-player
719016
fonte
fonte
Respostas:
Para responder à sua pergunta e um pouco sobre como habilitar a decodificação gpu com mplayer ou vlc.
Mplayer
A maneira mais fácil de verificar se você está obtendo decodificação de gpu através do vdpau é fazer o que você fez - execute o mplayer a partir de um terminal. O que você mostrou indica que não está conseguindo.
Os requisitos para o mplayer são:
mplayer
oumplayer 2
nvidia-current
ou os drivers nvidia diretamente da nvidia, o pacote nvidia-current funcionará.libvdpau
Verifique se você atendeu ao que foi dito acima e execute o comando que você fez antes, embora o vídeo seja h.264
Ex. da saída do terminal, linhas irrelevantes removidas
Se você suporta / obtém vdpau através do mplayer, pode configurar uma
vc=
linha~/.mplayer/config
para verificação automática e usar o decodificador ffvdpau * apropriado para codecs suportadosOutra maneira de verificar é usar
vdpauinfo
. O pacote está disponível apenas na 12.04, mas pode ser instalado na 11.10. Para fazer isso, acesse aqui, faça o download e instale comgdebi
, emborasoftware center
possa ser instalado para você se você quiser tentarhttp://packages.ubuntu.com/precise/vdpauinfo
Para usar, abra um terminal e execute
vdpauinfo
Ex. de parte da saída do vdpauinfo em um laptop com suporte básico ao vdpau
Vlc
Se você possui hardware nvidia e não pode ou não tem suporte a vdpau, não se preocupe com o vlc, que usa o vaapi & é mais complicado de ativar. Além disso, o desempenho do vaapi na nvidia depende muito do hardware. Eu habilitei aqui, mas não use, o ffmpeg multi-thread é melhor com o meu hardware no vlc.
Este é apenas o básico para obter vaapi e ativar no vlc. Para detalhes, você precisa pesquisar e / ou perguntar como.
Os requisitos para o vlc são:
As bibliotecas compartilhadas vlc & ffmpeg que têm suporte a vaapi, 11.10 são boas lá.
libva1
, também instalalibva-x11-1
vainfo
vdpau-va-driver
Seu maior problema pode ser que as versões do libva * e vdpau-va-driver do ubuntu não são novas o suficiente, você precisará obter mais conselhos lá.
In 12.04 they are adequate
A operação
vainfo
em um terminal deve indicar onde você estáEx. aqui de vainfo
Para habilitar a decodificação gpu no vlc thru vaapi e ffmpeg, duas maneiras
Em um terminal, não há necessidade de definir preferências
Para definir na GUI do vlc, os posts anteriores estão incorretos sobre como, a maneira real é mostrada na tela
Ferramentas> Preferências> Entrada / codecs> marque a caixa, ler "Ignorar filtro de desbloqueio em loop H.264" pode valer a pena
Ex. do terminal da decodificação vlc gpu através do vaapi , usando o repo vlc em 12.04, embora as versões 1.2 / 1.3 / 2.0 sejam as preferidas, um ppa para 2.0 deve estar disponível, se desejado
fonte
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 deve ser baixo. Por outro lado, a decodificação na CPU resultará em alta carga de CPU.fonte
VLC, Por padrão, usa a aceleração de hardware da plataforma, se estiver disponível. Você pode verificar acessando Ferramentas -> Preferências -> Vídeo -> Saída de Vídeo Acelerada (Overlay) e ver se está marcada.
Portanto, você deve verificar se os drivers da placa de vídeo Nvidia estão instalados corretamente, o que pode ser feito usando o Sistema-> Administração-> Drivers Adicionais .
fonte
Para verificar se eu reproduzia um filme em HD, faça o download de um trailer no site de trailers da Apple / iTunes. no VLC, acesse Ferramentas-> Preferências-> Vídeo-> Saída de vídeo acelerada (Overlay) e desative-a. Abra o monitor do sistema e vá para a guia "Processos" e encontre o VLC na lista.
Inicie o trailer ou o filme que você possui 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 (sobreposição) e depois em "Ativar" a aceleração do hardware e salve as configurações. Pode ser necessário fechar e reiniciar o VLC para que as alterações entrem em vigor. Eu o reiniciaria para ser seguro.
Depois que o VLC é 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 são significativamente menores, significa que está funcionando.
no meu caso, o VLC passou de 60-70% da CPU para apenas 20-30%. Notei que o MPlayer usava menos ainda. passou de 60-70% para menos de 5% com a aceleração por hardware.
Seus resultados variarão, mas se a aceleração de hardware estiver funcionando corretamente, você verá uma queda bastante significativa no uso da CPU nesse processo específico no Monitor do sistema.
Pelo que entendi, a aceleração de hardware de vídeo não é compatível com todos os formatos de vídeo e depende da sua GPU na medida em que formatos pode decodificar.
fonte