Публикация по 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:
2) Затем перейдите во вкладку Media и кликните на кнопку Add рядом с разделом Streams. Затем укажите имя потока в поле Stream name и URL publish: //
в поле Source URL. После этого нажмите Create, чтобы сохранить настройки:
3) Нажмите на ваш поток (mysrt
в примере выше) и перейдите на вкладку Input. Там вы найдёте URL для публикации потока следующего вида:
srt://FLUSSONIC-IP:SRT_PORT?streamid=#!::r=STREAM_NAME
, где:
FLUSSONIC-IP
— IP-адрес сервера Flussonic.SRT_PORT
— порт SRT.STREAM_NAME
— имя потока.
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
— режим публикации.