Skip to content

SRT Egress

Mcaster поддерживает отправку видеопотоков по протоколу SRT. SRT (Secure Reliable Transport) широко используется для доставки видео через интернет или спутниковые сети, так как гарантирует низкую задержку при обеспечении гарантий доставки контента.

Обзор

Модуль SRT Egress позволяет отправлять потоки из Mcaster на внешние серверы по протоколу SRT. Это особенно полезно для:

  • Доставки видеоконтента на удаленные серверы
  • Вещания в CDN сети
  • Спутниковой передачи
  • Распространения видео с низкой задержкой

Базовая конфигурация

Для настройки SRT egress используйте директиву push в конфигурации потока:

stream example_stream {
  input udp://239.0.0.1:1234;
  push srt://destination-server.com:9998 streamid="#!::r=stream-name,m=publish";
}

Форматы URL

SRT push URL могут быть настроены в двух форматах:

SRT параметры в URL параметрах

srt://SRT-HOST:SRT_PORT streamid="#!::r=STREAM_NAME,m=publish"

SRT параметры в строке запроса URL

srt://SRT-HOST:SRT_PORT?streamid=#!::r=STREAM_NAME,m=publish

Где: * SRT-HOST - IP адрес сервера назначения * SRT_PORT - номер SRT порта * STREAM_NAME - имя места публикации на сервере назначения

Примеры конфигурации

Простая SRT отправка

stream srt_output {
  input udp://239.0.0.1:1234;
  push srt://example.com:9998 streamid="#!::r=my-stream,m=publish";
}

SRT отправка с параметрами

stream srt_secure {
  input udp://239.0.0.1:1234;
  push srt://example.com:9998?streamid=#!::r=secure-stream&passphrase=1234567890;
}

Несколько SRT назначений

stream multi_srt {
  input udp://239.0.0.1:1234;
  push srt://server1.com:9998 streamid="#!::r=stream1,m=publish";
  push srt://server2.com:9999 streamid="#!::r=stream2,m=publish";
  push srt://server3.com:10000?streamid=#!::r=stream3&passphrase=secret123;
}

SRT параметры

Вы можете настроить различные SRT параметры для оптимальной производительности:

Параметры безопасности

  • passphrase - пароль шифрования для безопасной передачи
  • pbkeylen - длина публичного ключа для шифрования

Параметры производительности

  • latency - максимальная допустимая задержка
  • rcvbuf - размер буфера приема
  • sndbuf - размер буфера отправки
  • mss - максимальный размер сегмента

Пример с параметрами

stream optimized_srt {
  input udp://239.0.0.1:1234;
  push srt://example.com:9998?streamid=#!::r=optimized-stream&passphrase=secret&latency=120&rcvbuf=8192&sndbuf=8192;
}

Формат Stream ID

Параметр streamid следует определенному формату:

#!::r=STREAM_NAME,m=publish

Где: * r=STREAM_NAME - указывает имя потока на сервере назначения * m=publish - указывает режим (publish для отправки)

Сценарии использования

Распространение через CDN

stream cdn_output {
  input udp://239.0.0.1:1234;
  push srt://cdn-provider.com:9998 streamid="#!::r=live-channel,m=publish";
}

Спутниковая передача

stream satellite {
  input udp://239.0.0.1:1234;
  push srt://satellite-gateway.com:9998?streamid=#!::r=broadcast&passphrase=satellite-key;
}

Удаленная студия

stream remote_studio {
  input udp://239.0.0.1:1234;
  push srt://studio-server.com:9998 streamid="#!::r=studio-feed,m=publish";
}

Обработка ошибок

Модуль SRT Egress предоставляет автоматическую обработку ошибок:

  • Автоматическое переподключение при потере соединения
  • Механизмы повторных попыток для неудачных соединений
  • Логирование ошибок для диагностики
  • Плавная деградация при недоступности назначения

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

Mcaster также поддерживает воспроизведение SRT потоков с сервера. Это позволяет клиентам получать видеопотоки по протоколу SRT.

Базовая конфигурация SRT воспроизведения

Для настройки SRT воспроизведения для одного потока используйте блок srt_play в конфигурации потока:

stream example_stream {
  input udp://239.0.0.1:1234;
  srt_play {
    port 9998;
  }
}

Для воспроизведения потока клиенты используют следующий формат URL:

srt://SERVER-IP:SRT_PORT

Где: * SERVER-IP - IP адрес вашего сервера Mcaster * SRT_PORT - SRT порт, указанный для воспроизведения

Для примера выше URL воспроизведения будет: srt://localhost:9998

Комбинированная публикация и воспроизведение

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

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

Для воспроизведения используйте следующий формат URL:

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

Где: * m=request - указывает режим воспроизведения

URL для этого примера будет: srt://localhost:9998?streamid=#!::m=request

Глобальный SRT порт воспроизведения

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

srt_play {
  port 9998;
}
stream example_stream {
  input udp://239.0.0.1:1234;
}
stream another_stream {
  input udp://239.0.0.1:1235;
}

Для воспроизведения потоков через глобальный порт используйте следующий формат URL:

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

Где: * r=STREAM_NAME - указывает имя потока

Для примера выше: * example_stream: srt://localhost:9998?streamid=#!::r=example_stream * another_stream: srt://localhost:9998?streamid=#!::r=another_stream

SRT воспроизведение с параметрами

Вы можете настроить SRT воспроизведение с дополнительными параметрами:

stream secure_stream {
  input udp://239.0.0.1:1234;
  srt_play {
    port 9998;
    passphrase 0987654321;
  }
}

URL воспроизведения с параметрами:

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

Сводка форматов URL

URL воспроизведения Конфигурация Описание
srt://SERVER-IP:PORT srt_play { port PORT; } Один поток на порт
srt://SERVER-IP:PORT?streamid=#!::m=request srt PORT; Комбинированная публикация и воспроизведение
srt://SERVER-IP:PORT?streamid=#!::r=STREAM_NAME Глобальный srt_play Несколько потоков на порт
srt://SERVER-IP:PORT?streamid=#!::r=STREAM_NAME,m=request Глобальный srt_play + srt_publish Глобальный порт с потоками публикации