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

Содержание

Варианты источников

Источник — это то, откуда Flussonic получает поток видеоданных. Источником может быть IP камера, спутник, HTTP сервер и т.д. Для указания источника нужно знать его адрес и видео-протокол, по которому Flussonic получает данные, т.е. нужно знать URL.

Источник видео задаётся с помощью параметра url в настройках видеопотока. Ниже на этой странице показаны варианты URL для разных протоколов и иных видов источников.

Как не нужно указывать источник в параметре url

  • Flussonic Media Server не поддерживает тип источника http, и адрес источника вида http://host/path не будет работать. Требуется более детально указывать, что это — HTTP MPEG-TS, HLS или другой протокол.

  • В качестве источника не указывайте файл на сервере. Раздача файлов настраивается по-другому. Подробнее читайте в статье VOD — вещание файлов.

Важно. Для передачи видеоданных между серверами Flussonic Media Server мы рекомендуем использовать внутренний протокол Flussonic — M4F.

Содержание

M4F

Используется для передачи между серверами Flussonic. Например, подходит для репликации DVR архива, для рестриминга отдельных потоков в кластере.

  • m4f://hostname:port/stream — синтаксис
  • m4f://flussonic.example.com/channel_01 — пример

О протоколе M4F

MPEG-TS по HTTP

  • tshttp://hostname:port/stream — синтаксис (захват по HTTP)
  • tshttps://hostname:port/stream — синтаксис (захват по HTTPS)
  • tshttp://192.168.100.1/worldnews.ts — пример настоящего URL

MPEG-TS по UDP

  • udp://239.255.1.1:5500 — мультикаст URL
  • udp://239.255.1.1:5500/192.168.10.1 — захват мультикаста через указанный интерфейс
  • udp://192.168.0.1:12345 — юникаст URL. Где 192.168.0.1 адрес источника. Flussonic фильтрует входящий UDP юникаст по указанному адресу.

MPEG-TS по TCP

  • tstcp://192.168.0.1:54321

HLS

  • hls://HOSTNAME/PATH/TO/MANIFEST.m3u8 — синтаксис
  • hls://10.0.0.1/news.m3u8 — пример настоящего URL
  • hls://example.com/news/index.m3u8 — пример настоящего URL.
  • hlss://HOSTNAME/PATH/TO/MANIFEST.m3u8 — захват по HTTPS.

По умолчанию, используя hls://, Flussonic Media Server будет захватывать только одно из доступных качеств.

Для захвата мультибитрейтного источника укажите hls2://.

При запуске потока Flussonic Media Server проверяет, что источник не завис, скачивая несколько раз индекс.

Проверка может быть отключена с помощью опции skip_stalled_check:

stream ort {
  url hls://source:8080/stream/index.m3u8 skip_stalled_check=true;
}

RTSP

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

  • rtsp://hostname/path — синтаксис
  • rtsp://user:password@ip/path — URL с указанием авторизации
  • rtsp2://hostname/path — включает транскодирование звука в AAC. Подробнее
  • rtsp://192.168.0.100/h264 — пример настоящей ссылки

RTMP

  • rtmp://hostname/application/stream
  • rtmp://10.0.0.1/live/news

Example:

stream clock {
 url fake://fake;
}
stream input_rtmp {
 url rtmp://localhost:1935/static/clock;
}

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

Если название RTMP приложения на сервере состоит больше чем из одного сегмента, то в адресе надо указать два слэша для явного разделения на application и stream name.

File

  • file://vod-location/file.mp4 синтакс
  • file://vod/bunny.mp4 пример реального потока, подробнее о VOD путях читайте в статье

Flussonic может создать зацикленный поток из любого .mp4 или .ts файла, укажите адрес используя схему file://.

SHOUTcast

  • shout://example.com/radio

Схема shout:// позволяет захватить SHOUTcast и ICEcast радио-потоки.

H323

  • h323://192.168.100.150

Схема h323:// позволяет захватить видео по VoIP протоколу H323. Подробнее

Плата DVB-S

  • url mpts-dvb://a0 program=1234

Схема mpts-dvb:// позволяет захватывать видео с платы DVB-S напрямую во Flussonic. Подробнее

Таймшифт

  • timeshift://ipcam/3600
  • timeshift://news/10600

Схема timeshift:// позволяет создать поток, идентичный исходному (ipcam, news в примере), который будет вещаться из архива с заданным отставанием (в секундах).

Миксер

  • mixer://stream1,stream2

