Как я могу узнать, работает ли nvidia vdpau для mplayer / vlc / totem?

8

У меня ноутбук с дискретной видеокартой Nvidia .

Как я могу узнать, использует ли мой видеоплеер mplayer, vlc или totem nvidia VDPAU или нет? Например, запустив mplayer2 с помощью приведенного ниже сценария, я получаю следующее сообщение:

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

Но у меня есть такой файл в системе:

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

Скрипт для поиска кодека для файла:

    #!/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

РЕДАКТИРОВАТЬ: очевидно, он не может найти библиотеку, даже при вызове ее через optirun v3 шмеля, хотя библиотека есть:

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: я попробовал еще раз с Ubuntu 12.04, и я до сих пор не могу заставить его работать.

719016
источник
Например, для mplayer я получаю ошибку: [vdpau] при вызове vdp_device_create_x11: 1
719016
Возможно связано: askubuntu.com/questions/100786/…
Бруно Перейра
Я попытался снова с Ubuntu 12.04, и я все еще не могу заставить его работать.
719016

Ответы:

11

Чтобы ответить на ваш вопрос и немного о включении декодирования GPU с помощью mplayer или vlc.

Mplayer

Самый простой способ узнать, получаете ли вы декодирование gpu через vdpau, - это сделать то, что вы сделали - запустить mplayer из терминала. То, что вы показали, говорит о том, что вы этого не получаете.

Реквизиты для mplayer:

mplayer или mplayer 2

nvidia-current или драйверы nvidia напрямую от nvidia, подойдет пакет nvidia-current.

libvdpau

Убедитесь, что вы выполнили все вышеперечисленное, затем выполните команду, которую вы делали раньше, хотя убедитесь, что видео h.264

Ex. вывода терминала, удалены нерелевантные линии

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

Если вы поддерживаете / получаете vdpau через mplayer, вы можете установить vc=строку ~/.mplayer/configдля автоматической проверки и использовать соответствующий декодер ffvdpau * для поддерживаемых кодеков.

Другой способ проверить это использовать vdpauinfo. Пакет доступен только в 12.04, но может быть установлен в 11.10. Для этого перейдите сюда, загрузите и установите с помощью gdebi, хотя software centerможете установить для вас, если вы хотите попробовать

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

Чтобы использовать открыть терминал и запустить vdpauinfo

Ex. некоторых из вывода vdpauinfo на ноутбуке с базовой поддержкой 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

Если у вас есть оборудование nvidia и вы не можете или не имеете поддержки vdpau, не беспокойтесь о vlc, который использует vaapi & tricker для включения. Кроме того, производительность vaapi на nvidia сильно зависит от оборудования. Я включил здесь, но не использую, многопоточность ffmpeg лучше с моим оборудованием в vlc.

Это просто основы получения vaapi и включения в vlc. Для подробностей вам нужно искать & или спросить, как.

Реквизиты для vlc:

Общие библиотеки vlc & ffmpeg с поддержкой vaapi, 11.10 - это хорошо.

libva1также установить libva-x11-1 vainfo

vdpau-va-driver

Ваша самая большая проблема может заключаться в том, что версии libva * & vdpau-va-driver для ubuntu недостаточно новы, вам нужно будет получить дальнейшие советы. In 12.04 they are adequate

Запуск vainfoв терминале должен сказать вам, где вы стоите

Ex. здесь Вайнфо

$ 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

Чтобы включить декодирование GPU в vlc через vaapi & ffmpeg, двумя способами

С терминала не нужно устанавливать настройки

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

Чтобы установить в графическом интерфейсе vlc, предыдущие сообщения неверны относительно того, как, фактический путь отображается на экране

Инструменты> Предпочтения> Ввод / Кодеки> установите флажок, чтение «Пропустить фильтр удаления блочности H.264» может оказаться полезным

введите описание изображения здесь

Ex. с терминала декодирования vlc gpu через vaapi , используя repo vlc в 12.04, хотя 1.2 / 1.3 / 2.0 являются предпочтительными версиями, при желании должен быть доступен ppa для 2.0

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.
Дуг
источник
Даже при вызове через optirun шмеля не удается найти библиотеку, хотя она есть: optirun vdpauinfo display:: 0.0 screen: 0 Не удалось открыть бэкэнд VDPAU libvdpau_nvidia.so: невозможно открыть файл общего объекта: Нет такого файла или каталога Ошибка создание устройства 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
Если, как сейчас кажется, у вас есть гибридное / оптимальное видеооборудование, вам нужно будет изучить, как разрешить декодирование GPU через чип NVIDIA. У меня никогда не было такого оборудования, вопрос, относящийся к этой проблеме, может привлечь внимание тех, кто сталкивается с этой проблемой или, мы надеемся, «исправил» эту проблему
doug
этот вопрос имеет некоторую информацию о гибриде, вероятно, другие askubuntu.com/questions/100786/…
doug
2

Вы можете сделать это, например, проверив использование процессором игрового процесса top. Если включена разгрузка vdpau, загрузка процессора должна быть низкой. С другой стороны, декодирование на процессоре приведет к высокой загрузке процессора.

Эгиль
источник
0

VLC, по умолчанию использует аппаратное ускорение платформы, если оно доступно. Вы можете проверить это, зайдя в « Инструменты» -> «Настройки» -> «Видео» -> «Ускоренный видеовыход» (Overlay) и посмотрите, установлен ли он.

Поэтому вы должны проверить, правильно ли установлены драйверы для видеокарты Nvidia, что можно сделать с помощью System-> Administration-> Additional Drivers .

AIB
источник
Для vlc, Tools-> Preferences-> Video-> Accelerated Video Output (Overlay) отмечен галочкой, но он работает так же, как когда я запускаю его с mplayer, поэтому я предполагаю, что он тоже не работает.
719016
0

Чтобы проверить, будет ли я проигрывать HD-фильм, загрузите трейлер с веб-сайта трейлера фильма Apple / iTunes. на VLC попал в Сервис-> Настройки-> Видео-> Ускоренный вывод видео (Overlay) и отключил его. Откройте Системный монитор и перейдите на вкладку «Процессы» и найдите VLC в списке.

Запустите трейлер или фильм, который у вас есть, и посмотрите, насколько высоко процесс VLC использует CPU. Теперь остановите фильм на VLC и перейдите в Инструменты-> Настройки-> Видео-> Ускоренный вывод видео (наложение), затем «Включить» аппаратное ускорение и сохраните настройки. Может потребоваться закрыть, а затем перезапустить VLC, чтобы изменения вступили в силу. Я бы перезапустил его, чтобы быть в безопасности.

После перезапуска VLC с включенным аппаратным оверлеем. Воспроизведите тот же фильм или трейлер, что и раньше, и посмотрите, меньше ли ресурсов ЦП на панели «Системный монитор».

Если они значительно ниже, значит, это работает.

в моем случае VLC перешел с использования 60-70% процессора только на 20-30%. Я заметил, что MPlayer использовал еще меньше. аппаратное ускорение упало с 60-70% до менее 5%.

Ваши результаты могут отличаться, но если аппаратное ускорение работает должным образом, вы должны увидеть довольно значительное снижение использования ЦП в этом конкретном процессе в системном мониторе.

Из того, что я понимаю, аппаратное ускорение видео несовместимо со всеми видеоформатами и зависит от того, какие форматы он может декодировать, от вашего графического процессора.

Wolver1n3
источник