Работа аппаратного ускорения на примере mpv

Приветствую всех.
На лоре в последнее время часто мелькают вопросы про аппаратное ускорение, а я никогда в этом вопросе не разбирался. Преимущественно потому что видео больше чем в 2к не смотрю, а процессор вполне справляется с таким разрешением. Но раз уж есть такая возможность, стало любопытно, как это все организовать для mpv.
Опирался на четыре статьи:
https://wiki.archlinux.org/index.php/Hardware_video_acceleration
https://wiki.archlinux.org/index.php/Talk:Hardware_video_acceleration
https://wiki.archlinux.org/index.php/AMDGPU
https://jlk.fjfi.cvut.cz/arch/manpages/man/mpv.1
Поставил себе пакеты mesa, mesa-vdpau, lib32-mesa-vdpau, vdpauinfo.
У меня стоит открытый amdgpu драйвер:
local/xf86-video-amdgpu 18.0.1-1 (xorg-drivers)
Вывод vdpauinfo: https://pastebin.com/CxUNwUrz
В /usr/lib/vdpau
-rwxr-xr-x 4 root root 5.6M Mar 21 19:30 libvdpau_nouveau.so.1.0.0
-rwxr-xr-x 4 root root 5.6M Mar 21 19:30 libvdpau_r300.so.1.0.0
-rwxr-xr-x 4 root root 5.6M Mar 21 19:30 libvdpau_r600.so.1.0.0
-rwxr-xr-x 4 root root 5.6M Mar 21 19:30 libvdpau_radeonsi.so.1.0.0
-rwxr-xr-x 1 root root  54K Nov 12 01:50 libvdpau_trace.so.1.0.0
lrwxrwxrwx 1 root root   26 Mar 21 19:30 libvdpau_radeonsi.so -> libvdpau_radeonsi.so.1.0.0
lrwxrwxrwx 1 root root   26 Mar 21 19:30 libvdpau_radeonsi.so.1 -> libvdpau_radeonsi.so.1.0.0
lrwxrwxrwx 1 root root   26 Mar 21 19:30 libvdpau_radeonsi.so.1.0 -> libvdpau_radeonsi.so.1.0.0
lrwxrwxrwx 1 root root   25 Mar 21 19:30 libvdpau_nouveau.so -> libvdpau_nouveau.so.1.0.0
lrwxrwxrwx 1 root root   25 Mar 21 19:30 libvdpau_nouveau.so.1 -> libvdpau_nouveau.so.1.0.0
lrwxrwxrwx 1 root root   25 Mar 21 19:30 libvdpau_nouveau.so.1.0 -> libvdpau_nouveau.so.1.0.0
lrwxrwxrwx 1 root root   23 Nov 12 01:50 libvdpau_trace.so -> libvdpau_trace.so.1.0.0
lrwxrwxrwx 1 root root   23 Nov 12 01:50 libvdpau_trace.so.1 -> libvdpau_trace.so.1.0.0
lrwxrwxrwx 1 root root   22 Mar 21 19:30 libvdpau_r300.so -> libvdpau_r300.so.1.0.0
lrwxrwxrwx 1 root root   22 Mar 21 19:30 libvdpau_r300.so.1 -> libvdpau_r300.so.1.0.0
lrwxrwxrwx 1 root root   22 Mar 21 19:30 libvdpau_r300.so.1.0 -> libvdpau_r300.so.1.0.0
lrwxrwxrwx 1 root root   22 Mar 21 19:30 libvdpau_r600.so -> libvdpau_r600.so.1.0.0
lrwxrwxrwx 1 root root   22 Mar 21 19:30 libvdpau_r600.so.1 -> libvdpau_r600.so.1.0.0
lrwxrwxrwx 1 root root   22 Mar 21 19:30 libvdpau_r600.so.1.0 -> libvdpau_r600.so.1.0.0
Проверяю, какой драйвер используется vdpau:
[ 19433.752] (II) AMDGPU(0): [DRI2]   DRI driver: radeonsi
[ 19433.752] (II) AMDGPU(0): [DRI2]   VDPAU driver: radeonsi
Вроде как radeonsi работает с amdgpu. Объявлять VDPAU_DRIVER получается не нужно, раз система и так по умолчанию использует правильные драйвера, но я на всякий случай попробовал и с объявлением.
В конфиге mpv в соответсвии с маном прописаны опции:
--vo=vdpau
--hwdec=vdpau
Дальше я запускаю какое-нибудь видео с поддерживаемыми аппаратным ускорением кодеками и наблюдаю за нагрузками на cpu и видеокартой (температурой видеокарты, как мониторить загрузку на свободном драйвере я не нашел). Судя по тому, что у меня получилось до использования всей этой схемы и после, аппаратное декодирование у меня не используется. ЦПУ как был загружен в 2к на ~60% , так и остался. Температура видеокарты тоже не растет, т.е. полный простой на 30 градусах.
Видимо я где то ошибся в конфигурации или не понял сути этого ускорения. Карточка, если это важно, Radeon XFX 570. Достаточно свежая, по идее должна все эти плюшки поддерживать, раз драйвер позволяет.
Ядро дефолтное 4.15.13-1-ARCH
Sonahaim
Судя по тому, что у меня получилось до использования всей этой схемы и после, аппаратное декодирование у меня не используется
Что сам mpv говорит?
mpv https://www.youtube.com/watch?v=R3AKlscrjmQ
Using hardware decoding (vdpau).
VO: [opengl] 1920x1080 vdpau[yuv420p]
..
Sonahaim
В конфиге mpv в соответсвии с маном прописаны опции:
–vo=vdpau
–hwdec=vdpau

