Skip to content

Транскодер

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

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

Процесс транскодирования состоит из двух этапов:

  1. Декодирование — процесс получения необработанных "сырых" данных из сжатых.
  2. Кодирование — процесс сжатия необработанных "сырых" данных для их последующей передачи по сети. Кодирование определяет параметры видео, такие как разрешение, битрейт и тип сжатия.

Для кодирования и декодирования необходим кодек — алгоритм сжатия видео и аудио. Видеокодек влияет на размер файла и качество изображения. H.264 и AAC — наиболее часто используемые видео- и аудиокодеки для потокового вещания.

Note

Помните, что разные протоколы поддерживают разные контейнеры и кодеки.

Транскодирование — процесс декодирования потока, преобразования некоторых параметров видео и/или аудио, а затем повторного кодирования потока для передачи через Интернет.

Транскодирование — одна из операций над медиа либо их комбинация:

  • Транскодирование — это изменение видео- и/или аудиокодека (типа сжатия). Например, преобразование видео MPEG2 в H.264.
  • Транссайзинг — изменения размера видеокадра, или разрешения видео. Например, уменьшение разрешения с 3840×2160 (4K) до 1920×1080p.
  • Трансрейтинг — процесс понижения битрейта потока без изменения кодека или разрешения. Например, у видео 4K с битрейтом 45 Мбит/с можно снизить битрейт до 15 Мбит/с.

Ниже показан пример получения мультибитрейтного потока при транскодировании видео 4К с битрейтом 45 Мбит/с:

Схема 1. Пример транскодирования

Схема транскодирования

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

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

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

Транскодер бесшовно переключается между источниками без потери кадров, что обеспечивает ровное проигрывание результирующего потока без мигания или других артефактов на экране зрителя. Бесшовное переключение достигается за счёт сохранения разрешения видео исходного потока в результирующем потоке. Транскодер преобразует источники таким образом, чтобы разрешение видео в них соответствовало значению, указанному в параметре size. Если параметр size не указан, то разрешение выходного потока будет соответствовать разрешению видео самого первого источника, полученного на вход транскодера.

Содержание:

Note

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

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

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

См. также Как определить требования к серверу с транскодером?

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

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

Для транскодирования на центральном процессоре (CPU) нужен установленный пакет flussonic-transcoder. При настройках системы по умолчанию он устанавливается вместе с Flussonic Media Server как recommended-пакет. Если у вас отключена установка рекомендованных пакетов, установите пакет для транскодирования вручную:

apt-get -y install flussonic-transcoder

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

Настройка транскодера

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

  1. Глобальные опции (применяются ко всем видеотрекам)
  2. Опции кодирования видео (применяются индивидуально к каждому видеотреку)
  3. Опции кодирования аудио (применяются ко всем аудиотрекам)

Все опции подробно описаны в разделе Опции транскодера.

Вы можете настроить транскодер одним из трех способов:

  1. Веб-интерфейс Flussonic (recommended)
  2. Файл конфигурации
  3. Flussonic API (см. Справочник API)

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

Веб-интерфейс Flussonic позволяет настроить транскодер для потока или шаблона.

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

В разделе Media > Streams или Media > Templates > нажмите на имя потока или шаблона, для которого хотите настроить транскодирование. Затем перейдите во вкладку Transcoder и нажмите Enable transcoder.

Используйте стрелки справа, чтобы раскрыть или свернуть ту или иную группу настроек.

Flussonic transcoder

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

transcoding options

  • Copy from input — отметьте, чтобы получить на выходе аудио с теми же характеристиками, что и на входе.
  • Bitrate — битрейт аудио дорожки.
  • Codec (aac|opus|mp2a|pcma|ac3) — аудио-кодек (по умолчанию используется кодек AAC).
  • Sample rate (bypass|0|8000|16000|32000|44100|48000)
  • Channels — количество аудиоканалов в выходном потоке.
  • Volume — громкость звука на выходе. Это может быть значение в Дб (с "+" или "-"), которое будет добавлено к громкости на входе, либо коэффициент, на который нужно умножить громкость на входе. Подробнее см. Как изменить уровень громкости звука?.
  • Split channels — выберите эту опцию, чтобы каждый аудиотрек с несколькими каналами разбивался на несколько моно-треков.

