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

Contents

Транскодер

Транскодирование необходимо для того, чтобы:

  • создать мультибитрейтный поток
  • изменить параметры видео — кодек и битрейт потока, размер картинки
  • наложить логотип.

У Flussonic Media Server есть встроенный транскодер. Он поддерживает транскодирование на графическом процессоре или же с использованием центрального процессора.

Содержание:

Поддерживаются протоколы RTMP, RTSP, MPEG-TS (по HTTP и UDP).

Протокол HLS поддерживается частично — некоторые источники могут не транскодироваться. Работоспособность вашего источника HLS с транскодером необходимо каждый раз проверять самостоятельно.

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

Важно

Транскодирование является крайне ресурсоемким процессом (по CPU) и включает в себя следующие этапы:

  1. Декодирование исходного потока.
  2. Обработка и кодирование сырого потока в соответствии с заданными параметрами.

Рассчитывайте от 5 до 20 каналов на один сервер в зависимости от настроек.

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

Для транскодирования на GPU Nvidia NVENC в версии Flussonic 19.05 никаких дополнительных пакетов устанавливать не требуется.

Но если вы используете для транскодирования центральный процессор (CPU), то нужно установить пакет flussonic-transcoder:

apt-get -y install flussonic-transcoder

Пакет устанавливается из того же репозитория, что и пакет flussonic.

Настройка транскодирования через файл

Настройки транскодирования задаются в настройках потока в конфигурационном файле. Их можно также указать в веб-интерфейсе.

Рассмотрим, как указать их в виде текстовой строки в конфигурационном файле /etc/flussonic/flussonic.conf.

Важно! Для транскодера важно соблюдать последовательность опций. Сначала указываются все параметры видео, затем глобальные опции и аудио. В примерах мы покажем правильную компоновку опций.

Транскодер

  1. Транскодер для входящего потока включается следующим образом:

    stream ort {
      url  udp://239.0.0.1:5000;
      transcoder vb=2048k size=1280x720 preset=fast ab=128k;
    }
    
  2. Для применения настроек не забудьте выполнить

    /etc/init.d/flussonic reload
    

Настройка транскодирования с помощью веб-интерфейса

Чтобы включть транскодирование и задать его параметры через веб-интерфейс Flussonic Media Server:

  1. В меню Media выберите канал, который необходимо транскодировать.
  2. Откройте вкладку Transcoder. Поля для задания настроек станут активными после того, как вы добавите выходной видеопоток (см. следующий шаг).
  3. Нажмите кнопку Add video track и (опционально) выберите битрейт, чтобы появился диалог настройки параметров видео:

    transcoding options Появятся поля для выбора свойств видео дорожек.

  4. Если вы используете специальные аппаратные средства для ускорения транскодирования, укажите это:

    transcoding options

    • Hardware acceleration — включает аппаратное кодирование. Аппаратное кодирование позволяет транскодировать значительно больше потоков на одном сервере.
    • Deinterlace mode (off|on) — устраняет чересстрочность. Деинтерлейсинг необходим для комфортного просмотра ТВ на ПК/мобильных устройствах. Для Nvidia NVENC дополнительно можно выбрать режимы bob|adaptive|weave.
    • Device ID — задаёт номер видеокарты NVENC.
    • Seamless source changeпредотвращает мигание при смене источника видеопотока.
  5. Чтобы оставить параметры видео, которые были у входного потока, отметьте Copy from origin.

    transcoding options

  6. Чтобы задать свои уникальные параметры для выходных видео дорожек, заполните форму на экране. Ниже описание опций.

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

Параметры кодирования видео:

  • Video bitrate — видео-битрейт дорожки.
  • Video width — ширина в пикселах.
  • Video height — высота в пикселах.
  • Video codes (H.264|H.265|MP2V) — видео-кодек.
  • Preset — влияет на качество и скорость доставки. О пресетах см. в Presets на этой странице.

Чтобы получить на выходе видео с теми же характеристиками, что и на входе, отметьте Copy from origin.

