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

Jump to content

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

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

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

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

- Video Acceleration API (VA-API) — разработанная Intel спецификация и свободная библиотека, предоставляющая аппаратное ускорение кодирования и декодирования видео.
- Video Decode and Presentation API for Unix (VDPAU) — разработанная NVIDIA свободная библиотека и API для переноса части процесса декодирования видео и его постобработки на сторону видеокарты.
- Advanced Media Framework SDK (AMF) — разработанный AMD свободный фреймворк, который обеспечивает «оптимальный» доступ к видеокартам AMD для обработки мультимедиа с помощью стека AMDGPU PRO.
- NVDEC/NVENC — разработанные NVIDIA проприетарные API для аппаратного ускорения видео, используемые для Fermi и более новых видеокарт.
- Vulkan Video — расширение Vulkan для аппаратного кодирования и декодирования видео.

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

## Установка

### Intel

#### VA-API

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

- Серия HD Graphics, начиная с Broadwell (2014) и новее (например, Intel Arc), поддерживается intel-media-driver.
- GMA 4500 (2008) и более новые GPU до Coffee Lake (2017) поддерживаются libva-intel-driver.
- Декодирование H.264 на GMA 4500 поддерживается libva-intel-driver-g45-h264AUR[ссылка недействительна: package not found], см. Intel graphics (Русский)#Декодирование H.264 на GMA 4500.
- Декодирование VP9 на процессорах от Haswell Refresh до Skylake, а также гибридное декодирование VP8 на процессорах от Broadwell до Skylake поддерживаются intel-hybrid-codec-driver-gitAUR.

Примечание Skylake и более новые поколения также требуют linux-firmware.

Смотрите также список поддерживаемого оборудования и доступных возможностей на сайте Intel.

#### Vulkan

Свободный Vulkan-драйвер ANV, предоставляемый пакетом vulkan-intel, поддерживает Vulkan Video.

Примечание Для включения Vulkan Video требуются дополнительные действия, описанные в разделе #Настройка Vulkan Video.

#### Intel Video Processing Library (Intel VPL)

Для Intel VPL установите базовую библиотеку libvpl и как минимум одну из реализаций:

- vpl-gpu-rt: поддерживает Tiger Lake и более новую графику Intel
- intel-media-sdk (разработка прекращена): поддерживает старую графику Intel

### NVIDIA

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

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

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

- VDPAU на серии GeForce 8 и новее;
- NVDEC на Fermi и новее [1];
- NVENC на Kepler и новее;
- Vulkan Video на Pascal и новее [2].

### AMD/ATI

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

- VA-API на Radeon HD 2000 и новее.
- VDPAU на Radeon R600 и новее.

Свободный Vulkan-драйвер RADV, предоставляемый пакетом vulkan-radeon, поддерживает Vulkan Video.

Проприетарный драйвер AMDGPU PRO работает поверх AMDGPU и в дополнение к VA-API и VDPAU также поддерживает AMF.

- AMF на Fiji и более новых видеокартах поддерживается amf-amdgpu-proAUR.

Примечание

- Вам может понадобиться настроить используемые вами приложения на использование Vulkan-драйвера AMDGPU PRO.
- Кодирование HEVC может быть недоступно на Navi и более старых видеокартах.

### Слои трансляции

- libvdpau-va-gl — Драйвер, который позволяет приложениям VDPAU использовать OpenGL/VAAPI. Только H.264.

  https://github.com/i-rinat/libvdpau-va-gl || libvdpau-va-gl

- nvidia-vaapi-driver — Драйвер, который позволяет приложениям VA-API (в первую очередь Firefox) использовать CUDA NVDEC.

  https://github.com/elFarto/nvidia-vaapi-driver/ || libva-nvidia-driver

Примечание Хотя libva-nvidia-driver выполняет аппаратное декодирование видео, текущие ограничения на управление питанием NVIDIA приводят к тому, что система потребляет больше энергии, чем при декодировании процессором.

## Проверка

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

Совет

