Skip to content

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

Источник — это то, откуда 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 и M4S

Мы рекомендуем протоколы M4F и M4S для передачи между серверами Flussonic. Это внутренние Flussonic-to-Flussonic протоколы.

M4F — сегментный протокол, рекомендуемый для любых задач телевидения, для массовых видеотрансляций. M4F подходит для репликации DVR архива, для рестриминга отдельных потоков в кластере.

  • m4f://FLUSSONIC_HOST:PORT/STREAM_NAME — синтаксис
  • m4f://flussonic.example.com/channel_01 — пример

О протоколе M4F

M4S — это протокол потоковой передачи в реальном времени, идеально подходящий для рестриминга видео в реальном времени, например видеозвонков, для потоковой передачи видеоигр с низкой задержкой между серверами Flussonic.

  • m4s://FLUSSONIC_HOST:PORT/STREAM_NAME — синтаксис
  • m4s://flussonic.example.com/channel_01 — пример

M4S позволяет захватывать из источника только определенные дорожки:

  • m4s://FLUSSONIC_HOST/STREAM_NAME/tracks-v2a1 — захват 2-й видеодорожки и 1-й аудиодорожки.

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

SPTS (Single-Program Transport Stream)

  • udp://MULTICAST-IP:PORT program=N — синтаксис (захват по UDP), где параметр program указывает номер программы N
  • 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 юникаст по указанному адресу.
  • udp://224.0.0.251:1234?sources=192.168.0.12 — захват SSM (Source Specific Multicast)

MPTS (Multiprogram Transport Stream)

  • mpts-udp://MULTICAST-IP:PORT program=N — синтаксис (захват по UDP), где параметр program указывает номер программы N
  • mpts-udp://224.0.0.251:1234 program=2001 — захват указанной программы мультикаст-потока. О том, что такое MPTS, читайте на странице MPTS.

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.

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

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

stream origin {
  input fake://fake;
}
stream input_hls {
  input hls://localhost:80/origin/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 — пример настоящей ссылки

Вы можете использовать опцию tracks=1 для захвата только видео дорожки.

stream fake {
  input fake://fake;
}
stream input_rtsp {
  input rtsp://localhost/fake tracks=1;
}

RTMP

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

Example:

stream clock {
 input fake://fake;
}
stream input_rtmp {
 input 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

  • shoutcast://example.com/radio.acc
  • shoutcasts://example.com/radio.acc

SHOUTcast - протокол для передачи аудио потоков через HTTP-соединения. Используйте схему shoutcast:// чтобы захватить SHOUTcast и ICEcast радио-потоки, а shoutcasts:// для HTTPS-источников.

SRT

Flussonic поддерживает захват потоков по протоколу SRT. В этом случае Flussonic выполняет роль SRT Caller, инициируя соединение.

Давайте рассмотрим способы настройки захвата по SRT.

Глобальный порт

Чтобы настроить захват потока по протоколу SRT во Flussonic через глобальный порт, необходимо указать URL:

Warning

Имя потока в streamid обязательно.

  • Параметры SRT в параметрах URL:

srt://SRT-SOURCE:SRT_PORT streamid="#!::m=request,r=STREAM_NAME"

  • Параметры SRT в URL query string:

srt://SRT-SOURCE:SRT_PORT?streamid=#!::m=request,r=STREAM_NAME

, где:

  • SRT-SOURCE — IP-адрес сервера-источника SRT-сигнала.

  • SRT_PORT — SRT-порт сервера-источника SRT сигнала.

  • r=STREAM_NAME — имя потока для захвата.

Например:

stream ingest_srt {
  input srt://SRT-SOURCE:8888 streamid="#!::m=request,r=srt_stream";
}

В примере выше мы настроили глобальный порт 8888 для захвата потока srt_stream.

Порт потока

Для захвата SRT-потока Flussonic укажите URL в следующем виде:

Note

Имя потока в streamid указывать необязательно.

  • Параметры SRT в параметрах URL:

srt://SRT-SOURCE:SRT_PORT streamid="#!::m=request"

  • Параметры SRT в URL query string:

srt://SRT-SOURCE:SRT_PORT?streamid=#!::m=request

Рассмотрим пример:

stream ingest_srt {
  input srt://SRT-SOURCE:7777 streamid="#!::m=request";
}

В примере выше мы настроили захват по протоколу SRT через порт потока 7777.

Flussonic также позволяет Вам управлять захватом SRT с помощью некоторых параметров.

Параметры для управления захватом потоков по SRT

В таблице ниже приведены параметры для управления захватом потоков по протоколу SRT:

Параметры Тип данных Описание Пример
streamid строка Строка, задаваемая в сокете перед подключением. Максимальная длина составляет 512 символов. Значение по умолчанию — пустая строка (""). streamid="#!::r=pub,m=publish"
minversion 0xXXYYZZ или x.y.z Минимальна версия SRT, требуемая от пира. По умолчанию значение равно (0x010000) или 1.0.0.. minversion=1.1.0.
version 0xXXYYZZ или x.y.z Необходимая для установления соединения версия SRT. По умолчанию значение равно (0x010000) или 1.0.0.. version=1.3.0.
enforcedencryption булево значение Если значение равно true, то отправитель и получатель должны иметь один и тот же пароль (включая пустую строку, иными словами, без защиты). Если пароли не совпадают или только одна из сторон использует защиту, то соединение разрывается. По умолчанию значение параметра равно true. enforcedencryption=false
passphrase строка Пароль для защиты передачи данных. Длина пароля должна быть не менее 10 и не более 79 символов. Значение по умолчанию — пустая строка (""). passphrase=9876543210
timeout секунды Если равно -1 , то время отправки данных не ограничено. Поведение по умолчанию. timeout=-1
linger секунды Время ожидания получения данных сокетом. По умолчанию равно 180(подставляется автоматически в зависимости от вида передачи данных). linger=1
connect_timeout секунды Время ожидания подключения. По умолчанию значение равно 0. connect_timeout=2
latency миллисекунды Время ожидания, необходимое на доставку пакета данных от отправителя к получателю. По умолчанию равно 120. latency=100

Пример с passphrase:

stream ingest_srt {
  input srt://SRT-SOURCE:9999 passphrase=0987654321 streamid="#!::m=request";
}

или:

stream ingest_srt {
  input srt://SRT-SOURCE:9999?streamid=#!::m=request&passphrase=0987654321;
}

В примере выше мы настроили защищённый порт 9999 с помощью passphrase.

Кроме того, Вы можете передать в streamid потока:

  • u=USERNAME — имя пользователя, используемое Flussonic в качестве токена при авторизации в сессии захвата.

  • a=USER_AGENT — агент пользователя, также используемый при авторизации в сессии захвата.

H323

  • h323://192.168.100.150

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

Плата DVB-S

  • input 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 {
  input fake://fake;
}
stream example {
  input tshttp://localhost:80/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 origin {
  input file://vod/subs.ts;
}
stream example {
  input tshttp://localhost:80/origin/mpegts subtitles=drop;
}

Note

Для 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 {
  input tshttp://localhost:8080/example1/mpegts lang.default=eng lang.a1=eng lang.a2=rus;
}
stream example1 {
  input file://vod/multilang2.ts;
}

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

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

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

stream example {
  input tshttp://source:80/stream user_agent="VLC"
}

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

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

Эти параметры находятся на странице дополнительных параметров Input > Options в веб-интерфейсе.