Skip to content

Публикация по SRT

Flussonic поддерживает публикацию видео по протоколу SRT.

SRT (Secure Reliable Transport) — это транспортный протокол потоковой передачи данных на основе UDP. Он имеет встроенный механизм для минимизации потери пакетов данных для непрерывного проигрывания потока, что необходимо в случаях, когда перебои в трансляции или её задержка критичны.

При публикации потока Flussonic выполняет функцию SRT Listener, выступая в качестве принимающей стороны.

В этой статье написано как можно настроить публикацию во Flussonic Media Server по протоколу SRT.

1. Укажите порт для SRT во Flussonic

Настроить публикацию во Flussonic Media Server по протоколу SRT можно в конфигурационном файле или через веб-интерфейс Flussonic UI.

Note

В веб-интерфейсе Flussonic UI вы сможете настроить только глобальный порт.

В конфигурационном файле

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

  • Разрешить публикацию и проигрывание для всех SRT-потоков через один порт (глобальная настройка).

Укажите номер порта в параметре srt PORT_NUMBER:

srt 9998;
stream mysrt {
  input publish://;
}

Используйте следующий URL для публикации потока:

srt://FLUSSONIC-IP:SRT_PORT?streamid=#!::r=STREAM_NAME,m=publish

Warning

При публикации по SRT важно сохранять последовательность символов #!::r при указании streamid.

, где:

  • (обязательный) FLUSSONIC-IP — IP-адрес сервера Flussonic.
  • (обязательный) SRT_PORT — порт SRT.
  • (обязательный) r=STREAM_NAME — имя потока.
  • (обязательный) m=publish — режим публикации.

Подробное описание параметра streamid смотрите здесь.

  • Разрешить только публикацию для SRT-потоков через один порт. В этом случае вы можете использовать указанный порт только для публикации (глобальная настройка).

Укажите номер порта в настройке srt_publish { port PORT_NUMBER; }:

srt_publish {
  port 9998;
}
stream mysrt {
  input publish://;
}

Используйте следующий URL для публикации потока:

srt://FLUSSONIC-IP:SRT_PORT?streamid=#!::r=STREAM_NAME

, где:

  • (обязательный) FLUSSONIC-IP — IP-адрес сервера Flussonic.
  • (обязательный) SRT_PORT — порт SRT.
  • (обязательный) r=STREAM_NAME — имя потока.

Note

В этом случае указывать режим публикации m=publish необязательно, поскольку по указанному порту итак разрешена только публикация.

  • Разрешить публикацию и проигрывание потока или группы потоков через один порт. В этом случае вы можете использовать один порт для публикации и проигрывания SRT-потоков или групп SRT-потоков (локальная настройка).

Укажите номер порта в параметре srt PORT_NUMBER в настройках потока (stream) или шаблона (template):

stream mysrt {
  input publish://;
  srt 9998;
}

Для публикации потока используйте следующий URL:

srt://FLUSSONIC-IP:SRT_PORT?streamid=#!::m=publish

, где:

  • (обязательный) FLUSSONIC-IP — IP-адрес сервера Flussonic.
  • (обязательный) SRT_PORT — порт SRT.
  • (обязательный) m=publish — режим публикации.

  • Разрешить только публикацию для SRT-потоков или групп SRT-потоков через один порт. В этом случае вы можете использовать указанный порт только для публикации SRT-потоков или групп SRT-потоков (локальная настройка).

Укажите номер порта в настройке srt_publish { port PORT_NUMBER; } в настройках потока (stream) или шаблона (template):

stream mysrt {
  input publish://;
  srt_publish {
  port 9998;
 }
}

Для публикации потока используйте следующий URL:

srt://FLUSSONIC-IP:SRT_PORT

Warning

Если вы определяете одновременно глобальные и локальные настройки, последние имеют больший приоритет и применяются первыми.

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

2. Укажите дополнительные параметры для публикации по SRT

Ниже приведён список параметров для для управления публикацией по SRT (указываются внутри srt_publish):

