Аппаратное ускорение при декодировании видео в браузере (Nvidia, VDPAU, NVDEC)

1)Из статьи
https://wiki.archlinux.org/title/GNOME/Web
узнал что можно завести аппаратное ускорение в GNOME/Web. Видео карта nvidia 1060 3g. Установлен пакет кодеков из aur:

 Name            : nvidia-sdk
Version         : 11.1.5-1
Description     : NVIDIA Video Codec SDK (NVDECODE and NVENCODE APIs)
Architecture    : any
URL             : https://developer.nvidia.com/nvidia-video-codec-sdk/
Licenses        : custom
Groups          : None
Provides        : None
Depends On      : None
Optional Deps   : None
Required By     : None
Optional For    : None
Conflicts With  : None
Replaces        : None
Installed Size  : 358.30 KiB
Packager        : Unknown Packager
Build Date      : Tue 14 Sep 2021 07:54:34 PM UTC
Install Date    : Tue 14 Sep 2021 08:06:31 PM UTC
Install Reason  : Explicitly installed
Install Script  : No
Validated By    : None
Установлен Gstreamer. При проверке поддержки кодеков, выдаёт:
Plugin Details:
  Name                     nvcodec
  Description              GStreamer NVCODEC plugin
  Filename                 /usr/lib/gstreamer-1.0/libgstnvcodec.so
  Version                  1.18.4
  License                  LGPL
  Source module            gst-plugins-bad
  Source release date      2021-03-15
  Binary package           GStreamer Bad Plugins (Arch Linux)
  Origin URL               https://www.archlinux.org/
  0 features:
Я так понимаю он установленных кодеков в системе не видит. Соответственно и ускорение в гноме не работает. В чем может быть проблема?

Если я запускаю видео в mpv плеере с ключем --hwdec=nvdec, декодирование прекрасно работает.

