Документация 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).

Но если вы используете для транскодирования центральный процессор (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
    

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

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

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

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

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

Пример:

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

Изменения в опциях транскодера

Важно.

Мы сделали, чтобы все типы транскодеров обрабатывали опции транскодирования одинаково, и добавили в транскодер поддержку анаморфных видеопотоков путем учета соотношения сторон пикселя. Это достигается новым смыслом параметра size и параметром sar.

Новые параметры в версиях старше 20.03:

  • size это размер выходного видео в пикселях для отоборажения на дисплее, который передается плееру. Размер складывается из дисплейных размеров (которые получает плеер для отображения итогового потока), стратегии ресайза (crop, fit, scale) и цвета фона. Таким образом, установить размер видео можно одним из следующих способов: size=WxH:fit:#ААFFEE, size=WxH:crop:#ААFFEE, или size=WxH:scale.

    Параметр size теперь означает размер окна воспроизведения на экране, которое Flussonic передает плееру, а не размер видео в пикселях внутреннего формата видео. Пиксель может иметь разное соотношение сторон для разных выходных форматов. Ранее size интерпретировался как пиксельный размер, а размер окна воспроизведения зависел от SAR потока или от значения параметра aspect.

  • sar во Flussonic — это соотношение ширины дисплейного представления к ширине пиксельного представления. Ширина дисплейного представления — это количество пикселей на матрице отображающего дисплея, это то, что передается плееру для проигрывания. А ширина пиксельного представления — это количество пикселей в оригинальной YUV.

Кроме size, изменилось поведение следующих старых параметров: aspect, force_original_aspect_ratio, и crop:

  • Параметр aspect не рекодмендуется использовать, он будет заменен на sar в будущих версиях. Почти все типы транскодеров во Flussonic будут интерпретировать его как SAR (не DAR), за исключением Nvidia NVENC. См. aspect в справочнике опций на этой странице.
  • Параметр force_original_aspect_ratio не требуется в большинстве случаев, и, если он требуется, проставляется автоматически.
  • Параметр crop теперь поддерживается почти всеми типами транскодеров (не спутайте его со стратегией изменения размера "crop").

Настройки транскодера, которые вы настроили ранее, останутся такими же и будут обрабатываться прежним методом. Транскодер станет обрабатывать параметры по-новому, только если вы указываете новые параметры — SAR или стратегию изменения размера (или оба) — и при этом не указываете устаревшие параметры (aspect, force_original_aspect_ratio).

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

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

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

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

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

    transcoding options

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

    transcoding options

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

    Чтобы увидеть больше опций видео, нажмите на стрелку рядом с видео-треком. Откроются опции лого, Advanced options и Extra parameters:

    transcoding options

    Если требуемых опций нет на экране, раскройте подраздел Extra parameters и добавьте их вручную:

    transcoding options

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

transcoding options

  • Bitrate — видео-битрейт дорожки.
  • Codec (H.264|H.265|MP2V) — видео-кодек.
  • Preset — влияет на качество и скорость доставки. О пресетах см. в Presets на этой странице.
  • Width — ширина итогового видео в плеере на экране в пикселях.
  • Height — высота итогового видео в плеере на экране в пикселях.
  • Strategy — стратегия изменения размеров (ресайза) видео до указанных размеров.
  • background — цвет фона — области в плеере, не заполненной видео после ресайза. Указывается только для стратегии 'fit'.

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

Advanced options

transcoding advanced options

  • Profile (baseline|main|high) — ограничивает выходной поток одним профилем H.264.
  • Level — может использоваться для совместимости с устаревшими устройствами проигрывания.
  • Aspect (X) (не использовать) — пропорция дисплейного представления в ширину. Будет заменен на SAR. Пиксельную ширину входного видео надо умножить на SAR, чтобы получить дисплейную ширину. Этот параметр используется (иногда вместе со стратегией изменения размера) если нужно получить видео для отображения на нестандартном дисплее. Фактически меняет параметры анаморфности. Для Nvidia NVENC этот параметр будет означать DAR (cоотношение размеров окна плеера).
  • Aspect (Y) (не использовать). См. описание Aspect (X) выше.
  • 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

transcoding options

Чтобы добавить логотип в видео-изображение, укажите путь к файлу с логотипом (сделанному с учетом размера выходного видео) в поле Alogo, а если логотип без изменения размеров, то в поле Logo. В случае Alogo для каждого выходного видео трека подготовьте индивидуальный файл с логотипом для предотвращения растягивания логотипа в результирующем видео. Описание logo и alogo см. в опциях.

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

Audio settings

transcoding options

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

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

Если включена опция Use defaults, это означает, что в файле конфигурации не было указано никаких параметров для транскодирования звука. При выборе этого параметра удаляются все параметры звука для этого потока.

Other settings

Замечание. Не все эти опции будут присутствовать в настройках, это зависит от вида транскодера (CPU, Nvidia NVENC, и т.д.)

  • Speed up the transcoder by running it as part of Flussonic (use with caution). По умолчанию транскодер на сервере исполняется в отдельном от 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 — количество потоков на декодере. Эта настройка применима только к транскодированию на процессоре. Используйте её только после рекомендации от нашей службы поддержки клиентов.

Большинства типов транскодера позволяет делать обрезку видео. Обрезка позволяет получить на выходе только часть площади изображения.

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

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

  • Drop second (field) — удаляет второе поле, получившееся после устранения чересстрочности, предотвращая тем самым повышенный битрейт. По умолчанию выключено. В конфигурационном файле этот параметр называется deinterlace_rate. Если вы отметили Drop second, то deinterlace_rate = frame и fps остается прежним, в противном случае deinterlace_rate = field и fps увеличивается после транскодирования в два раза.

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

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

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

Копирование настроек транскодера

Чтобы скопировать настройки в другие потоки:

  1. Перейдите на вкладку Transcoder потока, в котором вы уже настроили параметры транскодера.
  2. Нажмите Copy settings
  3. Перейдите на вкладку Transcoder потока, где вы хотите применить те же настройки, и нажмите Enable and paste settings. Если в потоке уже настроен транскодер, кнопка будет Paste settings.

Опции транскодера

Опции видео

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 — задает размеры видео на дисплее, где оно будет отображаться. Используется вместе со стратегией ресайза (crop, fit, scale) и цветом фона той части окна плеера, которую не заполнит видео.

Пример:

vb=2048k size=1280x720:fit:#000000 ab=128k

Параметр size теперь означает размер окна воспроизведения на экране, которое Flussonic передает плееру, а не размер видео в пикселях. Ранее size интерпретировался как пиксельный размер, а размер окна воспроизведения зависел от SAR потока или от значения параметра aspect.

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 — позволяет обрезать видео.

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

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

Пример:

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

aspect (sar)

aspect — изменяет соотношение сторон видео. Будет заменен на sar.

SAR во Flussonic — это соотношение ширины дисплейного представления к ширине пиксельного представления. Ширина дисплейного представления — это количество пикселей на матрице отображающего дисплея, это то, что передается плееру для проигрывания. А ширина пиксельного представления — это количество пикселей в оригинальной YUV.

Параметр aspect обрабатывается как SAR. В пользовательском интерфейсе он представлен полями Aspect (X) и Aspect (Y) в расширенных опциях видео.

Для транскодера на Nvidia NVENC aspect интерпретируется как DAR (cоотношение размеров окна плеера) и обрабатывается как в более ранних версиях Flussonic.

Важно! Изменение соотношения сторон не поддерживается для аппаратного кодирования с использованием 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

Другие опции

seamless=true

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

Пример:

transcoder vb=3000k size=1280x720 ab=copy seamless=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.

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

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

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

Пример:

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