home

В модуле работы с видео появилась поддержка аппаратного кодирования видео в кодеке H.264 на видеокартах NVIDIA

quadro-p400.jpg

Кодирование видео - тяжёлая операция для процессора, занимающая значительное количество ресурсов.

Но теперь при кодировании видео в H.264 можно разгрузить процессор с помощью блока аппаратного кодирования в видеокартах NVIDIA (NVENC).

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

Видеокарта должна размещаться на ноде транскодирования видео, на которой устанавливается пакет elis-video-transcoder.

Аппаратные требования[править]

Нужна видеокарта NVIDIA с поддержкой NVENC и кодированием кодеком H.264, которую можно выбрать из списка: https://developer.nvidia.com/video-encode-and-decode-gpu-support-matrix-new.

Возможно в будущем будет добавлена поддержка видеокарт Intel и AMD.

В качестве дешёвой видеокарты, подходящей для установки в сервер, можно выделить Quadro P400.

Программные требования[править]

Нода транскодера должна быть развёрнута либо на голом железе, либо если используется система виртуализации, должна быть возможность монопольного проброса видеокарты в гостевую ОС с нодой транскодера (при этом хост останется без видеокарты).

Ознакомьтесь с документацией к вашему гипервизору по монопольному пробросу видеокарты в гостевую систему.

В ОС ноды транскодера должен быть установлен проприетарный драйвер NVIDIA, а также CUDA и библиотека поддержки NVENC.

Установка проприетарного драйвера NVIDIA[править]

Установка в CentOS8 из RPMFUSION[править]

Добавьте (на свой страх и риск) сторонний репозиторий с драйверами RPMFUSION:

# dnf install https://mirrors.rpmfusion.org/free/el/rpmfusion-free-release-8.noarch.rpm
# dnf install https://mirrors.rpmfusion.org/nonfree/el/rpmfusion-nonfree-release-8.noarch.rpm

Установите необходимые драйвера и библиотеки:

# dnf install akmod-nvidia xorg-x11-drv-nvidia xorg-x11-drv-nvidia-cuda xorg-x11-drv-nvidia-cuda-libs

Перезагрузите ПК:

# init 6

Проверьте доступность видеокарты:

# nvidia-smi

В ответ получите что-то такое:

+-----------------------------------------------------------------------------+
| NVIDIA-SMI 460.84       Driver Version: 460.84       CUDA Version: 11.2     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|                               |                      |               MIG M. |
|===============================+======================+======================|
|   0  Quadro P400         Off  | 00000000:01:00.0 Off |                  N/A |
| 42%   48C    P0    N/A /  N/A |      0MiB /  2000MiB |      0%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+

Включение использования видеокарты на ноде транскодера[править]

В /etc/elis-video-transcoder.conf в публичное статическое поле $gpu впишите 'nvidia':

class TranscoderConf {
 public static $gpu = 'nvidia';
}

Если этого поля в классе TranscoderConf нет, создайте его.

Для отключения в поле $gpu укажите null:

class TranscoderConf {
 public static $gpu = null;
}

Проверка аппаратного кодирования[править]

Положим у вас есть файл input.mp4, проверить работу можно запустив транскодирование с использованием аппаратного кодека:

$ ffmpeg -y -vsync 0 -i input.mp4 -c:a copy -c:v hevc_nvenc -b:v 5M output.mp4

Проброс видеокарты в гостевую систему[править]

Для PROXMOX есть инструкция.