- mpv отлично подходит для проверки аппаратного ускорения на практике. Запустите `mpv --hwdec=auto видеофайл` и изучите выводимый в консоли журнал. Подробнее в документации mpv: hwdec.
- nvtop позволяет проверить уровень нагрузки на декодер (строка «DEC» вверху) во время воспроизведения видео на видеокартах AMD, Intel и NVIDIA.
- Для Intel можно запустить `intel_gpu_top` из пакета intel-gpu-tools (от имени суперпользователя) для мониторинга нагрузки, например, во время воспроизведения видео. Ненулевое значение video означает работу аппаратного ускорения видео.
- Для AMD можно использовать radeontop, но отображение нагрузки на декодер может не работать на некоторых видеокартах [3].
- При использовании любой видеокарты вы также можете проверить нагрузку на процессор с помощью любого системного монитора вроде htop. При включенном аппаратном ускорении видео нагрузка на процессор должна быть существенно ниже, чем без ускорения, особенно при воспроизведении видео в высоком разрешении (4K и более) или на маломощных ноутбуках.

### Проверка VA-API

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

    $ vainfo

    libva info: VA-API version 0.39.4
    libva info: va_getDriverName() returns 0
    libva info: Trying to open /usr/lib/dri/i965_drv_video.so
    libva info: Found init function __vaDriverInit_0_39
    libva info: va_openDriver() returns 0
    vainfo: VA-API version: 0.39 (libva 1.7.3)
    vainfo: Driver version: Intel i965 driver for Intel(R) Skylake - 1.7.3
    vainfo: Supported profile and entrypoints
          VAProfileMPEG2Simple            :	VAEntrypointVLD
          VAProfileMPEG2Simple            :	VAEntrypointEncSlice
          VAProfileMPEG2Main              :	VAEntrypointVLD
          VAProfileMPEG2Main              :	VAEntrypointEncSlice
          VAProfileH264ConstrainedBaseline:	VAEntrypointVLD
          VAProfileH264ConstrainedBaseline:	VAEntrypointEncSlice
          VAProfileH264ConstrainedBaseline:	VAEntrypointEncSliceLP
          VAProfileH264Main               :	VAEntrypointVLD
          VAProfileH264Main               :	VAEntrypointEncSlice
          VAProfileH264Main               :	VAEntrypointEncSliceLP
          VAProfileH264High               :	VAEntrypointVLD
          VAProfileH264High               :	VAEntrypointEncSlice
          VAProfileH264High               :	VAEntrypointEncSliceLP
          VAProfileH264MultiviewHigh      :	VAEntrypointVLD
          VAProfileH264MultiviewHigh      :	VAEntrypointEncSlice
          VAProfileH264StereoHigh         :	VAEntrypointVLD
          VAProfileH264StereoHigh         :	VAEntrypointEncSlice
          VAProfileVC1Simple              :	VAEntrypointVLD
          VAProfileVC1Main                :	VAEntrypointVLD
          VAProfileVC1Advanced            :	VAEntrypointVLD
          VAProfileNone                   :	VAEntrypointVideoProc
          VAProfileJPEGBaseline           :	VAEntrypointVLD
          VAProfileJPEGBaseline           :	VAEntrypointEncPicture
          VAProfileVP8Version0_3          :	VAEntrypointVLD
          VAProfileVP8Version0_3          :	VAEntrypointEncSlice
          VAProfileHEVCMain               :	VAEntrypointVLD
          VAProfileHEVCMain               :	VAEntrypointEncSlice

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

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

    vainfo: Driver version: Intel i965 driver for Intel(R) Skylake - 1.7.3

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

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

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