Advanced options:

  • Profile (baseline|main|high) — ограничивает выходной поток одним профилем H.264.
  • Level — может использоваться для совместимости с устаревшими устройствами проигрывания.
  • Frames per second — частота кадров.
  • Reference frames — референсные кадры, использующиеся при межкадровой компрессии для ссылок на последующие кадры. Лучшее качество видео будет при большем количестве референсных кадров.
  • B-frames — значения 0|1|2|3 соответствуют последовательностям кадров: IP|IBP|IBBP|IBBBP.
  • Frames in GOP — количество кадров в GOP. Flussonic транскодирует поток, создавая каждый GOP точно такого размера, как указано в этой настройке.
  • Disable CGOP — разрешает транскодеру разбивать выходной поток на GOP с немного различающимся количеством кадров, но в районе заданного в опции Frames in GOP. Эта настройка применима только к транскодированию на процессоре. Иногда это помогает уменьшить трафик.

Logo options:

Укажите путь к файлу с логотипом (сделанному с учетом размера выходного видео) в поле The path to the track's alogo. Для каждого видео трека подготовьте инливидуальный файл с логотипом для предотвращения растягивания логотипа в результирующем видео. Описание alogo см. в опциях

Затем выберите место размещения логотипа на видео.

transcoding options

Audio settings:

  • Audio bitrate — битрейт аудио дорожки.
  • Sample rate (bypass|0|8000|16000|32000|44100|48000)
  • Codec (aac|opus|mp2a) — аудио-кодек (по умолчанию используется кодек AAC).
  • Channels — количество аудио-каналов в выходном потоке.

Чтобы получить на выходе аудио с теми же характеристиками, что и на входе, отметьте Copy from origin.

transcoding options

Other settings:

  • Speed up the transcoder by running it as part of Flussonic (use with caution) (19.06). По умолчанию транскодер на сервере исполняется в отдельном от Flussonic процессе. Такое поведение более надежно для бесперебойной работы Flussonic Media Server. Если вы включаете опцию Speed up the transcoder by running it as part of Flussonic (external=false), то транскодер будет выполняться в одном процессе с Flussonic Media Server. Это ускоряет кодирование, особенно при кодировании аудио или при кодировании с использованием Nvidia. Однако ошибка транскодера может привести к остановке работы Flussonic Media Server.

Для кодирования с использованием центрального процессора отображаются дополнительные настройки:

  • Decoder threads — количество потоков на декодере. Эта настройка применима только к транскодированию на процессоре. Используйте её только после рекомендации от нашей службы поддержки клиентов.

Для кодирования с использованием Nvidia NVENC доступны такие дополнительные настройки:

На выходе можно получать часть площади изображения путем обрезки:

  • Crop-X и Crop-Y — координаты верхнего левого угла результирующего изображения, относительно исходного (т.е. если (0,0) — это левый верхний угол исходного изображения).
  • Crop-Width — ширина изображения.
  • Crop-Height — высота изображения.

transcoding options

Для Nvidia NVENC также можно удалять дублирующие кадры после устранения чересстрочности:

  • Drop second (field) — удаляет второе поле, получившееся после устранения чересстрочности, предотвращая тем самым повышенный битрейт. По умолчанию выключено (off).

Сохранение настроек

Чтобы сохранить новые значения, нажмите Save.

Чтобы удалить все настройки и отключить транскодер для этого потока, нажмите Disable transcoder.

Примеры настройки транскодирования потока

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

  • синим — параметры кодирования видео, которые обязательно нужно указать.
  • желтым — параметры кодирования аудио, которые обязательно нужно указать.
  • белым — необязательные параметры.

Пример настройки параметров одного потока:

Параметры транскодера

Пример:

vb=2048k preset=fast ab=128k

Примеры настройки параметров мультибитрейтного потока:

Транскодер

Пример:

vb=2048k preset=fast vb=700k size=720x576 preset=fast vb=300k size=320x240 preset=fast ab=128k

Транскодер

Пример:

vb=copy vb=1600k size=1280x720 preset=fast vb=400k size=640x480 preset=fast ab=copy

Опции

Опции видео

vb

vb (video bitrate) — параметр, задающий битрейт видео дорожки. Задаётся в виде числового значения (1000k, 1500k, 2000k и т.д.). Значение должно обязательно заканчиваться на k. Каждое указание опции vb создает новую видео дорожку в выходном потоке.

Пример:

vb=2048k ab=128k

Опция vb=copy сохраняет параметры оригинального потока, то есть просто копируется в исходящий поток.

preset

