Кодирование видео - тяжёлая операция для процессора, занимающая значительное количество ресурсов.
Но теперь при кодировании видео в 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 есть инструкция.