Покажите конфиг.
У меня (правда нвидиа)
cat ~/.config/mpv/mpv.conf
ytdl-format=bestvideo[height<=?1080]+bestaudio/best
profile=opengl-hq
deband=no
save-position-on-quit
cache-secs=15
hwdec=vdpau
Попробуйте с таким же заменив ваше vo=vdpau на profile=opengl-hq
Странно, но все заработало после перезагрузки :)
Playing: https://www.youtube.com/watch?v=0mdgDIpAKxI
 (+) Video --vid=1 (*) (h264 2560x1440 29.970fps)
 (+) Audio --aid=1 --alang=und (*) 'DASH audio' (aac 2ch 44100Hz) (external)
AO: [pulse] 44100Hz stereo 2ch float
Using hardware decoding (vdpau).
VO: [vdpau] 2560x1440 vdpau[yuv420p]
AV: 00:00:06 / 00:22:32 (0%) A-V:  0.000 Cache: 10s+20MB
Для сравнения, на этом видео в полноэкранном режиме плеера: без аппаратного ускорения: загрузка цпу - 40%, с аппаратным ускорением - 7%.
Видеокарта, судя по температуре, тоже не особо напрягается. В просто она ~ 30 градусов, при просмотре видео ~34 градуса.
Неплохо, оказывается. Буду использовать.
vs220, спасибо, но все уже заработало. В конфиге mpv у меня кроме указанных 2 строчек все остальное закомментированно (копировал дефолтный).
vs220
У меня (правда нвидиа)
На открытом драйвере работает аппаратное ускорение? Или все же проприетарный драйвер нвидиа установлен?
ForumLiker
На открытом драйвере работает аппаратное ускорение?
Должно. У меня проприетарный - дочка в игры играет да и я иногда.
vs220
Должно. У меня проприетарный - дочка в игры играет
игры это opengl, а ускорение видео совсем другое, поэтому не работает на открытых дровах... или уже работает?
grayich
игры это opengl, а ускорение видео совсем другое, поэтому не работает на открытых дровах… или уже работает?
Про игры - это почему блоб стоит.
А ускорение на nouveau должно работать на картах от GeForce 8ххх
https://wiki.archlinux.org/index.php/Hardware_video_acceleration
NVIDIA GeForce 8 series and newer GPUs are supported by mesa-vdpau. It requires nouveau-fwAUR, which contains the required firmware to operate that is presently extracted from the NVIDIA binary driver.

https://nouveau.freedesktop.org/wiki/VideoAcceleration/
В продолжение темы аппаратного ускорения. Есть такая удобная вещь как youtube-viewer. Она по какой-то причине не использует аппаратное ускорение. У меня только 1 плеер в системе - mpv. Почитал ман пакета и посмотрел в конфиге. Явных опций, которые регулируют ускорение, там нет, кроме опций, с которыми запускается сам плеер. В конфиге mpv нужные опции прописаны, и если я запускаю видео с youtube через команду "mpv ссылка", то ускорение прекрасно работает. А если выбираю тоже самое видео в поиске youtube-viewer, то ускорение не работает. Кусок конфига с mpv:
mpv => {
                                 arg => "--really-quiet --title *TITLE* --no-ytdl",
                                 audio => "--audio-file *AUDIO*",
                                 cmd => "/usr/bin/mpv",
                                 fs => "--fullscreen",
                                 novideo => "--no-video",
                                 srt => "--sub-file *SUB*",
                               },
Perl я не знаю, но попробовал добавить в arg те же опции, что в конфиге mpv:
arg => "--really-quiet --title *TITLE* --no-ytdl --vo=vdpau --hwdec=vdpau",
Даже так не используется ускорение.
P.S. На этот раз я перезагрузился сразу :)
Убрал опцию --really-quiet, чтобы видеть, как обрабатывается. Вывод:
(+) Video --vid=1 (*) (vp9 3840x2160 60.000fps)
 (+) Audio --aid=1 --alang=eng (*)
то есть не используется.
 
Зарегистрироваться или войдите чтобы оставить сообщение.