Документация Flussonic Media Server

Contents

Аппаратное транскодирование на Nvidia NVENC

Транскодирование видео на NVIDIA Nvenc

Flussonic Media Server умеет кодировать видео, используя GPU на видеокартах NVIDIA. Список поддерживаемых видеокарт можно найти на сайте Nvidia.

Также в системе должен быть установлен драйвер Nvidia версии не ниже 352.

Важно. Начиная с версии 19.05 транскодер Flussonic поддерживает 10-битные H.265 (HEVC) потоки при использовании NVIDIA Nvenc.

Установка драйвера

Драйвер устанавливается из соответствующего пакета.

Ubuntu 16.04:

apt-get install nvidia-375

Для транскодирования потоков с 10-битной глубиной цвета потребуется драйвер не ниже 385.130.

Debian 9:

apt-get install nvidia-driver libnvidia-encode1

В sources.list должен быть включен компонент non-free.

Для других системах можно установить драйвер с официального сайта Nvidia. Инструкция по установке драйвера для Debian

Для работы с большим количеством транскодируемых потоков может потребоваться увеличение лимита на открытые файл. Сделать это можно командой: ulimit -n 4096

Добавьте в файл следующие строки в файл: /etc/security/limits.conf:

* hard nofile 4096
* hard nofile 4096

Включение транскодера

Настройки транскодера можно задать:

  • В конфигурационном файле Flussonic /etc/flussonic/flussonic.conf в опциях потока, используя директиву transcoder с разными опциями.
  • В интерфейсе администратора в Media > выбрать поток > Transcoder.

Для включения аппаратного кодирования с использованием Nvenc необходимо прописать опцию hw=nvenc:

transcoder vb=2048k hw=nvenc ab=128k

Выбор кодека

По умолчанию используется H.264. При кодировании на Nvenc вы можете использовать H.265 (HEVC):

transcoder vb=2048k hw=nvenc vcodec=hevc ab=128k

Поддержка потоков с 10-битной глубиной цвета

Транскодер Flussonic может работать с 10-битными H.265 (HEVC) потоками при использовании NVIDIA Nvenc.

Возможны следующие преобразования (на входе -> на выходе):

  • 10-bit HEVC -> 8-bit HEVC или H.264
  • 10-bit HEVC -> 10-bit HEVC
  • 8-bit HEVC или H.264 -> 10-bit HEVC

Необходимо использовать драйвера NVIDIA - версии 384.130 или выше, и версию Ubuntu - 16.04 или выше.

Выбор видеокарты

Если в системе установлено несколько видеокарт, то можно выбрать какую из них использовать для транскодирования. Для этого используется опция deviceid:

transcoder vb=2048k hw=nvenc deviceid=2 ab=128k

Номер видеокарты можно узнать при помощи команды nvidia-smi.

По умолчанию используется первая видеокарта deviceid=0.

Обрезка видео

При использовании Nvenc доступна опция crop, которая позволяет обрезать видео. Указывается отдельно для каждого видеопотока.

Использование: crop=x:y:width:height, где:

  • x:y — координаты левого верхнего угла выходного видео в пределах размеров входного видео,
  • width — ширина выходного видео
  • height — высота выходного видео.

Пример:

transcoder vb=2048k hw=nvenc crop=0:0:100:100 ab=128k

Декодирование на CPU

По умолчанию, декодирование также происходит на GPU. Чтобы использовать для декодирования центральный процессор, вместо hw=nvenc укажите hw=nvenc2:

transcoder vb=2048k hw=nvenc2 ab=128k

Деинтерлейсинг

Деинтерлейсинг (устранение чересстрочности) при использовании nvenc происходит по умолчанию. В случае nvenc2 (использование CPU) деинтерлейсинг следует включить с помощью опции deinterlace=yes.

Для отключения дорогостоящего деинтерлейса укажите deinterlace=0.

Прочие параметры, такие как size, preset, bframes, level, используются аналогично CPU транскодеру.

Возможные значения параметра preset: hq, hp, bd, ll, llhq, llhp. По умолчанию — hp.

Сколько каналов можно транскодировать на одной видеокарте?

Сколько каналов можно транскодировать на одной видеокарте?

Видеокарты серии GeForce, как правило, имеют ограничение в количестве одновременно кодируемых потоков равных двум. Профессиональные линейки QUADRO и TESLA не имеют подобных ограничений, однако максимальное количество транскодируемых потоков зависит от множества факторов, включая качество входных и выходных потоков (битрейт, разрешение видео, число кадров в секунду и т.д.), а также аппаратные ресурсы самого сервера.

При выборе модели видеокарты используйте сравнительную таблицу nvidia

Статистика производительности Nvidia

Вы можете собирать статистику о работе GPU Nvidia, если включите сохранение статистики в базе данных Pulse. Чтобы начать сохранять данные, добавьте в файл конфигурации Flussonic следующую директиву:

nvidia_monitor true;

Чтобы прекратить сохранять статистику по Nvidia, обновите конфиг:

nvidia_monitor false;

Чтобы посмотреть данные на графике, составьте запрос и выполните его в интерфейсе администратора в разделе Pulse, поле Custom query.

В запросе используйте основные метрики (метрики температуры могут не поддерживаться видеокартой):

  • gpu_pwr — энергопотребление (в Вт)
  • gpu_temp — температура графического процессора (в градусах Цельсия)
  • gpu_sm — использование SM (streaming multiprocessor) в %
  • gpu_mem — использование памяти в %
  • gpu_enc — использование энкодера в %
  • gpu_dec — использование декодера в %
  • gpu_usedmem — количество используемой видеопамяти в байтах или килобайтах.

Пример запроса:

sum:1m-avg:gpu_dec{from=-2h,gpu=nv0}

Другие метрики:

  • gpu_mclk, gpu_pclk — скорость часов памяти и процессора (в МГц)
  • gpu_pviol, gpu_tviol — превышение энергопотребления (in %) and превышение температурного режима (в виде булева значения)
  • gpu_fb, gpu_bar1 — использование буфера кадров и памяти Bar1 (в Мбайтах)
  • gpu_sbecc, gpu_dbecc — ECC (количество агрегированных single-bit и double-bit ошибок ECC) и количество ошибок воспроизведения PCIe
  • gpu_pci, gpu_rxpci, gpu_txpci — PCIe Rx и Tx пропускная способность в Мбайт/c (Maxwell и выше).