Відео може навантажувати процесор ледь не на 100%, якщо декодування йде софтово. VA‑API (Intel/AMD) і VDPAU (переважно NVIDIA) віддають декодування на GPU, знижуючи нагрів, споживання батареї і лаги. Зараз покажу, як увімкнути це на вашому Linux і перевірити, що прискорення реально працює.

Що потрібно: драйвери та бібліотеки

Усе робимо через термінал Linux — коротко й чітко. Мета — встановити бібліотеки VA‑API/VDPAU, відеодрайвери Mesa або пропрієтарні, а також утиліти для тесту.

Debian/Ubuntu/Pop!_OS/Linux Mint (apt)

sudo apt update
sudo apt install -y \
  libva2 libvdpau1 mesa-va-drivers mesa-vdpau-drivers \
  intel-media-driver i965-va-driver \
  vainfo vdpauinfo ffmpeg mpv vlc

Примітки: intel-media-driver (iHD) — для сучасних Intel, i965-va-driver — для старих Intel (до Gen8). Для AMD достатньо Mesa-пакетів. Для NVIDIA — пропрієтарний драйвер + libvdpau1.

Fedora (dnf)

sudo dnf install -y \
  libva libva-utils intel-media-driver \
  mesa-dri-drivers mesa-vdpau-drivers libvdpau vdpauinfo \
  ffmpeg mpv vlc

Arch/Manjaro (pacman)

sudo pacman -Syu --noconfirm \
  libva-utils libva-mesa-driver intel-media-driver \
  libvdpau mesa-vdpau vdpauinfo ffmpeg mpv vlc

openSUSE (zypper)

sudo zypper install -y \
  libva2 libva-utils intel-media-driver \
  libvdpau1 Mesa-dri Mesa-vdpau vdpauinfo \
  ffmpeg mpv vlc

Про NVIDIA: VDPAU працює з пропрієтарним драйвером (рекомендовано). VA‑API на NVIDIA частіше потребує прошарку (libva-vdpau-driver або спільнотного nvidia-vaapi-driver), але стабільність не гарантована.

Перевірка: чи працює VA‑API/VDPAU

Спочатку дивимось, які кодеки доступні. Це базовий крок для оптимізації продуктивності у відео.

vainfo | grep -E "H264|HEVC|VP9|AV1" || echo "VA-API проблемка 😅"
vdpauinfo | grep -E "H264|HEVC|VP9|AV1" || echo "VDPAU проблемка"

Тест програвання в mpv (перевірте статистику клавішею i, має бути hwdec):

mpv --hwdec=auto --vo=gpu-next ~/Videos/test-4k.mp4

Тест FFmpeg без запису (лише декодування):

# VA-API
ffmpeg -hwaccel vaapi -vaapi_device /dev/dri/renderD128 -i test-4k.mp4 -f null -

# VDPAU
ffmpeg -hwaccel vdpau -i test-4k.mp4 -f null -

На ноутбуках з двома GPU (iGPU+dGPU) можна примусово вибрати дискретну:

DRI_PRIME=1 mpv --hwdec=auto test-4k.mp4

Включення в браузерах і плеєрах (GUI Linux)

Firefox

  • Увімкніть Wayland для кращої підтримки VA‑API: запускайте з MOZ_ENABLE_WAYLAND=1.
MOZ_ENABLE_WAYLAND=1 firefox &
  • В about:config встановіть media.ffmpeg.vaapi.enabled = true.
  • За потреби — додайте розширення, що примушує H.264 (наприклад, для YouTube).

Chromium/Chrome

Запуск із VA‑API (Wayland):

chromium --enable-features=VaapiVideoDecodeLinuxGL,UseOzonePlatform \
  --ignore-gpu-blocklist --ozone-platform-hint=wayland &

На X11 можна спробувати --use-gl=desktop. Перевіряйте в chrome://media-internals.

