Skip to content

Ретрансляция потока (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 и рецепты алертинга — на странице Статистика.

Что дальше