### Проверка VDPAU

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

    $ vdpauinfo

    display: :0   screen: 0
    API version: 1
    Information string: G3DVL VDPAU Driver Shared Library version 1.0

    Video surface:

    name   width height types
    -------------------------------------------
    420    16384 16384  NV12 YV12
    422    16384 16384  UYVY YUYV
    444    16384 16384  Y8U8V8A8 V8U8Y8A8

    Decoder capabilities:

    name                        level macbs width height
    ----------------------------------------------------
    MPEG1                          --- not supported ---
    MPEG2_SIMPLE                    3  9216  2048  1152
    MPEG2_MAIN                      3  9216  2048  1152
    H264_BASELINE                  41  9216  2048  1152
    H264_MAIN                      41  9216  2048  1152
    H264_HIGH                      41  9216  2048  1152
    VC1_SIMPLE                      1  9216  2048  1152
    VC1_MAIN                        2  9216  2048  1152
    VC1_ADVANCED                    4  9216  2048  1152
    ...

### Проверка Vulkan Video

Установите пакет vulkan-tools и используйте команду vulkaninfo для получения информации о доступных расширениях для работы с видео:

    $ vulkaninfo | grep VK_KHR_video_

    	VK_KHR_video_decode_av1                       : extension revision 1
    	VK_KHR_video_decode_h264                      : extension revision 9
    	VK_KHR_video_decode_h265                      : extension revision 8
    	VK_KHR_video_decode_queue                     : extension revision 8
    	VK_KHR_video_encode_h264                      : extension revision 14
    	VK_KHR_video_encode_h265                      : extension revision 14
    	VK_KHR_video_encode_queue                     : extension revision 12
    	VK_KHR_video_maintenance1                     : extension revision 1
    	VK_KHR_video_queue                            : extension revision 8

## Настройка

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

Названия драйверов по умолчанию, которые будут использоваться при отсутствии настроек, угадываются системой. Однако зачастую это может не работать. Предполагаемые значения можно просмотреть в журнале Xorg (`~/.local/share/xorg/Xorg.0.log` при запуске от имени обычного пользователя или `/var/log/Xorg.0.log` при запуске от имени root):

    $ grep -iE 'vdpau | dri driver' журнал_xorg

    (II) RADEON(0): [DRI2] DRI driver: radeonsi
    (II) RADEON(0): [DRI2] VDPAU driver: radeonsi

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

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

Имейте в виду, что эти строки не отображают настройки: значения не изменятся даже после выбора другого драйвера.

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

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

- Intel graphics:
  - Укажите `i965`, если используется libva-intel-driver.
  - Укажите `iHD`, если используется intel-media-driver.
- NVIDIA:
  - Укажите `nouveau`, если используется Nouveau.
  - Укажите `nvidia`, если используется NVIDIA NVDEC.
- AMD:
  - Укажите `radeonsi`, если используется AMDGPU.

Примечание

- Установленные драйверы находятся в `/usr/lib/dri/` и используются как `/usr/lib/dri/${LIBVA_DRIVER_NAME}_drv_video.so`.
- Некоторые драйверы устанавливаются несколько раз под разными именами в целях совместимости. Их список можно увидеть, выполнив команду `sha1sum /usr/lib/dri/* | sort`.
- `LIBVA_DRIVERS_PATH` может использоваться для переопределения расположения драйверов VA-API.
- Начиная с версии 12.0.1, Mesa предоставляет `radeonsi` вместо `gallium`.

### Настройка VDPAU

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

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

- Если используется Intel graphics, необходимо задать `va_gl`.
- Если используется свободный драйвер AMD, задайте `radeonsi`.
- Если используется свободный драйвер Nouveau, задайте `nouveau`.
- Если используется проприетарный драйвер NVIDIA, задайте `nvidia`.

Примечание

- Установленные драйверы находятся в `/usr/lib/vdpau/` и используются как `/usr/lib/vdpau/libvdpau_${VDPAU_DRIVER}.so`.
- Некоторые драйверы устанавливаются несколько раз под разными именами в целях совместимости. Их список можно увидеть, выполнив команду `sha1sum /usr/lib/vdpau/*`.
- В случае с конфигурацией с гибридной графикой (как с NVIDIA, так и с AMD), может потребоваться задать переменную окружения `DRI_PRIME=1`. См. статью PRIME для получения более подробной информации.