preset — аналог encoder preset из стандартного набора ffmpeg. Влияет на качество и скорость загрузки. Указывается отдельно для каждого видеопотока. По умолчанию — medium.

Пример:

vb=2048k preset=fast ab=128k

Подробнее о пресетах ниже.

size

size — задает размеры видео. Указывается отдельно для каждого видеопотока.

Пример:

vb=2048k size=1280x720 ab=128k

logo

logo — позволяет наложить логотип. Логотип добавляется до изменения размера изображения видео.

Пример:

vb=2048k size=1280x720 logo=/path/to/file.png@10:10 ab=128k

Подробнее о параметрах наложения логотипа ниже.

alogo

alogo — позволяет наложить логотип. Логотип добавляется после изменения размера изображения видео. Это предотвращает растягивание логотипа, которое может произойти при добавлении логотипа при помощи опции logo. Для каждого результирующего разрешения видео нужно подготовить отдельный файл логотипа.

Пример:

vb=2048k size=1280x720 alogo=/path/to/file.png@10:10 ab=128k

Подробнее о параметрах наложения логотипа ниже.

vcodec

vcodec — позволяет задать видео кодек. По умолчанию используется H.264. Flussonic Media Server позволяет кодировать в H.265 (hevc) или mp2v. Указывается отдельно для каждого видеопотока.

Кодек mp2v недоступен при использовании аппаратного кодирования.

Пример:

vb=2014k vcodec=mp2v ab=128k

fps

fps — задает частоту кадров. Указывается отдельно для каждого видеопотока.

Пример:

vb=2048k fps=25 ab=128k

deinterlace

deinterlace — устраняет чересстрочность. При интенсивной смене кадров в некоторых видеоплеерах могут наблюдаться продольные горизонтальные полосы. Деинтерлейсинг необходим для комфортного просмотра ТВ на ПК/мобильных устройствах. Указывается один раз и действует сразу на все видеопотоки.

Пример:

vb=2000k deinterlace=1 ab=128k

refs

refs — количество референсных кадров. Указывается отдельно для каждого видеопотока.

Пример:

vb=2000k refs=6 ab=128k

bframes

bframes — позволяет отключить b-frames. Это может понадобиться, например, при вещании в RTSP. Указывается один раз и действует сразу на все видеопотоки.

Пример:

vb=2000k bframes=0 ab=128k

hw

hw — включает аппаратное кодирование. Указывается в настройках потока.

Пример:

vb=2048k hw=nvenc ab=128k

crop

crop — позволяет обрезать видео. Доступно только при аппаратном транскодировании на NVENC: hw=nvenc. Указывается отдельно для каждого видеопотока.

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

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

Пример:

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

aspect

aspect — изменяет соотношение сторон видео. Указывается отдельно для каждого видеопотока.

Важно! В данный момент изменение соотношения сторон не поддерживается для аппаратного кодирования с использованием Intel QuickSync (hw=qsv).

Пример:

vb=2048k hw=nvenc aspect=12:5 ab=128k

force_original_aspect_ratio

force_original_aspect_ratio=true — сохраняет соотношение сторон видео путем добавления черных полос. Опция полезна если вы хотите сохранить разрешение на выходе при переключении между разными источниками.

Пример:

vb=2048k size=1280x720 force_original_aspect_ratio=true

g

g=150 — устанавливает количество кадров в одном GOP. Flussonic транскодирует поток, создавая каждый GOP точно такого размера, как указано в этой настройке.

Пример:

vb=2048k fps=25 size=1280x720 g=150

Чтобы разрешить делать GOP не обязательно строго одного размера, используйте в дополнение к этой опции опцию disable_cgop.

disable_cgop

disable_cgop=1 — разрешает транскодеру разбивать выходной поток на GOP с немного различающимся количеством кадров, но в районе заданного в опции g. Эта настройка применима только к транскодированию на процессоре (а не на аппартном транскодере). Иногда это помогает немного уменьшить трафик.

Пример:

vb=2048k fps=25 size=1280x720 g=150 disable_cgop=1

Любые параметры видео

Например, -profile:v high -level 4.1 в конфигурации Flussonic Media Server будет выглядеть так: profile=high level=4.1.

Опции аудио

ab

