Skip to content

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

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

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

В SRT реализованы три режима: Caller, Listener и Rendezvous. При публикации Flussonic выполняет функцию Listener. Режим Rendezvous пока ещё не реализован во Flussonic.

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

Сначала необходимо указать порт для публикации — глобальный или для конкретного потока.

Глобальный порт — порт, указанный вне настроек конкретного потока. Является основным слушающим портом.

Порт потока — порт, указанный в рамках настроек конкретного потока.

Давайте рассмотрим как можно настроить публикацию по SRT.

Через файл конфигурации

Настроить глобальный порт и порт потока можно через конфигурационный файл Flussonic

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

Укажите глобальный порт и настройте поток для публикации в файле конфигурации (/etc/flussonic/flussonic.conf) следующим образом:

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

или с помощью srt_publish:

srt_publish {
  port 9998;
}

stream mysrt {
  input publish://;
}

Формат URL для публикации выглядит следующим образом:

  • srt://SRT-SOURCE:SRT_PORT?pkt_size=1316&streamid=#!::r=STREAM_NAME,m=publish

Warning

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

Warning

Обязательно укажите имя потока в streamid. Так Flussonic понимает, какой поток публиковать.

URL для публикации через порт 9998 в нашем примере:

  • srt://FLUSSONIC-IP:9998?pkt_size=1316&streamid=#!::r=mysrt,m=publish

Для тестирования публикации по SRT Вы можете использовать ffmpeg.

*Пример публикации по SRT c использованием утилиты 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'

*При публикации из OBS используется следующий формат URL: *

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

, где:

  • FLUSSONIC-IP — IP-адрес сервера Flussonic.

  • SRT_PORT — порт SRT.

  • STREAM_NAME — имя потока.

OBS srt

Порт потока

Вы можете указать порт для публикации конкретного потока через srt_publish в настройках этого потока:

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

В примере выше мы настроили порт 9998 для публикации SRT-потока. URL будет выглядеть следующим образом:

Note

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

  • srt://FLUSSONIC-IP:9998?pkt_size=1316&streamid=#!::m=publish

Вот так будет выглядеть публикация по протоколу SRT с помощью ffmpeg:

/opt/flussonic/bin/ffmpeg -re -fflags +genpts -stream_loop -1 -i PATH_TO_VIDEO -c copy -y -f mpegts 'srt://FLUSSONIC-IP:9998?pkt_size=1316&streamid=#!::m=publish'

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

Параметры для публикации по SRT

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

Параметры Тип данных Описание Пример
minversion 0xXXYYZZ или x.y.z Минимальна версия SRT, требуемая от пира. По умолчанию значение равно (0x010000) или 1.0.0.. minversion 1.3.0.
version 0xXXYYZZ или x.y.z Необходимая версия SRT. По умолчанию значение равно (0x010000) или 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 (самостоятельно их указывать не нужно).

Помимо параметров m= и r= в streamid Вы также можете указать:

  • s= — это source id. FLussonic использует это поле как одно из идентификационных полей событий publish-сессии.

  • password= — это пароль для авторизации в publish-сессии.

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

Защита глобального порта

srt_publish {
  port 9998;
  passphrase 0123456789;
}

stream pub {
  input publish://;
}

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

Формат URL для публикации по такому порту имеет следующий вид:

  • srt://SRT-SOURCE:SRT_PORT?pkt_size=1316&passphrase=PASSWORD&streamid=#!::r=STREAM_NAME,m=publish

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

  • srt://SRT-SOURCE:9998?pkt_size=1316&passphrase=0123456789&streamid=#!::r=pub,m=publish

Защита порта потока

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

Общая структура URL:

  • srt://SRT-SOURCE:SRT-PORT?pkt_size=1316&passphrase=PASSWORD&streamid=#!::m=publish

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

  • srt://SRT-SOURCE:9998?pkt_size=1316&passphrase=0123456789streamid=#!::m=publish

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

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

Note

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

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

UI поле srt

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

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

  1. Нажмите на Ваш поток (mysrt в примере выше) и перейдите на вкладку Input. Там Вы найдёте URL для публикации потока следующего вида:
srt://FLUSSONIC-IP:SRT_PORT#!::r=STREAM_NAME

, где:

  • FLUSSONIC-IP — IP-адрес сервера Flussonic.

  • SRT_PORT — порт SRT.

  • STREAM_NAME — имя потока, которое Вы указали на шаге 2. В нашем примере это — mysrt.

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

Таким способом Вы укажете глобальный порт для публикации.

Теперь Вы знаете как настроить публикацию потока по протоколу SRT во Flussonic.