### Настройка Vulkan Video

- Intel graphics: поддержку Vulkan Video в vulkan-intel можно включить с помощью переменной окружения `ANV_DEBUG=video-decode,video-encode`.
- AMD: поддержка Vulkan Video в vulkan-radeon включена по умолчанию для VCN 2, 3 и 4+, начиная с Mesa 25. Чтобы включить её для более старых видеокарт, установите переменную окружения `RADV_PERFTEST` со значением `video_decode,video_encode`.

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

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

- FFmpeg#Hardware video acceleration (англ.)
- GStreamer#Hardware video acceleration (англ.)

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

- Kodi#Hardware video acceleration (англ.)
- MPlayer#Hardware video acceleration (англ.)
- mpv (Русский)#Аппаратное декодирование
- VLC media player#Hardware video acceleration (англ.)

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

- Chromium#Hardware video acceleration (англ.)
- Firefox (Русский)#Аппаратное ускорение видео
- GNOME (Русский)/Web (Русский)#Видео

Запись и потоковое вещание:

- Open Broadcaster Software#Hardware video acceleration

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

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

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

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

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

Ошибка также может возникать при выборе неправильного драйвера VA-API.

### Повреждённое видео при декодировании с помощью драйвера AMDGPU

В некоторых приложениях, некорректно обрабатывающих 10-битную глубину цвета, может наблюдаться повреждение изображения при использовании аппаратного декодирования видео. В качестве обходного пути можно запустить проблемное приложение с переменной окружения `allow_rgb10_configs=false`. [4]

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

### Драйверы VA-API

Кодек | libva-intel-driver [5] | intel-media-driver [6] | mesa [7] [8] | libva-nvidia-driver (адаптер NVDEC)
--- | --- | --- | --- | ---
Декодирование
MPEG-2 | GMA 4500 и новее | Broadwell и новее | Radeon HD 6000 и новее GeForce 8 и новее1 | Смотрите #Драйвер NVIDIA
H.263/MPEG-4 Visual4 | Нет | Нет | Radeon HD 6000 и новее
VC-1 | Sandy Bridge и новее | Broadwell и новее | Radeon HD 2000 и новее GeForce 9300 и новее1
H.264/MPEG-4 AVC | GMA 45002, Ironlake и новее | Radeon HD 2000 и новее GeForce 8 и новее1
H.265/HEVC 8bit | Cherryview/Braswell и новее | Skylake и новее | Radeon R9 Fury и новее
H.265/HEVC 10bit | Broxton и новее | Broxton/Apollo Lake и новее | Radeon 400 и новее
VP8 | Broadwell и новее | Broadwell и новее | Нет
VP9 8bit | Broxton и новее Гибридное: от Haswell refresh до Skylake3 | Broxton/Apollo Lake и новее | Raven Ridge + Radeon RX 5000 и новее
VP9 10bit & 12bit | Kaby Lake и новее | Kaby Lake и новее
AV1 8bit & 10bit | Нет | Tiger Lake и новее | Radeon RX 6600 и выше/новее
Кодирование
MPEG-2 | Ivy Bridge и новее | Broadwell и новее кроме Broxton/Apollo Lake | Нет | Нет5
H.264/MPEG-4 AVC | Sandy Bridge и новее | Broadwell и новее | Radeon HD 7000 и новее
H.265/HEVC 8bit | Skylake и новее | Skylake и новее | Radeon 400 и новее
H.265/HEVC 10bit | Kaby Lake и новее | Kaby Lake и новее | Raven Ridge + Radeon RX 5000 и новее
VP8 | Cherryview/Braswell и новее Гибридное: от Haswell до Skylake3 | Нет
VP9 8bit | Kaby Lake и новее | Ice Lake и новее
VP9 10bit & 12bit | Нет
AV1 8bit & 10bit | Alchemist и новее | Radeon RX 7900 и выше/новее

