Hardware video acceleration (Русский)
Аппаратное ускорение видео (англ.) позволяет выполнять операции кодирования и декодирования видео на стороне видеокарты, разгружая CPU и экономя энергию.
Существуют несколько реализаций этой технологии на 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:
- Серия HD Graphics, начиная с Broadwell (~2015) и новее, поддерживается intel-media-driver.
- GMA 4500 series и более новые GPU до Coffee Lake поддерживаются libva-intel-driver.
- Декодирование H.264 на GMA 4500 поддерживается libva-intel-driver-g45-h264AUR, см. Intel graphics (Русский)#Декодирование H.264 на GMA 4500.
- Гибридное декодирование VP9 на процессорах от Broadwell до Skylake, а также гибридное декодирование VP8 на процессорах от Haswell до Skylake, поддерживается intel-hybrid-codec-driverAUR.
- Skylake и более новые поколения также требуют linux-firmware.
NVIDIA
Свободный драйвер Nouveau поддерживает как VA-API, так и VDPAU:
- GeForce 8 series и новее (до GeForce GTX 750) поддерживаются libva-mesa-driver и mesa-vdpau.
- Необходим nouveau-fwAUR — пакет с микропрограммой, которая на сегодняшний день извлекается из бинарного драйвера NVIDIA.
Проприетарный драйвер NVIDIA поддерживает следующие технологии с помощью пакета nvidia-utils:
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 при её отсутствии в драйвере:
- – бекенд VA-API для VDPAU, поддерживается только H.264 (англ.).
Проверка
Аппаратное ускорение, скорее всего, хорошо заработает по умолчанию. Проверить это можно описанными ниже способами.
Проверка 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.
journalctl -b | grep -iE 'vdpau | dri driver'
.Настройка VA-API
Драйвер VA-API можно переопределить с помощью переменной окружения LIBVA_DRIVER_NAME
:
- Intel graphics:
- Укажите , если используется libva-intel-driver.
- Укажите , если используется intel-media-driver.
- NVIDIA:
- ATI/AMD:
- Укажите , если используется AMDGPU.
Настройка VDPAU
Драйвер VDPAU можно переопределить с помощью переменной окружения .
Корректное название драйвера зависит от конфигурации:
- Если используется Intel Graphics или AMD Catalyst, необходимо задать .
- Если используется свободный драйвер AMD/ATI, задайте соответствующую версию драйвера, в зависимости от видеокарты. См. #Проверка.
- Если используется свободный драйвер Nouveau, задайте .
- Если используется проприетарный драйвер NVIDIA, задайте .
Настройка приложений
Мультимедийные фреймворки:
Видеоплееры:
- Browser plugins#Adobe Flash Player (англ.)
- Kodi#Hardware video acceleration (англ.)
- MPlayer#Hardware video acceleration (англ.)
- mpv#Hardware video acceleration (англ.)
- VLC media player#Hardware video acceleration (англ.)
Веб-браузеры:
Решение проблем
Ошибка "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 на данный момент отсутствует.