Skip to content

Транскодер

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

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

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

Транскодер работает со всеми видами источников, которые Flussonic может захватывать.

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

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

Содержание:

Important

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

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

Depending on the configuration, a single server can process from 5 to 20 channels.

Важно

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

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

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

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

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

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

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](transkoder/apparatnoe-transkodirovanie-na-nvidia-nvenc.md#transcoder-hardware-transcoder-page), добавьте для каждого потока в конфигурационном файле опцию `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. Читайте подробнее об этой опции здесь.

  • FPS — частота кадров (Frames per second).

Caution

GOP size и FPS теперь указываются для всех дорожек в потоке, а не для каждой дорожки. Однако файл конфигурации поддерживает и новое, и старое поведение: если в файле конфигурации эти параметры следуют за второй или любой последующей видеодорожкой, они применяются только к этой дорожке. Если же эти параметры указаны после самой первой видеодорожки или предшествуют всем дорожкам, они применяются ко всем дорожкам.

  • 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.

Caution

При транскодировании нескольких потоков на 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) — видео-кодек.

  • 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 с набором опций транскодирования.

Указывать опции транскодирования необходимо в нужном порядке. Сначала идут глобальные опции, затем – опции видео (обязательные и необязательные) для каждого трека, и наконец опции аудио (обязательные и необязательные). Разные типы опций показаны на схеме внизу разным цветом:

  • голубой цвет – обязательные опции видео,
  • желтый цвет – обязательные опции аудио,
  • белый цвет – глобальные опции, а также необязательные опции видео и аудио.

Транскодер

Пример настройки транскодера для потока 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 — задает частоту кадров. Указывается отдельно для каждого видеопотока.

seamless=true

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

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

Если вы транскодируете на CPU или Nvidia NVENC, то плавная смена источника происходит автоматически, это поведение по умолчанию. Начиная с версии Flussonic 20.07, эти транскодеры умеют не терять ни одного кадра при изменении характеристик входного потока.

Однако для других аппаратных транскодеров (Intel Quick Sync) может потребоваться настроить плавную смену источника. С помощью опции seamless=true транскодер "бесшовно" переключается на другой исходный формат без потери кадров. При изменении размера изображения это достигается за счет транскодирования всех источников с одинаковым размером, который вы указали в опции size. Если size не указан, то размер будет как у самого первого источника, который был получен на вход транскодера.

Опции видео

vb

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

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

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. Указывается отдельно для каждого видеопотока.

Кодек 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.

Caution

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

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

  • false - это значение по умолчанию, на выходе останется progressive.

  • 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 - используется для создания выходного видео с постоянным битрейтом, подходящего для трансляции в телевизионные сети.

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

В транскодере Flussonic мы решили ряд проблем по обеспечению совместимости видеопотока с такими требованиями.

Энкодер Flussonic использует комбинацию методов: 1) чтобы все кадры соответствовали разрешенному размеру; 2) если кадры занимают меньше байтов, чем требуется, - чтобы заполнить кадры данными до требуемого размера. Таким образом, Flussonic анализирует поток до каждого отдельного кадра и создает видео, полностью совместимое с DVB-C.

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

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

  • rc_method=vbr - не кодировать поток для совместимости с DVB-C.

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

См. также о том, как применять опции rc_method и interlace:

Опции аудио

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, каждый аудиотрек с несколькими каналами будет разбиваться на несколько моно-треков.

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

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). Можно настраивать для каждой видеодорожки.

Вначале необходимо извлечь субтитры в текcтовый вид, чтобы передать их на вход транскодеру. Например, в случае 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 — номер дорожки субтитров.
  • 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. Вам могут потребоваться другие опции, а не эта.

Important

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

burn=text

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

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

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

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

Настройки отображения субтитров, времени и текста

Общий синтаксис для опции 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 выведет субтитры из дорожки 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

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

Шрифт

  • 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

Other options

b-pyramid=strict

b-pyramid=strict — используйте для плавного воспроизведения DVB-T потоков на устройствах с чипсетом MSD7802+MSB1236C, если вы транскодируете их на базе центрального процессора и используете 'interlace=true'. Эта опция устанавливает последовательность полукадров в чересстрочном видео в 'top_first'.