1. До GeForce GTX 750.
2. Поддерживается libva-intel-driver-g45-h264AUR[ссылка недействительна: package not found].
3. Гибридный кодировщик VP8 и декодировщик VP9 поддерживается intel-hybrid-codec-driver-gitAUR.
4. MPEG-4 Part 2 отключён по умолчанию из-за ограничений VAAPI. Задайте переменную окружения `VAAPI_MPEG4_ENABLED=true`, если вы всё-таки хотите протестировать данную функцию.
5. Адаптер NVIDIA CUDA находится в активной разработке, и набор поддерживаемых возможностей может измениться в будущем [9].

### Драйверы VDPAU

Кодек | Глубина цвета | mesa [10] [11] | nvidia-utils | libvdpau-va-gl (адаптер VA-API)
--- | --- | --- | --- | ---
Декодирование
MPEG-2 | 8bit | Radeon R600 и новее GeForce 8 и новее1 | GeForce 8 и новее | Нет
H.263/MPEG-4 Visual | 8bit | Radeon HD 6000 и новее GeForce 200 и новее1 | GeForce 200 и новее
VC-1 | 8bit | Radeon HD 2000 и новее GeForce 9300 и новее1 | GeForce 8 и новее2
H.264/MPEG-4 AVC | 8bit | Radeon HD 2000 и новее GeForce 8 и новее1 | GeForce 8 и новее | Смотрите #Драйверы VA-API
H.265/HEVC | 8bit | Radeon R9 Fury и новее | GeForce 900 и новее3 | Нет
10bit | Radeon 400 и новее | Нет4
VP9 | 8bit | Raven Ridge + Radeon RX 5000 и новее | GeForce 900 и новее3
10bit/12bit | Нет4
AV1 | 8bit | Radeon RX 6600 и выше/новее | GeForce 30 и новее5
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-битными потоками [12] [13].
5. Начиная с драйвера версии 510.[14]

### Драйвер NVIDIA

Кодек | nvidia-utils [15]
--- | ---
NVDEC | NVENC
MPEG-2 | Fermi и новее1 | Нет
VC-1
H.264/MPEG-4 AVC | Kepler и новее2
H.265/HEVC 8bit | Maxwell (GM206) и новее | Maxwell (2nd Gen) и новее
H.265/HEVC 10bit | Pascal и новее
VP8 | Maxwell (2nd Gen) и новее | Нет
VP9 8bit | Maxwell (GM206) и новее
VP9 10bit & 12bit | Pascal и новее
AV1 8bit & 10bit | Ampere и новее3 | Ada Lovelace и новее

1. Кроме GM108 (не поддерживается)
2. Кроме GM108 и GP108 (не поддерживаются)
3. Кроме A100 (не поддерживается)

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

Приложение | Декодирование | Кодирование | Документация
--- | --- | --- | ---
VA-API | VDPAU | NVDEC | Vulkan | VA-API | NVENC | Vulkan
FFmpeg | Да | Да | Да | Да | Да | Да | Да | FFmpeg#Hardware video acceleration (англ.)
GStreamer | Да | Нет | Да | Да | Да | Да | Нет | GStreamer#Hardware video acceleration (англ.)
Kodi | Да | Да | Нет | Нет | – | – | – | Kodi#Hardware video acceleration (англ.)
mpv | Да | Да | Да | Да | – | – | – | mpv (Русский)#Аппаратное декодирование
VLC media player | Да | Да | Нет | Нет | – | – | – | VLC media player#Hardware video acceleration (англ.)
MPlayer | Нет | Да | Нет | Нет | – | – | – | MPlayer#Hardware video acceleration (англ.)
Chromium | Да | Нет | Нет | Нет | Да | Нет | Нет | Chromium#Hardware video acceleration (англ.)
Firefox | Да | Нет | Нет | Нет | Нет | Нет | Нет | Firefox (Русский)#Аппаратное ускорение видео
GNOME Web | GStreamer | ? | ? | ? | GNOME (Русский)/Web (Русский)#Видео

Categories:

- Graphics (Русский)
- X server (Русский)

Hidden category:

- Pages with broken package links

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