Skip to content

Воспроизведение SRT

Flussonic поддерживает проигрывание SRT-потоков.

Протокол SRT имеет несколько режимов работы: Caller (Инициатор), Listener (Слушатель) и Rendezvous. В парадигме Flussonic проигрывание можно соотнести с режимом Listener, поскольку Flussonic находится в ожидании соединения и при удачном его установлении, начинает взаимодействие с Инициатором (Caller).

Настройка SRT-порта обычно производится для одного потока, т. е. один SRT-поток на один порт. Кроме того, Flussonic предоставляет Вам способ настроить один SRT-порт для нескольких потоков. Например, если Вы используете протокол SRT для ретрансляции. Мы познакомим Вас с обоими способами.

Один SRT-поток на один порт

Чтобы настроить SRT-порт для проигрывания потока, используйте srt_play в настройках потока:

stream example_stream {
  input fake://fake;
  srt_play {
  port 9998;
  }
}

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

  • srt://FLUSSONIC-IP:SRT_PORT

, где:

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

  • SRT_PORT — порт для проигрывания.

Следовательно, применительно к нашему примеру ссылка будет следующая: srt://localhost:9988.

Таким образом, с помощью настройки srt_play Вы разрешаете проигрывать SRT-поток по указанному порту.

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

Чтобы узнать больше о публикации SRT-потоков во Flussonic, см. Публикация по SRT.

Чтобы настроить один порт одновременно для публикации и проигрывания потока, используйте опцию srt PORT_NUMBER:

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

В примере выше мы можем публиковать SRT-поток example_stream по порту 8888 и проиграть его по этому же самому порту, используя URL следующего формата:

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

, где:

  • m=request — режим для проигрывания.

streamid используется для того, чтобы указать режим m= для проигрывания потока example_stream, поскольку иначе неочевидно будем мы публиковать поток или проигрывать его.

Таким образом, URL для проигрывания потока example_stream будет выглядеть так: srt://localhost:8888?streamid=#!::m=request.

Flussonic позволяет не только использовать один SRT-порт для одного потока, разрешая проигрывание для этого потока, но и настроить один порт для проигрывания нескольких потоков.

Один SRT-порт для проигрывания нескольких потоков

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

srt_play {
  port 9998;
}
stream example_stream {
  input fake://fake;
}

Чтобы проиграть example_stream по SRT-порту 9999, используйте URL следующего вида:

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

, где:

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

Следовательно, для нашего примера ссылка выглядит так: srt://localhost:9999?streamid=#!::r=example_stream.

Рассмотрим пример. Допустим, Вам необходимо публиковать SRT-поток во Flussonic по отдельному определённому для публикации порту, а затем проигрывать этот поток наряду с несколькими другими. В таком случае конфигурация выглядит следующим образом:

srt_play {
  port 9998;
}
stream example_stream {
  input fake://fake;
}
stream another_stream {
  input publish://;
  srt_publish {
    port 8888;
  }
}

URL для проигрывания another_stream отличается от URL для example_stream и имеет следующий вид:

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

, где:

  • m=request — режим для проигрывания.

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

Тогда URL для проигрывания another_stream выглядит так: srt://localhost:9988?streamid=#!::r=another_stream,m=request.

Для вашего удобства мы собрали всё в одну таблицу:

URL для проигрывания Конфигурация Описание Пример URL
srt://FLUSSONIC-IP:SRT_PORT ```
stream example_stream {
input fake://fake;
srt_play {
port 9998;
}
}
``` Разрешает проигрывать только один поток для одного порта.
Поддерживается большинством плееров.
srt://localhost:9988
srt://FLUSSONIC-IP:SRT_PORT?streamid=#!::m=request ```
stream example_stream {
input publish://;
srt 9998;
}
``` Разрешает публиковать и проигрывать поток по одному и тому же порту. srt://localhost:8888?streamid=#!::m=request
srt://FLUSSONIC-IP:SRT_PORT?streamid=#!::r=STREAM_NAME ```
srt_play {
port 9998;
}
stream example_stream {
input fake://fake;
}
``` Разрешает проигрывать несколько потоков по одному SRT-порту. srt://localhost:9999?streamid=#!::r=example_stream
srt://FLUSSONIC-IP:SRT_PORT?streamid=#!::r=STREAM_NAME,m=request ```
srt_play {
port 9998;
}
stream example_stream {
input fake://fake;
}
stream another_stream {
input publish://;
srt_publish {
port 8888;
}
}
``` Разрешает проигрывать поток по глобально определённому порту при условии, что в настройках этого потока определён также и порт для публикации. srt://localhost:9988?streamid=#!::r=another_stream,m=request

Flussonic даёт возможность управлять проигрыванием потока с помощью параметров.

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

Ниже Вы можете найти таблицу с параметрами для управления проигрыванием потоков по SRT:

Параметры Тип данных Описание Пример
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

Пример с passphrase:

stream example_stream {
  input fake://fake;
  srt_play {
    passphrase 0987654321;
    port 9998;
  }
}

URL будет иметь следующий вид:

  • srt://FLUSSONIC-IP:9998?passphrase=0987654321&streamid=#!::m=request