Hardware video acceleration (Русский)

Аппаратное ускорение видео (англ.) позволяет выполнять операции кодирования и декодирования видео на стороне видеокарты, разгружая CPU и экономя энергию.

Состояние перевода: На этой странице представлен перевод статьи Hardware video acceleration. Дата последней синхронизации: 31 марта 2020. Вы можете помочь синхронизировать перевод, если в английской версии произошли изменения.

Существуют несколько реализаций этой технологии на Linux:

  • Video Acceleration API (VA-API) — разработанная Intel спецификация и свободная библиотека, предоставляющая аппаратное ускорение кодирования и декодирования видео.
  • Video Decode and Presentation API for Unix (VDPAU) — разработанная NVIDIA свободная библиотека и API для переноса части процесса декодирования видео и его постобработки на сторону GPU.
  • NVDECODE/NVENCODE — проприетарные API аппаратного ускорения, используемые в таких поколениях GPU от NVIDIA, как Fermi, Kepler, Maxwell и Pascal.

Также всесторонний обзор поддержки данных технологий со стороны драйверов и приложений доступен в разделе #Сравнительные таблицы.

Установка

Intel

Свободные драйверы Intel graphics поддерживают VA-API:

NVIDIA

Свободный драйвер Nouveau поддерживает как VA-API, так и VDPAU:

  • GeForce 8 series и новее (до GeForce GTX 750) поддерживаются libva-mesa-driver и mesa-vdpau.
  • Необходим nouveau-fwAUR — пакет с микропрограммой, которая на сегодняшний день извлекается из бинарного драйвера NVIDIA.

Проприетарный драйвер NVIDIA поддерживает следующие технологии с помощью пакета nvidia-utils:

  • VDPAU на серии GeForce 8 и новее;
  • NVDECODE на Fermi и новее ;
  • NVENCODE на Kepler и новее.

ATI/AMD

Свободные драйверы ATI и AMDGPU поддерживают как VA-API, так и VDPAU:

  • VA-API на Radeon HD 2000 и новее поддерживается libva-mesa-driver.
  • VDPAU на Radeon R300 и новее поддерживается mesa-vdpau.

Проприетарный драйвер AMDGPU PRO основывается на драйвере AMDGPU и поддерживает как VA-API, так и VDPAU.

Слои преобразований

Активация поддержки VA-API при её отсутствии в драйвере:

  • libva-vdpau-driver – бекенд VDPAU для VA-API.
  • – бекенд VDPAU для VA-API с патчем, позволяющим взаимодействовать с Chromium.
  • – экспериментальная поддержка VP9.

Активация поддержки VDPAU при её отсутствии в драйвере:

Проверка

Аппаратное ускорение, скорее всего, хорошо заработает по умолчанию. Проверить это можно описанными ниже способами.

Совет: mpv отлично подходит для проверки аппаратного ускорения на практике.

Проверка VA-API

Проверьте настройки VA-API, выполнив vainfo (предоставляется пакетом ):

означает, что видеокарта способна декодировать данный формат, а  означает, что данный формат можно кодировать.

В данном примере используется драйвер :

libva info: Trying to open /usr/lib/dri/i965_drv_video.so

Если при выполнении vainfo отображается следующая ошибка:

libva info: va_openDriver() returns -1
vaInitialize failed with error code -1 (unknown libva error),exit

Необходимо задать корректный драйвер, см. #Настройка VA-API.

Проверка VDPAU

Установите пакет , чтобы получить полный отчёт о конфигурации драйвера VDPAU и убедиться, что он загружен корректно:

Настройка

Несмотря на то, что видеодрайвер должен автоматически активировать поддержку аппаратного ускорения видео с помощью VA-API и VDPAU, в некоторых случаях может потребоваться настроить VA-API/VDPAU вручную. Перед тем как продолжать чтение данного раздела, просмотрите раздел #Проверка.

Названия драйверов по умолчанию угадываются системой, если остутствуют какие-либо другие настройки. Однако они часто не совпадают и не работают. Предполагаемые значения можно просмотреть, выполнив следующую команду:

В данном случае по умолчанию используется для VA-API и VDPAU.

Примечание: Если используется GDM, выполните вместо этого следующую команду: journalctl -b | grep -iE 'vdpau | dri driver'.

Настройка VA-API

Драйвер VA-API можно переопределить с помощью переменной окружения LIBVA_DRIVER_NAME:

  • Intel graphics:
  • NVIDIA:
    • Укажите , если используется Nouveau.
    • Укажите , если используется NVIDIA.
  • ATI/AMD:
    • Укажите , если используется AMDGPU.

Настройка VDPAU

Драйвер VDPAU можно переопределить с помощью переменной окружения .

Корректное название драйвера зависит от конфигурации:

  • Если используется Intel Graphics или AMD Catalyst, необходимо задать .
  • Если используется свободный драйвер AMD/ATI, задайте соответствующую версию драйвера, в зависимости от видеокарты. См. #Проверка.
  • Если используется свободный драйвер Nouveau, задайте .
  • Если используется проприетарный драйвер NVIDIA, задайте .

Настройка приложений

Мультимедийные фреймворки:

Видеоплееры:

Веб-браузеры:

Решение проблем