Параметры Тип данных Описание Пример
minversion x.y.z Минимальна версия SRT, требуемая от пира. Значение по умолчанию — 1.0.0. minversion 1.3.0
version x.y.z Необходимая версия SRT. Значение по умолчанию — 1.0.0. version 1.3.0
enforcedencryption булево значение Если значение равно true, то отправитель и получатель должны иметь один и тот же пароль (включая пустую строку, иными словами, без защиты). Если пароли не совпадают или только одна из сторон использует защиту, то соединение разрывается. По умолчанию значение параметра равно true. enforcedencryption 0
passphrase строка Пароль для защиты передачи данных. Длина пароля должна быть не менее 10 и не более 79 символов. Значение по умолчанию — пустая строка (""). passphrase 9876543210
linger численное (в секундах) Время ожидания получения данных сокетом. По умолчанию равно -1 (подставляется автоматически в зависимости от вида передачи данных). linger 2
timeout численное (в миллисекундах) Если равно false, то время отправки данных не ограничено. Поведение по умолчанию. timeout 100

Кроме того инициатору публикации Flussonic отправляет в URL информацию об агенте (версии Flussonic) и идентификаторе сессии sessionId (самостоятельно их указывать не нужно).

Давайте рассмотрим пример с использованием параметра passphrase для защиты SRT-порта.

2.1. Использование дополнительных параметров: Защита глобального порта

Чтобы защитить глобальный порт, укажите значение параметра passphrase в настройке srt_publish {}:

srt_publish {
  port 9998;
  passphrase 0123456789;
}
stream pub {
  input publish://;
}

Дополнительные параметры указываются в строке запроса (query string) URL:

srt://FLUSSONIC-IP:SRT_PORT?passphrase=PASSWORD&streamid=#!::r=STREAM_NAME

Для нашего примера:

srt://FLUSSONIC-IP:9998?passphrase=0123456789&streamid=#!::r=pub,m=publish

2.2. Использование дополнительных параметров: Защита порта потока

Чтобы защитить порт в настройках потока или шаблона, укажите значение параметра passphrase в настройке srt_publish {}:

stream pub {
  input publish://;
  srt_publish {
    port 9998;
    passphrase 0123456789;
  }
}

Дополнительные параметры указываются в строке запроса (query string) URL:

srt://FLUSSONIC-IP:SRT_PORT?passphrase=PASSWORD

В нашем случае URL выглядит так:

srt://FLUSSONIC-IP:9997?passphrase=0123456789

Через веб-интерфейс Flussonic UI

Для того, чтобы включить публикацию SRT-потока через веб-интерфейс:

Note

Так вы сможете настроить только глобальный порт.

1) Перейдите в Config -> Settings и укажите номер порта в поле SRT port раздела Protocols:

UI поле srt

2) Затем перейдите во вкладку Media и кликните на кнопку Add рядом с разделом Streams. Затем укажите имя потока в поле Stream name и URL publish: // в поле Source URL. После этого нажмите Create, чтобы сохранить настройки:

UI srt публикация

3) Нажмите на ваш поток (mysrt в примере выше) и перейдите на вкладку Input. Там вы найдёте URL для публикации потока следующего вида:

srt://FLUSSONIC-IP:SRT_PORT?streamid=#!::r=STREAM_NAME

, где:

  • FLUSSONIC-IP — IP-адрес сервера Flussonic.
  • SRT_PORT — порт SRT.
  • STREAM_NAME — имя потока.

UI srt URL для публикации

3. Начните публиковать поток в Flussonic

Вы можете использовать ffmpeg, чтобы протестировать публикацию:

/opt/flussonic/bin/ffmpeg -re -i PATH_TO_VIDEO -c copy -y -f mpegts 'srt://FLUSSONIC-IP:SRT_PORT?pkt_size=1316&streamid=#!::r=STREAM_NAME,m=publish'

, где:

  • FLUSSONIC-IP — IP-адрес сервера Flussonic.
  • SRT_PORT — порт SRT.
  • STREAM_NAME — имя потока.
  • m=publish — режим публикации.

OBS srt