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 |
Глобальный порт с потоками публикации |