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

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

Как я могу знать, использует ли мой видеоплеер быть этим mplayer или vlc или тотем 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

Править: по-видимому, это не может найти библиотеку, даже при вызове его через v3 optirun шмеля, хотя библиотека там:

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, и я все еще не могу заставить ее работать.

8
задан 16 May 2012 в 01:39

4 ответа

Рассматривать Ваш вопрос и немного при включении gpu декодирующий с mplayer или vlc.

Mplayer

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

Необходимое для mplayer:

mplayer или mplayer 2

nvidia-current или драйверы Nvidia непосредственно от Nvidia, текущий Nvidia пакет сделает.

libvdpau

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

Напр. из терминального вывода, удаленных несоответствующих строк

$ 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, можно установить a vc= строка в ~/.mplayer/config к автоматической проверке и использованию соответствующий ffvdpau* декодер для поддерживаемых кодеков

Другой способ проверить состоит в том, чтобы использовать vdpauinfo. Пакет только доступен в 12,04, но может быть установлен в 11,10. Чтобы сделать так идут сюда, загружают и устанавливают с gdebi, хотя software center может установить для Вас, если Вы хотите попробовать

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

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

Напр. из части вывода 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 не являются достаточно новыми, необходимо будет получить дальнейший совет там. In 12.04 they are adequate

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

Напр. здесь 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

Включить gpu, декодирующий в vlc через vaapi и ffmpeg, два пути

От терминала, никакая потребность установить в предпочтениях

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

Для установки в gui vlc предшествующие сообщения являются неправильными относительно того, как, фактический путь показывают на экране

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

enter image description here

Напр. от терминала 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.
11
ответ дан 23 November 2019 в 05:33

Можно сделать это путем проверки использования CPU процесса проигрывания в, например, top. Если разгрузка vdpau в действительности, использование CPU должно быть низким. С другой стороны, декодирование на CPU приведет к высокой загрузке ЦП.

2
ответ дан 23 November 2019 в 05:33

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

Таким образом, необходимо проверить, установлены ли драйверы для видеокарты Nvidia правильно, который Вы можете при помощи Системы-> администрация-> Дополнительные Драйверы.

0
ответ дан 23 November 2019 в 05:33

Для проверки я проигрывал бы фильм HD, Загрузка трейлер с веб-сайта трейлера фильма яблока/iTunes. на VLC, полученной к Инструментам-> Предпочтения-> Видео-> Ускоренный Видеовыход (Наложение) и, отключите его. Откройте Системный монитор и перейдите к вкладке "Processes" и найдите VLC в списке.

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

После того как VLC перезапущен с аппаратным включенным наложением. Проигрывайте тот же фильм как прежде и посмотрите, находятся ли Ресурсы ЦП ниже в группе System Monitor.

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

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

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

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

0
ответ дан 23 November 2019 в 05:33

Другие вопросы по тегам:

Похожие вопросы: