Транскодер Intel VPL: поддерживаемое оборудование¶
Какое оборудование Intel подходит для аппаратного транскодирования, какие кодеки доступны на разных поколениях графики и как убедиться, что оборудование распознано. Установка пакетов транскодера описана в разделе Транскодеры, настройка самого транскодера — в Транскодеры.
Кратко: нужна встроенная или дискретная графика Intel уровня Gen9 и выше.
Транскодер определяет, какой рантайм Intel есть на машине, и подключается
к нему; один и тот же исполняемый файл tcivpl работает и на новом, и
на старом оборудовании.
Два рантайма Intel¶
Рантайм |
Оборудование |
|---|---|
oneVPL (VPL v2) |
Gen12 и новее: Tiger Lake, Rocket Lake, Alder Lake (в том числе Alder Lake-N: N100, N305), Raptor Lake, Arc |
Media SDK v1 (MSDK v1) |
Gen9–Gen11: Skylake, Kaby Lake, Coffee Lake, Comet Lake, Ice Lake |
Выбор рантайма автоматический и отдельной настройки не требует: диспетчер
VPL перечисляет реализации, найденные для выбранного устройства
/dev/dri/renderD<N>, а транскодер берёт первую пригодную для
аппаратной работы. Отдельного правила «предпочитать VPL v2» в транскодере
нет — для Gen9–Gen11 нового рантайма попросту не существует, поэтому там
всегда оказывается Media SDK v1, а на Gen12 и новее обычно установлен
только oneVPL.
Учтите при подборе оборудования: процедуры установки транскодера (Транскодеры) ставят только рантайм VPL v2, то есть рассчитаны на Gen12 и новее. Для Gen9–Gen11 рантайм Media SDK v1 устанавливается отдельно, и в новых дистрибутивах его может не быть (см. ниже).
Кодеки¶
Рантайм |
Декодирование |
Кодирование |
|---|---|---|
VPL v2 (Gen12+) |
H.264, HEVC, MPEG-2 |
H.264, HEVC, MPEG-2 |
MSDK v1 (Gen9–Gen11) |
H.264, MPEG-2 |
H.264, MPEG-2 |
Чего нет:
HEVC на MSDK v1 не поддерживается — ни декодирование, ни кодирование: в Media SDK v1 HEVC подключается через плагинный интерфейс, которого диспетчер oneVPL не предоставляет. Для HEVC нужна машина Gen12 и новее. При попытке транскодер пишет явную ошибку —
HEVC decode is not supported on the Intel Media SDK v1 runtimeлибоHEVC encode is not supported on the Intel Media SDK v1 runtime.AV1, VP9 и VC-1 не поддерживаются ни одним из рантаймов — в вещании они не нужны.
Три перечисленных кодека — это максимум, с которым умеет работать
транскодер.
На VPL v2 он не накладывает собственных ограничений, поэтому реальный
набор кодеков конкретного адаптера определяет рантайм; что доступно на
машине, покажет tcivpl --hw-list (см. ниже). Общая, независимая от
бэкенда матрица кодеков транскодера приведена в
Бэкенды и кодеки.
Урезанное оборудование Atom: не поддерживается¶
Платформы на ядрах Atom до Gen12 — Apollo Lake, Gemini Lake, Elkhart Lake, Jasper Lake (Celeron и Pentium серий J и N: J4125, J6412, N5105 и подобные) — для транскодирования не подходят.
В них урезанный медиадвижок: полноценного аппаратного кодирования нет, а кодирования MPEG-2 нет вообще. Декодирование на таких чипах может работать, но транскодировать нечем — используйте программный транскодер (пакет pstreamer-tcsw) или другое оборудование. Транскодер такое оборудование не отбраковывает заранее: он запускается и завершается ошибкой при инициализации кодера.
Важное исключение: Alder Lake-N (N100, N305 и подобные) — тоже Atom-ядра, но графика у них полноценная Gen12, они поддерживаются.
Отдельно: у старых процессоров Atom нет AVX, а часть готовых пакетов
Intel собрана с AVX. В этом случае процесс транскодера падает с
Illegal instruction — инструкции выполняет библиотека драйвера или
рантайма Intel, загруженная в процесс, а не код самого транскодера.
Что должно быть установлено¶
Компонент |
RHEL / AlmaLinux / Rocky |
Debian / Ubuntu |
|---|---|---|
Драйвер VA-API iHD (обязателен) |
|
|
Рантайм VPL v2 (Gen12+) |
|
|
Рантайм MSDK v1 (Gen9–Gen11) |
|
|
VA-API, DRM |
|
|
Рантайм нужен ровно один — тот, что соответствует оборудованию. Драйвер
iHD обязателен в любом случае: на старом i965 инициализация VA-API
пройдёт, но декодер не поднимется, причём отдельного сообщения об этом
нет — драйвер виден только в журнале при старте потока. В Debian и Ubuntu
берите именно вариант intel-media-va-driver-non-free: в
intel-media-va-driver часть кодеков вырезана.
Имена пакетов зависят от того, откуда они ставятся. Приведённые
Debian-имена — из репозитория Intel Graphics, который подключается по
процедуре установки (Ubuntu 22/24); в собственном
репозитории Ubuntu тот же рантайм VPL v2 называется libmfx-gen1.2 и
версии там заметно старше.
Диспетчер Intel VPL (в дистрибутивах — libvpl2) поставляется в
составе пакета транскодера: он устанавливается в
/opt/pss/lib/libvpl.so.2, путь прописывается в каталоге
/etc/ld.so.conf.d/. Но диспетчер только выбирает рантайм — если
подходящего рантайма на машине нет, транскодировать нечем.
Рантайм MSDK v1 из новых дистрибутивов убран: intel-mediasdk есть в
EPEL 9, но не в EPEL 10; libmfx1 есть в Debian 12 и Ubuntu 24.04, но
его уже нет в следующих выпусках. На таких системах для оборудования
Gen9–Gen11 рантайм придётся устанавливать отдельно.
Пакет транскодера ни драйвер, ни рантайм за собой не тянет, поэтому
успешная установка сама по себе не означает, что аппаратное
транскодирование заработает — это проверяется отдельно. Учтите также, что
пользователь службы должен иметь доступ к устройствам /dev/dri
(Ubuntu 22/24).
Как проверить¶
/usr/local/bin/tcivpl --hw-list
Команда печатает XML со списком реализаций, которые нашёл диспетчер VPL —
одной строкой, без переносов. Для каждой указаны имя рантайма
(device-name), версия API, списки кодеков декодера и кодера, адаптер
и признак пригодности к аппаратной работе. Пример вывода на Gen9–Gen11
(показан с переносами для читаемости):
<vpl mfx-version="2.15">
<device id="0" device-name="mfxhw64" api-version="1.35" legacy="1"
dec-codecs="h264,mpeg2" enc-codecs="h264,mpeg2"
vendor-id="8086" device-id="4555" drm-render="128"
supported="1"/>
</vpl>
Как читать вывод:
legacy="1"— реализация сообщает версию API ниже 2.0, то есть это старый рантайм Media SDK v1; без этого признака — oneVPL 2.x. На это и наapi-versionследует опираться в первую очередь: значениеdevice-nameприходит от диспетчера как есть (на практике —mfxhw64для Media SDK v1 иmfx-genдля oneVPL).supported="1"— реализация пригодна для аппаратной работы. Запись без этого признака равноценна её отсутствию.Для Media SDK v1 список кодеков всегда
h264,mpeg2— это набор, поддерживаемый транскодером на этом рантайме, а не результат опроса оборудования. Для oneVPL списки берутся из того, что сообщает рантайм.mfx-version— версия API заголовков, с которыми собран транскодер, а не версия установленного рантайма.
Пустой список (элемент <vpl> без единого <device>) означает, что
аппаратного транскодирования на этой машине не будет: не установлен
рантайм или драйвер, GPU не Intel либо нет доступа к /dev/dri.
Сообщение No vpl libraries found — отдельный случай: не найдена сама
библиотека-диспетчер.
Команда только перечисляет реализации и ничего не выбирает. Какая из них
будет использована, определяется при запуске потока — по устройству,
заданному в настройках транскодера. При старте потока транскодер пишет в
журнал две строки: выбранный рантайм с версией API и версию VA-API вместе
с именем драйвера. По второй строке видно, что работает именно драйвер
iHD, а не i965.
Обнаруженные бэкенды транскодирования, их версии и найденные устройства показаны также на экране «О программе» (О системе), а загрузка GPU — на экране «Системный монитор» (Системный монитор).