Ретрансляция потока (push)¶
Sapsan может активно отправлять поток дальше: на CDN и стриминговые площадки по RTMP, на другой сервер по SRT или RIST, в сеть по UDP (мультикаст/юникаст). У потока может быть несколько пушей одновременно.
Настройка¶
Пуши стрима — это отображение «имя пуша — настройка», а не список. Имя уникально в пределах стрима и служит ключом: по нему пуш находят в конфигурации, в статистике и в метриках. Протокол у пуша ровно один.
streams:
- name: tv1
inputs:
- udp: {host: 239.0.0.1, port: 5000}
pushes:
youtube:
rtmp:
url: rtmp://a.rtmp.youtube.com/live2/xxxx-xxxx
backup-dc:
srt:
host: 203.0.113.10
port: 9000
passphrase: verysecretpass
local-multicast:
udp:
host: 239.1.1.1
port: 5500
| Протокол | Параметры |
|---|---|
rtmp |
url, connect_timeout_ms |
srt |
host, port, passphrase, stream_id, таймауты |
rist |
host, port, cache_ms, retransmit_rate_percent, ttl, multicast_interface |
udp |
host, port — MPEG-TS в мультикаст или юникаст |
Имя пуша — это его идентичность. Переименование не переносит ни настройку, ни накопленные счётчики: старый пуш исчезает, новый начинает с нуля.
У пуша по UDP, SRT или RIST может быть своя секция mpegts — собственные номер программы, PID дорожек и SDT только для этого пуша: настройка выходного MPEG-TS.
Возможности и поведение¶
- RTMP-пуш умеет H264+AAC, HEVC и AV1 (enhanced RTMP), потоки только с аудио; таймстемпы при пуше начинаются с нуля, как ждут CDN.
- Ошибки пуша различаются и видны в статусе: отказ соединения, таймаут соединения, отказ публикации (
NetStream.Publish.BadName— ключ занят или неверен), зависший сервер (таймаут записи кадров). - SRT-пуш при несовпадении
passphraseполучает отказ рукопожатия; молчание приемника (нет ACK) фиксируется как peer timeout.
Переподключение¶
Собственной политики повторов у пушера нет — его переподнимает стрим. Раз в пять секунд стрим сверяет работающие отправки с конфигурацией и заменяет умершего пушера новым; счётчик reconnects считает именно такие замены. Поэтому отправка на недоступный адресат не «сдаётся» и не требует ручного перезапуска: она будет подниматься, пока пуш включён.
Что реконнектом не считается:
- правка настройки пуша — пушер тоже перезапускается, но это решение оператора, а не отказ канала;
- выключение и включение (
enabled: false) — выключение не удаление: настройка и накопленные счётчики остаются, отправки нет.
Выключение и удаление¶
Выключенный пуш остаётся в конфигурации со своим именем: статистика показывает его со статусом «выключен», счётчики заморожены на последних значениях, включение продолжает счёт с них же. Удаление ключа удаляет и статистику: счётчики привязаны к имени.
Note
TODO: выбор дорожек для пуша (какое качество уходит).
Мониторинг¶
У каждого пуша своя статистика — адресат, статус, причина отказа, скорость, байты, ошибки, реконнекты. Разбор полей, серии Prometheus и рецепты алертинга — на странице Статистика.