Схема mixer:// позволяет склеить видеодорожку из первого потока с аудиодорожкой из второго. Подробнее в отдельной статье.

Мозаика

  • mosaic://cam1,cam2,cam3,cam4?fps=20&preset=ultrafast&bitrate=1024k&size=340x240&mosaic_size=4

Схема mosaic:// позволяет собрать несколько потоков на один экран (мозаика). Подробнее в отдельной статье.

MPEG-TS опции

Для tshttp://, udp://, tstcp:// источников можно указать дополнительные опции.

Захват конкретной MPEG-TS программы и PID-ов

stream clock {
  url fake://fake;
}
stream example {
  url tshttp://localhost:8080/clock/mpegts program=1 pids=211;
}

Управление субтитрами

Вы можете управлять DVB-субтитрами в выходном потоке с помощью опции subtitles, которая имеет следующие значения:

  • drop — в выходном потоке не будет дорожки субтитров. Пример см. ниже.
  • accept — в выходном потоке будет дорожка с субтитрами в DVB формате, без преобразования в текст.
  • ocr_replace — в выходном потоке будет дорожка, содержащая субтитры, преобразованные в текстовый формат (WebVTT).
  • ocr_add — выходной поток будет иметь две дорожки субтитров: исходную дорожку с субтитрами в DVB и новую дорожку с текстовыми субтитрами.

Принятие субтитров

Flussonic Media Server по умолчанию всегда принимает субтитры от публикуемых потоков. Это справедливо как для публикаций в статический поток, так и по динамическому имени. Чаще всего не нужно явно указывать subtitles=accept.

Отклонение субтитров

Если субтитры в потоке не нужны, опцию subtitles следует установить в drop:

stream ort {
  url tshttp://SOURCE:8080/STREAM subtitles=drop;
}

Замечание. Для live-потоков субтитры всегда включены. Опция subtitles не поддерживается для live публикаций, и выключить субтитры в этом случае не получится.

Устаревшая опция allow_subtitles поддерживается только для обратной совместимости.

Конвертация субтитров

О распознавании и преобразовании DVB-субтитров см. Конвертация субтитров из DVB в WebVTT

Редактирование дескриптора Language в Program Map Table (PMT)

Если во входящем MPEG-TS потоке отсутствует дескриптор Language в аудио PID, могут возникнуть проблемы с воспроизведением на приставках, например, если там определенный язык был выбран как предпочтительный.

Flussonic 20.05 и выше позволяет устанавливать и редактировать дескриптор языка для аудио дорожек в выходном MPEG-TS потоке. Для этого используется опция lang в настройках входного потока. Необходимо перечислить коды языков в формате ISO 639:

stream example {
  url tshttp://HOST/input_stream.ts lang.a1=eng lang.a2=rus lang.default=eng;
}

Эта конфигурация добавляет дескрипторы языка в PMT выходного потока.

HTTP опции подключения

При подключении к источнику по HTTP-протоколам может потребоваться указать опредленный User-Agent:

stream example {
  url tshttp://source:8080/stream user_agent="VLC"
}

Чтобы указать HTTP заголовок, например, Referer:

stream example {
  url tshttp://source:8080/stream header.Referer=https://flussonic.com;
}

Передача Сlosed Сaptions в HLS и DASH

Flussonic позволяет передавать скрытые субтитры CEA-608/708 из входного MPEG-TS:

  • в формате WebVTT — для HLS
  • в формате WebVTT и TTML — для DASH.

Поток можно транскодировать с сохранением closed captions выходном потоке.

Чтобы использовать эту функцию, добавьте параметр closed_captions=PID к URL-адресу потока.

Для MPEG-TS:

stream example_stream {
  url tshttps://HOST/STREAM/mpegts closed_captions=211;
}

Для HLS:

stream example_stream {
  url hlss://HOST/STREAM/index.m3u8 closed_captions=211;
}

Для обозначения расположения субтитров на видео используйте опцию

substyle valign=top|middle|bottom align=left|center|right, например:


После преобразования в выходном HLS потоке присутствуют скрытые субтитры в формате WebVTT:

Flussonic closed captions

Выбор субтитров для проигрывания по DASH

Поскольку в манифест DASH включены два формата субтитров, вы можете выбрать один из них при проигрывании выходного потока:

https://HOST/STREAM/index.mpd?text=wvtt

or

https://HOST/STREAM/index.mpd?text=ttml (TTML используется по умолчанию)