ab — задает битрейт аудио. Указывается только один раз (даже если у вас мультибитрейтное видео). Значение должно обязательно заканчиваться на k.

Пример:

vb=2048k ab=128k

acodec

acodec — задает аудио кодек. Доступные значения: ac3, mp2a. По умолчанию, все аудиопотоки пережимаются в AAC.

Пример:

vb=2014k vcodec=mp2v ab=128k acodec=mp2a

ar

ar — задает sample rate, частоту дискретизации. Пример: ar=44100.

Пример:

vb=2014k ab=128k ar=44100

ac

— задает количество аудио-каналов.

Пример:

vb=2014k ab=128k aс=1

Другие опции

immutable=true

immutable=true — предотвращает мигание, которое может возникать при изменении источника потока, особенно если размер изображения из нового источника не такой, как из предыдущего. Подробнее

Пример:

transcoder vb=3000k size=1280x720 ab=copy immutable=true

Аппаратное ускорение

С помощью аппаратного транскодера можно серьезно увеличить количество транскодируемых потоков на одном сервере.

Flussonic Media Server поддерживает Nvidia NVENC и Intel Quick Sync технологии.

Подробнее про установку и настройку аппаратного ускорения описано в разделах Аппаратное транскодирование на Nvidia NVENC и Intel Quick Sync Video.

Наложение логотипа

Flussonic Media Server может накладывать логотип на видео:

Транскодер

Пример:

vb=2048k preset=fast logo=/path/to/file.png@10:10 ab=128k

10:10 — это координаты от левого верхнего угла экрана. Для размещения в других частях экрана может понадобиться написать немного более сложную формулу.

Для размещения в центре:

vb=2048k preset=fast logo=/path/to/file.png@(main_w-overlay_w-10)/2:(main_h-overlay_h-10)/2 ab=128k

Для размещения в левом нижнем углу:

vb=2048k preset=fast logo=/path/to/file.png@10:(main_h-overlay_h-10) ab=128k

Для размещения в правом верхнем углу:

vb=2048k preset=fast logo=/path/to/file.png@(main_w-overlay_w-10):10 ab=128k

Для размещения в правом нижнем углу:

vb=2048k preset=fast logo=/path/to/file.png@(main_w-overlay_w-10):(main_h-overlay_h-10) ab=128k

Внимание! Flussonic Media Server может накладывать логотип только при кодировании на CPU и NVENC.

Выбор пресета

Preset — это набор оптимальных параметров, влияющих скорость кодирования и качество. Чем лучше качество, тем дольше по времени кодируется файл, и наоборот.

Это означает, что лучшего качества при кодировании можно достичь используя более медленный preset, но кодирование займет больше времени. Используйте «медленные» пресеты, если для вас важнее качество, а не скорость.

Для транскодирования с использованием ЦП поддерживаются следующие значения (в порядке убывания скорости):

  • ultrafast
  • superfast
  • veryfast
  • faster
  • fast
  • medium
  • slow
  • slower
  • veryslow
  • placebo

По умолчанию используется medium. Пресет placebo не слишком полезен, его не нужно использовать.

При кодировании с использованием Nvidia NVENC поддерживается следующий набор пресетов:

default, slow, medium, fast, hp, hq, bd, ll, llhq, llhp, lossless, losslesshp.

При кодировании с использованием Intel QuickSync набор пресетов следующий:

veryfast, faster, fast, medium, slow, slower, veryslow.

Плавная смена источника

Опция "immutable=true" улучшает поток на выходе транскодера. Она предотвращает мигание, которое иногда может возникать при изменении источника потока, особенно если размер изображения у нового источника не такой, как у предыдущего. Например, когда в телеканал врезана реклама с другой шириной и высотой изображения или когда вы транскодируете серверный плейлист, состоящий из разных видео-потоков и файлов.

С помощью этой опции транскодер плавно переключается на другой исходный формат без потери кадров. Это достигается за счет транскодирования с одинаковым размером изображения в результирующем видеопотоке. Все источники будут транскодированы c одним размером, который вы указали в опции size. Если size не указан, то размер будет как у картинки из самого первого источника, который был получен транскодером на вход.

Пример:

stream STREAM_NAME {
  udp://239.0.0.1:5000;
  transcoder vb=3000k size=320x200 ab=copy hw=nvenc immutable=true;
}