Ошибка "Failed to open VDPAU backend"

Необходимо задать переменную , указывающую на корректный драйвер. См. #Настройка VDPAU.

Ошибка "init failed" с VAAPI

Данная ошибка (например, libva: /usr/lib/dri/i965_drv_video.so init failed) может происходить из-за неправильного определения Wayland. Одно из решений — сбросить переменную $DISPLAY, таким образом, mpv, MPlayer, VLC и т.д. не будут исходить из того, что используется X11. Также можно добавить аргумент , если используется mpv.

Сравнительные таблицы

Драйверы VA-API

Кодек
(адаптер VDPAU)
Декодирование
MPEG-2 См. #Драйверы VDPAU
MPEG-44 Radeon HD 6000 и новее
VC-1 Sandy Bridge и новее rowspan=2
H.264/MPEG-4 AVC
H.265/HEVC 8bit
H.265/HEVC 10bit Radeon 400 и новее
VP8
VP9 8bit Broxton и новее
Гибридное: Broadwell to Skylake3
rowspan=2 См. #Драйверы VDPAU5
VP9 10bit
Кодирование
MPEG-2 rowspan=7
H.264/MPEG-4 AVC Sandy Bridge и новее
H.265/HEVC 8bit Radeon 400 и новее
H.265/HEVC 10bit rowspan=2
VP8 rowspan=3
VP9 8bit rowspan=2
VP9 10bit
  • 1 До GeForce GTX 750.
  • 2 Поддерживается libva-intel-driver-g45-h264AUR.
  • 3 Гибридный кодировщик VP8 и декодировщик VP9 поддерживается intel-hybrid-codec-driverAUR.
  • 4 MPEG-4 отключён по умолчанию из-за ограничений VAAPI. Задайте переменную окружения , если вы всё-таки хотите протестировать данную функцию.
  • 5 Экспериментальная поддержка VP9 доступна в .

Драйверы VDPAU

Кодек nvidia-utils
(адаптер VA-API)
Декодирование
MPEG-2 rowspan=3
MPEG-4
VC-1 Radeon HD 2000 и новее
GeForce 9300 и новее1
H.264/MPEG-4 AVC См. #Драйверы VA-API
H.265/HEVC 8bit rowspan=4
H.265/HEVC 10bit Radeon 400 и новее 4
VP9 8bit
VP9 10bit 4
  • 1 До GeForce GTX 750.
  • 2 Кроме GeForce 8800 Ultra, 8800 GTX, 8800 GTS (320/640 MB).
  • 3 Кроме GeForce GTX 970 и GTX 980.
  • 4 Реализация NVIDIA ограничена 8-битными потоками .

Драйвер NVIDIA

Кодек nvidia-utils
NVDECODE NVENCODE
MPEG-2 rowspan=3 rowspan=2
VC-1
H.264/MPEG-4 AVC Kepler и новее2
H.265/HEVC 8bit rowspan=2
H.265/HEVC 10bit
VP8 rowspan=3
VP9 8bit
VP9 10bit
  • 1 Кроме GM108 (не поддерживается)
  • 2 Кроме GM108 и GP108 (не поддерживаются)

Поддержка приложениями

Приложение Декодирование Кодирование Документация
VA-API VDPAU NVDECODE VA-API NVENCODE
FFmpeg FFmpeg#Hardware video acceleration (англ.)
GStreamer 1 2 1 2 GStreamer#Hardware video acceleration (англ.)
Kodi Kodi#Hardware video acceleration (англ.)
mpv Mpv (Русский)#Аппаратное декодирование
VLC media player VLC media player#Hardware video acceleration (англ.)
MPlayer 3 MPlayer#Hardware video acceleration (англ.)
Flash 4 4 Browser plugins#Adobe Flash Player (англ.)
Chromium 5 ? Chromium#Hardware video acceleration (англ.)
Firefox 6 Firefox (Русский)#Аппаратное ускорение видео
GNOME/Web 1 2 ? ? GNOME/Web#Video (англ.)
  • 1 GStreamer использует белый список (англ.) драйверов VA-API. Чтобы использовать другие драйверы (например, intel-media-driver), задайте переменную окружения .
  • 2 NVDECODE/NVENCODE отключён в пакете Arch.
  • 3 Поддержка VA-API доступна в .
  • 4 VDPAU поддерживается только NPAPI-плагином. Доступен экспериментальный адаптер в виде PPAPI-плагина для NPAPI-браузеров, который частично поддерживает ускорение VA-API и VDPAU.
  • 5 Поддержка VA-API доступна в . Wayland не поддерживается, а XWayland не работает корректно (англ.) с libva-intel-driver.
  • 6 Начиная с Firefox 75 (). В Firefox 75 поддерживаются только технологии H.264 и Wayland, а поддержка отличных от H.264 стандартов реализована в Firefox 76 и выше. Поддержка X11 на данный момент отсутствует.
gollark: Even if it costs half as much and you can actually replace bits?
gollark: It does seem like houses are overcomplicated in various ways, and poorly optimised for maintenance.
gollark: General robotics is still not very advanced compared to other AI things.
gollark: Prefabricated houses or whatever.
gollark: This is done sometimes.
This article is issued from Archlinux. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.