2) Попробовал включить в firefox поддержку VAAPI. Установил libva-vdpau-driver . Использвал настройки с archwiki. Смог добиться только крашей страниц с видео.
При запуске mpv получаю краш и такой вывод:
mpv -v --vo=vaapi whicher
[cplayer] Command line options: '-v' '--vo=vaapi' 'whicher'
[cplayer] mpv 0.33.1-dirty Copyright © 2000-2020 mpv/MPlayer/mplayer2 projects
[cplayer]  built on UNKNOWN
[cplayer] FFmpeg library versions:
[cplayer]    libavutil       56.70.100
[cplayer]    libavcodec      58.134.100
[cplayer]    libavformat     58.76.100
[cplayer]    libswscale      5.9.100
[cplayer]    libavfilter     7.110.100
[cplayer]    libswresample   3.9.100
[cplayer] FFmpeg version: n4.4
[cplayer]
[cplayer] Configuration: /usr/bin/waf configure --prefix=/usr --confdir=/etc/mpv --enable-cdda --enable-dvb --enable-dvdnav --enable-libarchive --enable-libmpv-shared --disable-build-date
[cplayer] List of enabled features: 52arch alsa asm caca cdda cplayer cplugins cuda-hwaccel cuda-interop debug-build drm dvbin dvdnav egl egl-drm egl-helpers egl-x11 ffmpeg ffnvcodec gbm gbm.h gl gl-wayland glibc-thread-name glob glob-posix gpl iconv jack javascript jpeg lcms2 libarchive libass libavdevice libbluray libdl libm libmpv-shared libplacebo librt linux-fstatfs linux-input-event-codes lua memfd_create optimize plain-gl posix posix-or-mingw pthreads pulse rubberband shaderc shaderc-shared stdatomic uchardet vaapi vaapi-drm vaapi-egl vaapi-vulkan vaapi-wayland vaapi-x-egl vaapi-x11 vdpau vt.h vulkan wayland wayland-protocols x11 xv zimg zlib
[cplayer] Reading config file /etc/mpv/encoding-profiles.conf
[cplayer] Applying profile 'default'...
[cplayer] Setting option 'v' = '' (flags = 8)
[cplayer] Setting option 'vo' = 'vaapi' (flags = 8)
[cplayer] Waiting for scripts...
[osd/libass] libass API version: 0x1501000
[osd/libass] libass source: commit: 0.15.1-0-g5447214643eacef71776350e779adf4b6c07bb3b-dirty
[osd/libass] Shaper: FriBidi 1.0.10 (SIMPLE) HarfBuzz-ng 2.9.1 (COMPLEX)
[osd/libass] Setting up fonts...
[osd/libass] Using font provider fontconfig
[osd/libass] Done.
[cplayer] Set property: shared-script-properties -> 1
[cplayer] Done loading scripts.
[cplayer] Running hook: ytdl_hook/on_load
[ytdl_hook] ytdl:// hook
[ytdl_hook] not a ytdl:// url
[ifo_dvdnav] Opening whicher
[bdmv/bluray] Opening whicher
[file] Opening whicher
[demux] Trying demuxers for level=normal.
[cplayer] Set property: shared-script-properties -> 1
[osd/libass] libass API version: 0x1501000
[osd/libass] libass source: commit: 0.15.1-0-g5447214643eacef71776350e779adf4b6c07bb3b-dirty
[osd/libass] Shaper: FriBidi 1.0.10 (SIMPLE) HarfBuzz-ng 2.9.1 (COMPLEX)
[osd/libass] Setting up fonts...
[lavf] Found 'mov,mp4,m4a,3gp,3g2,mj2' at score=100 size=2048.
[file] stream level seek from 131072 to 27861443
[demux] Detected file format: mov,mp4,m4a,3gp,3g2,mj2 (libavformat)
[cplayer] Opening done: whicher
[osd/libass] Using font provider fontconfig
[osd/libass] Done.
[find_files] Loading external files in .
[cplayer] Running hook: ytdl_hook/on_preloaded
[lavf] select track 0
[lavf] select track 1
[cplayer]  (+) Video --vid=1 (*) (h264 1920x1080 24.000fps)
[cplayer]  (+) Audio --aid=1 --alang=eng (*) (aac 2ch 44100Hz)
[vo/vaapi/x11] X11 opening display: :0
[vo/vaapi/x11] Display 0 (HDMI-0): [0, 0, 1920, 1080] @ 73.898398 FPS
[vo/vaapi/x11] Current display FPS: 73.898398
[vo/vaapi/vaapi] Initialized VAAPI: version 1.12
[vo/vaapi] VA-API is most likely emulated via VDPAU.
[vo/vaapi] It's better to use VDPAU directly with: --vo=vdpau
[vo/vaapi] 4 image formats available:
[vo/vaapi]   NV12
[vo/vaapi]   YV12
[vo/vaapi]   I420
[vo/vaapi]   BGRA
[vo/vaapi] 6 subpicture formats available:
[vo/vaapi]   AI44, flags 0x0
[vo/vaapi]   IA44, flags 0x0
[vo/vaapi]   AI88, flags 0x0
[vo/vaapi]   IA88, flags 0x0
[vo/vaapi]   BGRA, flags 0x2
[vo/vaapi]   RGBA, flags 0x2
[vo/vaapi] Warning: this compatibility VO is low quality and may have issues with OSD, scaling, screenshots and more.
[vo/vaapi] vo=gpu is the preferred choice in any case and includes VA-API support via hwdec=vaapi or vaapi-copy.
[vo/vaapi] Assuming 73.898398 FPS for display sync.
[vd] Container reported FPS: 24.000000
[vd] Codec list:
[vd]     h264 - H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10
[vd]     h264_v4l2m2m (h264) - V4L2 mem2mem H.264 decoder wrapper
[vd]     h264_qsv (h264) - H264 video (Intel Quick Sync Video acceleration)
[vd]     h264_cuvid (h264) - Nvidia CUVID H264 decoder
[vd] Opening decoder h264
[vd] No hardware decoding requested.
[vd] Using software decoding.
[vd] Detected 4 logical cores.
[vd] Requesting 5 threads for decoding.
[vd] Selected codec: h264 (H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10)
[vf] User filter list:
[vf]   (empty)
[ad] Codec list:
[ad]     aac - AAC (Advanced Audio Coding)
[ad]     aac_fixed (aac) - AAC (Advanced Audio Coding)
[ad] Opening decoder aac
[ad] Requesting 1 threads for decoding.
[ad] Selected codec: aac (AAC (Advanced Audio Coding))
[af] User filter list:
[af]   (empty)
[cplayer] Starting playback...
[file] stream level seek from 27957472 to 48
[af] [in] 44100Hz stereo 2ch floatp
[af] [userspeed] 44100Hz stereo 2ch floatp
[af] [userspeed] (disabled)
[af] [convert] 44100Hz stereo 2ch floatp
[vd] DR failed - disabling.
[vd] Using software decoding.
[vd] Decoder format: 1920x1080 yuv420p bt.709/bt.709/bt.1886/limited/auto CL=mpeg2/4/h264
[vd] Using container aspect ratio.
[vf] [in] 1920x1080 yuv420p bt.709/bt.709/bt.1886/limited/display SP=1.000000 CL=mpeg2/4/h264
[vf] [userdeint] 1920x1080 yuv420p bt.709/bt.709/bt.1886/limited/display SP=1.000000 CL=mpeg2/4/h264
[vf] [userdeint] (disabled)
[vf] [autorotate] 1920x1080 yuv420p bt.709/bt.709/bt.1886/limited/display SP=1.000000 CL=mpeg2/4/h264
[vf] [autorotate] (disabled)
[vf] [convert] 1920x1080 yuv420p bt.709/bt.709/bt.1886/limited/display SP=1.000000 CL=mpeg2/4/h264
[vf] [convert] (disabled)
[vf] [out] 1920x1080 yuv420p bt.709/bt.709/bt.1886/limited/display SP=1.000000 CL=mpeg2/4/h264
[ao] Trying audio driver 'pulse'
[ao/pulse] requested format: 44100 Hz, stereo channels, floatp
[ao/pulse] Library version: 15.0.0
[ao/pulse] Proto: 35
[ao/pulse] Server proto: 4294967295
[ao] Trying audio driver 'alsa'
[ao/alsa] requested format: 44100 Hz, stereo channels, floatp
[ao/alsa] using ALSA version: 1.2.5.1
[ao/alsa] opening device 'default'
[ao/alsa] trying format float/14
[ao/alsa] channel map reported by ALSA: FL FR
[ao/alsa] which we understand as: stereo
[ao/alsa] which is what we requested.
[ao/alsa] hw pausing supported: no
[ao/alsa] buffersize: 5120 samples
[ao/alsa] period size: 1024 samples
[ao/alsa] device buffer: 5120 samples.
[ao/alsa] using soft-buffer of 9600 samples.
[cplayer] AO: [alsa] 48000Hz stereo 2ch float
[cplayer] AO: Description: ALSA audio output
[autoconvert] inserting resampler
[swresample] format change, reinitializing resampler
[swresample] 44100Hz stereo floatp -> 48000Hz stereo float
[af] [out] 48000Hz stereo 2ch float
[cplayer] VO: [vaapi] 1920x1080 yuv420p
[cplayer] VO: Description: VA API with X11
[vo/vaapi] reconfig to 1920x1080 yuv420p bt.709/bt.709/bt.1886/limited/display SP=1.000000 CL=mpeg2/4/h264
[vo/vaapi/x11] not waiting for MapNotify
[vo/vaapi] Window size: 1918x1078 (Borders: l=0 t=0 r=0 b=0)
[vo/vaapi] Video source: 1920x1080 (1:1)
[vo/vaapi] Video display: (0, 0) 1920x1080 -> (1, 0) 1916x1078
[vo/vaapi] Video scale: 0.997917/0.998148
[vo/vaapi] OSD borders: l=1 t=0 r=1 b=0
[vo/vaapi] Video borders: l=1 t=0 r=1 b=0
mpv: malloc.c:2539: sysmalloc: Assertion `(old_top == initial_top (av) && old_size == 0) || ((unsigned long) (old_size) >= MINSIZE && prev_inuse (old_top) && ((unsigned long) old_end & (pagesize - 1)) == 0)' failed.
Aborted (core dumped)
Не знаю что значит последняя строчка, но при успешных запусках её не бывает. Подскажите в чем может быть дело.
Tylerf
в чем может быть дело
--
скорее всего

Tylerf
из aur nvidia-sdk

sudo pacman -Rds nvidia-sdk
sudo pacman -Syyu
#если ядро стандартное то
sudo  pacman -S nvidia nvidia-utils libvdpau lib32-nvidia-utils gstreamer gst-plugins-base gst-plugins-ugly gst-plugins-good gst-plugins-bad gst-libav 
перезагрузиться и проверить
gst-inspect-1.0 nvcodec
должно выдать
[oleg@vs220 ~]$  gst-inspect-1.0 nvcodec
Plugin Details:
  Name                     nvcodec
  Description              GStreamer NVCODEC plugin
  Filename                 /usr/lib/gstreamer-1.0/libgstnvcodec.so
  Version                  1.18.4
  License                  LGPL
  Source module            gst-plugins-bad
  Source release date      2021-03-15
  Binary package           GStreamer Bad Plugins (Arch Linux)
  Origin URL               https://www.archlinux.org/

  nvmpegvideodec: NVDEC mpegvideo Video Decoder
  nvmpeg2videodec: NVDEC mpeg2video Video Decoder
  nvmpeg4videodec: NVDEC mpeg4video Video Decoder
  nvh264sldec: NVDEC H.264 Stateless Decoder
  nvh264dec: NVDEC h264 Video Decoder
  nvjpegdec: NVDEC jpeg Video Decoder
  nvh265sldec: NVDEC H.265 Stateless Decoder
  nvh265dec: NVDEC h265 Video Decoder
  nvvp9dec: NVDEC vp9 Video Decoder
  nvh264enc: NVENC H.264 Video Encoder
  nvh265enc: NVENC HEVC Video Encoder

  11 features:
  +-- 11 elements
p.s. Но вообще скажите какое у вас максимальное разрешение экрана и процессор.
С нормальным процессором и не 4k 120Гц монитором лучше софтварное в браузерах пока оставить, а качественное видео в mpv смотреть
gst-inspect-1.0 nvcodec
Так как ядро zen вместо nvidia переустановил nvidia-dkms. В остальном, проделал все как написано, но результат все тот же: 0 features

p.s. Но вообще скажите какое у вас максимальное разрешение экрана и процессор.
Процессор: i5-4460 CPU @ 3.20GHz, разрешение 1920х1080. Этого вполне достаточно просто хотел оптимизировать использование железа, чтобы видюха без дела не простаивала. Например 4к 60фпс при софтверном декодировании дают загрузку процессора примерно на 60%-70%. Если тоже видео декодировать на видеокарте то это всего лишь +20W к потребляемой мощности. Второй вариант мне кажется более эффективным.

К сожалению половину видео не запустишь с ускорением так как VP9(10 и 12)bit не поддерживаются моей видеокартой, только 8bit. Спасибо, nvidia.
В браузере выигрыш по потреблению с vaapi на нвидии мизерный а геморой большой то глюки то вообще не работает. Тоже и на гстример хоть и чуть получше. 1080p ваш проц грузят не более 20 процентов так что не очень аппаратное и надо на таком разрешении. Смотреть большее чем разрешение экрана смысла никакого.
Если так уж надо аппаратное то используйте mpv - к браузерам он прикручивается скриптом или расширением, да и смотреть в нем удобней.

У самого такая карточка и на стандартном ядре и драйвере nvidia nvcodec в гстимер есть, возможно с dkms драйвером что то не то
Tylerf
половину видео не запустишь с ускорением так как VP9(10 и 12)bit не поддерживаются
Тут для вашего разрешения экрана можете плагин h264ify поставить будет отдавать видео в h264 карточка его поддерживает и на vaapi
1080p ваш проц грузят не более 20 процентов так что не очень аппаратное и надо на таком разрешении.
Да, так и есть. Если смотреть с ускорением можно и до 40 разогнаться.В mpv, это видео с нормальной скоростью дает процентов 10.

У самого такая карточка и на стандартном ядре и драйвере nvidia nvcodec в гстимер есть, возможно с dkms драйвером что то не то
Просто это для меня типичная проблема в линкус. Установленная штука х не видит установленную штуку у. Неужели нет способа как-то диагностировать неполадку.
 
Зарегистрироваться или войдите чтобы оставить сообщение.