VLC і Celluloid (mpv GUI)

  • VLC: Налаштування → Вхід/кодеки → Hardware-accelerated decoding → Automatic/VA‑API/VDPAU.
  • Celluloid: Додайте опцію --hwdec=auto або увімкніть її в Налаштуваннях.

Альтернативні способи та автоматизація

Транскодування через VA‑API (приклад H.264 → H.264; апаратний decode+encode):

ffmpeg -hwaccel vaapi -vaapi_device /dev/dri/renderD128 -i in.mp4 \
  -vf format=nv12,hwupload -c:v h264_vaapi -b:v 5M -maxrate 6M -bufsize 10M \
  -c:a copy out.mp4

Flatpak-програми інколи не бачать /dev/dri. Додайте доступ і змінні середовища:

flatpak override --user --device=all --env=LIBVA_DRIVER_NAME=iHD org.mozilla.Firefox

Типові проблеми та як їх виправити

1) Нема доступу до /dev/dri/renderD128

# Додайте користувача в групу video, потім перелогіньтеся
sudo usermod -aG video "$USER"

2) Невірний VA‑API драйвер

Для Intel виберіть iHD (нові) або i965 (старі):

export LIBVA_DRIVER_NAME=iHD   # або i965
vainfo | head

Для VDPAU за потреби:

export VDPAU_DRIVER=radeonsi   # AMD
export VDPAU_DRIVER=nvidia     # NVIDIA

3) Плоска плавність/tearing на X11

  • Вмикайте VSync у композитному менеджері.
  • На NVIDIA спробуйте ForceFullCompositionPipeline у nvidia-settings.

4) Браузер Flatpak без прискорення

Перевірте, що встановлено Mesa-платформу й є доступ до /dev/dri. Додайте overrides (див. вище) та перезапустіть.

5) Гібридні системи (Optimus/PRIME)

Запускайте плеєр із DRI_PRIME=1 або використовуйте інструменти перемикання GPU у вашому дистрибутиві.

FAQ

Чим відрізняються VA‑API та VDPAU?
VA‑API — крос-вендор API (Intel/AMD через Mesa, інколи NVIDIA через прошарок). VDPAU — історично для NVIDIA, але є підтримка через Mesa для AMD.

Як зрозуміти, що декодування реально апаратне?
У mpv натисніть i — має бути hwdec. В FFmpeg відсутні повідомлення про «Using software decoder». Також vainfo/vdpauinfo мають показувати потрібні кодеки.

Чи працює це в віртуалках?
Зазвичай ні або обмежено. Потрібна GPU-передача (PCI passthrough) чи спеціальні драйвери гіпервізора.

Браузер все одно гріє CPU на YouTube
Увімкніть VA‑API (див. вище), встановіть розширення, що віддає перевагу H.264, вимкніть зайві фільтри/покращення. Перевіряйте chrome://media-internals або about:support.

Як повернути змінні середовища назад?
Закрийте термінал або видаліть експорти з вашого shell-профілю (~/.bashrc). Тимчасові export діють лише для поточної сесії.

Порада від Kernelka

Тримайте Mesa і ядро оновленими — це часто дає безкоштовний приріст стабільності. Для швидкої перевірки навантаження скористайтесь mpv --hwdec=auto --vo=gpu-next та порівняйте споживання в htop/top. Маленький лайфхак: якщо відео смикається, спробуйте Wayland у вашому середовищі — часто це рятує ситуацію 😉

Підсумок

  • Встановіть необхідні драйвери VA‑API/VDPAU та утиліти (vainfo, vdpauinfo, ffmpeg, mpv).
  • Перевірте підтримку кодеків і протестуйте програвання з --hwdec.
  • Налаштуйте браузери та плеєри у GUI Linux для апаратного декодування.
  • За потреби задайте LIBVA_DRIVER_NAME / VDPAU_DRIVER, виправте доступ до /dev/dri і групу video.
  • Використовуйте Flatpak overrides і Wayland, якщо є проблеми.