Глобальные настройки транскодера

Глобальные настройки применяются ко всем выходным видеодорожкам.

transcoding options

Device — выбор вида транскодера. Для Flussonic Media Server позволяет включить аппаратное кодирование и выбрать модель и ID видеокарты NVENC, либо использовать ЦП. Аппаратное кодирование позволяет транскодировать значительно больше потоков на одном сервере. Для Flussonic Coder в этом поле вы выбираете устройство для транскодирования потока.

Чтобы [автоматически распределять множество потоков между GPU](transcode-with-nvidia-card.md#transcode-with-nvidia-card), добавьте для каждого потока в конфигурационном файле опцию `deviceid=auto` в `transcoder`.

Deinterlace — устраняет чересстрочность. Читайте подробнее об этой опции здесь.

Для Nvidia эта опция представляет две опции в файле конфигурации (deinterlace и deinterlace_rate), которые используются вместе. Существуют следующие отношения между выбранным значением в поле Deinterlace и значениями этих опций в файле конфигурации:

Deinterlace в UI Опции в файле Метод деинтерлейса Nvidia
off deinterlace=false, deinterlace_rate=frame weave
on deinterlace=true, deinterlace_rate=frame adaptive
on double rate deinterlace=true, deinterlace_rate=field adaptive
adaptive deinterlace=adaptive, deinterlace_rate=frame adaptive
adaptive double rate deinterlace=adaptive, deinterlace_rate=field adaptive

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

GOP size — количество кадров в группе кадров GOP. Читайте подробнее об этой опции здесь.

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

Warning

При транскодировании нескольких потоков на Nvidia NVENC убедитесь, что опция Improve the transcoder performance by running it as part of Flussonic имеет одинаковое значение на всех потоках.

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

Добавить настройки видеодорожки в транскодер можно тремя способами:

  • Нажмите кнопку Add video track и (опционально) выберите битрейт, чтобы появился диалог настройки параметров видео.
  • Чтобы получить на выходе видео с теми же характеристиками, что и на входе, отметьте Copy from input.
  • Чтобы продублировать указанные вами настройки в новую видеодорожку, кликните Duplicate.

transcoding options

Кроме того, вы можете скопировать все настройки транскодера в другие потоки.

После того, как вы добавили видеодорожку, вы сможете редактировать ее настройки. Чтобы развернуть настройки кодирования дорожки, щелкните стрелку:

transcoding options

Все параметры находятся на одном экране:

transcoding options

  • Width — ширина итогового видео в плеере на экране в пикселях.
  • Height — высота итогового видео в плеере на экране в пикселях.
  • SAR (X:Y) — соотношение ширины дисплейного представления к ширине пиксельного представления. Подробнее о SAR читайте здесь.
  • Resize — стратегия изменения размеров (ресайза) видео до указанных размеров Height (и Width).
  • Background — цвет фона — области в плеере, не заполненной видео после ресайза. Указывается только для стратегии 'fit'.
  • Bitrate — видео-битрейт дорожки.
  • Codec (H.264|H.265|MP2V|AV1) — видео-кодек. По умолчанию H.264.
  • Profile (baseline|main|high) — профиль выходного видео в зависимости от кодека. Профиль позволяет предположить, может ли видео проигрываться на каком-либо устройстве.
  • Interlace — используется для получения потока с чересстрочным кодированием из прогрессивного. Подробнее об опции interlace читайте здесь.
  • Preset — влияет на качество и скорость доставки. Подробнее о пресетах читайте здесь.
  • B-frames — значения 0|1|2|3|4 соответствуют последовательностям кадров: IP|IBP|IBBP|IBBBP|IBBBBP.
  • Open GOP — разрешает транскодеру разбивать выходной поток на GOP с немного различающимся количеством кадров, но в районе заданного в опции GOP size. Эта настройка применима только к транскодированию на процессоре. Иногда это помогает уменьшить трафик.
  • Refs — референсные кадры, использующиеся при межкадровой компрессии для ссылок на последующие кадры. Лучшее качество видео будет при большем количестве референсных кадров.
  • Level — может использоваться для совместимости с устаревшими устройствами проигрывания.
  • Logo

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

    transcoding options

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

Полный список параметров с актуальными описаниями см. в API reference.

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

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

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

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

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

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

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

Опции транскодирования можно указать в конфигурационном файле Flussonic /etc/flussonic/flussonic.conf.

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

Указывать опции транскодирования необходимо в следующем порядке:

  1. глобальные опции,
  2. опции видео (обязательные и необязательные) для каждого трека,
  3. опции аудио (обязательные и необязательные).

Пример настройки транскодера для потока example:

stream example {
  input fake://fake;
  transcoder vb=2048k size=1280x720 preset=slow ab=128k;
}

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

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

Опции транскодера для анаморфного видео

Транскодер поддерживает анаморфные видеопотоки путем учета соотношения сторон пикселя. Для настройки используйте опции size и sar:

Читайте подробное описание опций size и sar в списке опций транскодера на этой странице.

Подробнее об обработке опций size и sar читайте в списке опций транскодера на этой странице.

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

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

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

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

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

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

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

Схему API для всех опций транскодера можно найти в справочнике API.

Глобальные опции:

hw

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

deinterlace

deinterlace — конвертирует чересстрочное видео в прогрессивное.

В чересстрочном видео нечетные и четные строки кадра демонстрируются как отдельные поля. Сначала на экране отображаются нечетные строки, затем – четные. Два таких поля вместе составляют один видеокадр. Чересстрочное видео хорошо подходит для вещания, т.к. изображения могут демонстрироваться на экране с низкой пропускной способностью. Но у чересстрочного видео также есть и недостаток: при быстром движении видео может быть нечетким, т.к. в один момент времени захватывается лишь часть изображения, и по краям видеокадра могут быть заметны искажения.

В прогрессивном же видео нечетные и четные строки отображаются одновременно, то есть видеокадр отображается на экране целиком.

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

В UI этой опции соответствует поле Deinterlace.

deinterlace_rate

deinterlace_rate — для Nvidia NVENC можно удалять второе поле, получившееся после устранения чересстрочности, предотвращая тем самым повышенный битрейт.

  • deinterlace_rate=frame — из последовательности полукадров 1a 1b 2a 2b 3a 3b, получаются кадры 1a1b 2a2b 3a3b. При этом fps остается прежним.
  • deinterlace_rate=field — из полукадров 1a 1b 2a 2b 3a 3b формируются 1a1b 1b2a 2a2b 2b3a. fps увеличивается после транскодирования в два раза.

В случае использования Nvidia NVENC обе опции (deinterlace и deinterlace_rate) добавляются в файл конфигурации при выборе вами какого-либо значения в поле Deinterlace. Существуют следующее соответствие между выбранным значением в поле Deinterlace и значениями опций в файле конфигурации:

Deinterlace в UI Опции в файле Метод деинтерлейса Nvidia
off deinterlace=false, deinterlace_rate=frame weave
on deinterlace=true, deinterlace_rate=frame adaptive
on double rate deinterlace=true, deinterlace_rate=field adaptive
adaptive deinterlace=adaptive, deinterlace_rate=frame adaptive
adaptive double rate deinterlace=adaptive, deinterlace_rate=field adaptive

crop

crop — позволяет обрезать видео.

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

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

gop

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

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

fps

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

Опции видео

vb

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

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

Warning

При формировании мультибитрейтного потока мы не рекомендуем использовать одновременно vb=copy и численное значение vb=NUMk в параметрах транскодера. Иначе у ваших зрителей могут возникнуть проблемы с проигрыванием потока, например, зависание потока на конечном устройстве.

preset

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

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

Список поддерживаемых пресетов:

  • veryfast
  • medium
  • slow

Пресет по умолчанию — medium.

size

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

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

logo — позволяет наложить логотип. Логотип добавляется до изменения размера изображения видео нашим транскодером. Это значит, что при значительном изменении размера выходного видео логотип может заметно исказиться.

Подробнее о наложении логотипа

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

Подробнее о наложении логотипа

vcodec

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

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

refs

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

bframes

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

sar

sar — изменяет соотношение сторон видео. Применяется, чтобы из анаморфного видео получить не-анаморфное. Используется вместо устаревшего aspect, но с отличиями.

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

Пиксельную ширину входного видео надо умножить на SAR (X:Y), чтобы получить дисплейную ширину. Этот параметр можно использовать (иногда вместе со стратегией изменения размера) если нужно получить видео для отображения на нестандартном дисплее. Фактически меняет параметры анаморфности.

В пользовательском интерфейсе sar представлен в расширенных опциях видео.

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

Warning

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

Flussonic исходя из sar вычисляет разрешение выходного видео. Видео с внутренней пиксельной шириной 720 и sar=16:11 будет на выходе из Flussonic иметь дисплейную ширину 1048. Картинка такой ширины, в пикселях дисплея, будет при воспроизведении в плеерах.

force_original_aspect_ratio (не использовать)

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

Пример:

vb=2048k size=1280x720 force_original_aspect_ratio=true

disable_cgop

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

interlace

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

Возможные значения опции: interlace=tff|bff|tff_separated|bff_separated|mbaff|true

Если опция отсутствует в конфигурации, то на выходе останется progressive. Если просто включить опцию без указания метода получения чересстрочного видео (interlace=true), то будет использован метод по умолчанию (свой для каждого вида транскодера). Можно указать и другой метод.

  • tff — interlaced, top field first, interleaved field store. Используется c hw=qsv, nvenc.
  • bff — interlaced, bottom field first, interleaved field store. Используется c hw=qsv, nvenc.
  • tff_separated — interlaced, top field first, separated fields. Используется c hw=qsv.
  • bff_separated — interlaced, top field first, separated fields. Используется c hw=qsv.
  • mbaff — interlaced libx264 MBAFF method. Используется только c hw=cpu.
  • true — включить чересстрочную развертку методом по умолчанию для используемого энкодера (метод mbaff используется по умолчанию для hw=cpu, метод tff — для hw=qsv, nvenc).

rc_method

rc_method используется для создания выходного видео с постоянным битрейтом, подходящего для трансляции в телевизионные сети.

Опция принимает значения:

  • rc_method=cbr — энкодер создаст поток, совместимый с DVB-C.
  • rc_method=vbr — не кодировать поток для совместимости с DVB-C.

На данный момент использование этой опции потребляет много ресурсов (одно ядро ​​ЦП для одного потока MPTS с CBR).

Опции аудио

ab

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

acodec

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

ar

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

ac

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

avol

avol — громкость звука на выходе. Это может быть значение в Дб (с "+" или "-"), которое будет добавлено к громкости на входе, либо коэффициент, на который нужно умножить громкость на входе. Подробнее см. Как изменить уровень громкости звука?.

split_channels

split_channels — если значение этой настройки равно true, каждый аудиотрек с несколькими каналами будет разбиваться на несколько моно-треков.

Прожиг текста, времени и субтитров

Настройки

Настройки прожига текста, времени и субтитров можно указать через API или в файле конфигурации одним из следующих способов:

  • Как глобальный параметр транскодера. Этот вариант соответствует параметру API transcoder.global.burn (в конфигурационном файле — задается перед всеми видео дорожками vb). Текст, время или субтитры, прожигаемые таким образом, будут добавлены во все дорожки, которые выдает на выход транскодер.
  • Как настройку транскодирования конкретного потока. Этот вариант соответствует параметру API transcoder.video.burn (в конфигурационном файле — задается после соответствующего параметра vb). Текст, время или субтитры, прожигаемые таким образом, будут добавлены только в соответствующую дорожку. Настройка потока имеет приоритет над глобальной настройкой.

Общий синтаксис для опции burn:

burn=<filter>@<text:pos:x:y>@font:<ttf:size:color:alpha>@box:<border:color:alpha>

Здесь:

  • filter — time|sub|text
  • text — дорожка с субтитрами (например, t1) — для sub, какой-либо текст (для text), %T или %F или их комбинация (для time).
  • text:pos:x:y — pos — расположение (буквенное обозначение расположения — см. ниже), x:y — смещение вправо или влево (х) и вверх или вниз (y) к центру. Смещение не может быть отрицательным числом.
  • font: — ttf — файл шрифта TTF, color — цвет, alpha — прозрачность (используйте значения от 0.1 до 1.0, 0.0 — полностью прозрачно, 1.0 — полностью непрозрачно).
  • box: — border — ширина отступа от границы бокса до текста в нем, color — цвет, alpha — прозрачность (используйте значения от 0.1 до 1.0, 0.0 — полностью прозрачно, 1.0 — полностью непрозрачно).

Краткий вариант опции burn:

  • burn=time выведет время в дефолтном формате
  • burn=sub выведет WebVTT субтитры из дорожки t1
  • burn=text выведет пустую строку (позднее можно установить текст при помощи API)

Правила:

  • Первая группа (<filter>) является обязательной, остальные группы не обязательные (text, font, box).
  • Первый параметр в каждой группе является обязательным (text, font, box).
  • Порядок параметров должен соблюдаться.
  • Отсутствующие параметры будут заменены на значения по умолчанию: size — 16, color — black для box, white для font, border — 6, alpha — 0.8, ttf — FiraCode-Regular.ttf.
  • Можно одновременно использовать несколько видов опции burn (например, burn=text и burn=time), но нельзя использовать один и тот же тип дважды для одной дорожки.

Ниже более подробное описание с примерами.

burn=time

burn=time — добавляет время. При желании вы можете указать смещение времени относительно времени сервера Flussonic, по умолчанию смещение = 0.

Дополнительно можно настроить отображение времени — шрифт (font) и расположение на экране (box) — см. Настройки отображения.

Примеры настроек:

  • burn=time@offset+3 — выведет время в дефолтном формате YYYY-MM-DD HH:MM:SS в зоне +3 часа от времени сервера Flussonic.
  • burn=time@%Toffset-3:tr@box — выведет время в формате HH:MM:SS в зоне -3 часа в темном боксе в правом верхнемм углу (tr = top right)
  • burn="time@%F -- %Toffset-2:c@font:FiraCode-Regular.ttf:26:green:0.8@box:yellow:12:0.6" — выведет время в формате YYYY-MM-DD -- HH:MM:SS в зоне -2 часа в центре кадра с дополнительными настройками шрифта и бокса.
  • burn=time@%F:cb:0:200@font:default@box — время в формате YYYY-MM-DD по центру снизу со смещением на 200 вверх.

burn=sub

burn=sub — записывает субтитры в поток (dvb_teletext, dvb_subtitles или closed captions).

Вначале необходимо извлечь субтитры в текстовый вид, чтобы передать их на вход транскодеру. Например, в случае closed captions для этого используется опция cc.extract.

Дополнительно можно настроить отображение субтитров — шрифт (font) и расположение на экране (box) — см. Настройки отображения.

Пример опции:

burn="sub@t1:cb:10:10@font:Arial-Regular.ttf:30:white:1.0"

Здесь:

  • sub указывает, что следует взять субтитры из входного потока (dvb_teletext, dvb_subtitles или closed captions) и "прожечь" субтитры в выходной поток.
  • t1 — номер дорожки WebVTT субтитров.
  • cb (central bottom = внизу по центру) — расположение субтитров.
  • 10:10 — сдвиг по горизонтали и по вертикали к центру относительно указанного буквами расположения.
  • font:FONT_NAME.ttf — шрифт. См. настройки отображения шрифтов ниже после примера.
  • 30 — размер шрифта.
  • white — цвет шрифта.
  • 1.0 — прозрачность текста (используйте значения от 0.1 до 1.0, 0.0 — полностью прозрачно, 1.0 — полностью непрозрачно).

Пример прожига для потока, который содержит closed captions:

stream example {
  input udp://239.0.0.1:1234 cc.extract;
  transcoder vb=3000k burn="sub@t1:cb:0:80@font:default:35:white:1.0" vcodec=h264 open_gop=false preset=veryfast size=1920x1080:scale:#000000 vb=1800k burn="sub@t1:cb:0:80@font:default:25:white:1.0" vcodec=h264 open_gop=false preset=veryfast size=-1x720:scale:#000000 ab=128k;
}

В примере мы извлекаем closed captions с помощью опции cc.extract. Вам могут потребоваться другие опции, а не эта.

Note

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

burn=text

burn=text — записывает указанную текстовую строку.

Дополнительно настроить отображение текста — шрифт (font) и расположение на экране (box) — см. Настройки отображения.

Пример опции для добавления текста в конкретную дорожку:

transcoder vb=3500k burn=text@Hello:tr@box:green ab=64k;

Шрифт

  • Flussonic поддерживает шрифты .ttf
  • Flussonic ищет указанный в параметрах файл шрифта в подкаталоге font каталога /etc/flussonic/. Т.е. вы можете поместить файл сюда: /etc/flussonic/font/SomeFont.ttf
  • Если файл шрифта, указанный в параметрах, отсутствует в /etc/flussonic/font/, автоматически будет применен дефолтный шрифт FiraCode-Regular.ttf, который входит состав Flussonic.
  • Если шрифт у вас лежит в другой директории, можно указать в качестве параметра полный путь к файлу шрифта. Например, укажем путь к одному из системных шрифтов:
font:/usr/share/fonts/truetype/freefont/FONT_NAME.ttf:50:white:1.0
  • Можно явно указать шрифт по умолчанию: font:default:30:white:1.0. Будет использован FiraCode-Regular.ttf, однако если вы скопируете в директорию со шрифтами /etc/flussonic/font/ файл шрифта с именем default, то будет использоваться он.

Примеры:

font:default:50 — дефолтный шрифт с размером 50

font:default:24@box — дефолтный шрифт с размером 24 в боксе с размерами по умолчанию

font:default:26:blue — указан размер и цвет

font:default:26:blue:0.9 — указаны размер, цвет, прозрачность

Расположение

Дополнительно можно указать место на экране, где будут отображаться данные.

  • tl — top left — левый верхний угол
  • tr — top right — правый верхний угол
  • bl — bottom left — левый нижний угол
  • br — bottom rigth — правый нижний угол
  • c — center — посередине
  • ct — center top — вверху по центру
  • cb — center bottom — внизу по центру

Вместе с этими обозначениями можно указать смещение по горизонтали и вертикали от указанного расположения:

  • cb:10:200 — текст будет расположен по центру внизу кадра со смещением x=10 (вправо) и y=200 (вверх)
  • Смещения по умолчанию равны 10. Смещения могут быть положительными числами или 0.

Пример:

burn=time@%F:cb:0:200@font:default@box — время в формате YYYY-MM-DD по центру снизу со смещением на 200 вверх.

Note

Для обработки и отображения шрифтов Flussonic использует библиотеку libfreetype, которая включена в набор библиотек, предоставляемый пакетом flussonic-transcoder-base. Для рендеринга текста в CPU и Nvenc транскодерах используется фильтр ffmpeg drawtext