Skip to content

Публикация SRT

media.publish.srt

Источник сам подключается к Sapsan и передаёт стрим. Это публикация; клиентский захват с удалённого сервера относится к media.ingest.

Это базовая функция публикации на одном сервере, без кластерной маршрутизации. Для работы с несколькими серверами предназначена отдельная функция SRT Streamkey: она будет выбирать стрим и разрешать публикацию по переданному секретному ключу. Эта функция планируется и пока не реализована.

Настройка

streams:
- name: studio
  srt_publish:
    port: 9000
    passphrase: verysecretpass
    latency_ms: 120

Адрес отправителя: srt://server:9000?passphrase=verysecretpass. Порт принадлежит конкретному стриму. srt_publish подразумевает вход publish; записывать его отдельно не требуется. latency_ms задаёт приёмную задержку, по умолчанию 120 мс. streamid не выбирает стрим: его определяет порт.

Аутентификация

Допуск и шифрование определяются passphrase стрима (10–79 байт). Токены auth.publish_tokens и streamid не участвуют в допуске SRT-публикации. Без passphrase порт принимает незашифрованные соединения.

Транспорт

MPEG-TS через SRT/UDP. Порт srt_publish.port принимает соединения отправителя.

Поддерживаемые кодеки

  • H.264
  • HEVC / H.265
  • AV1
  • JPEG 2000
  • MPEG-2 Video
  • AAC (ADTS)
  • AC-3
  • E-AC-3
  • MPEG Audio (Layer II / III)
  • SMPTE ST 302M

MPEG-TS — контейнер, а SRT, RIST, UDP и HTTP — способы его доставки. Перечень относится к извлечению кадров из MPEG-TS, а не к декодированию или поддержке этих кодеков плеером.

AV1 распознаётся по stream_type 0x06 и регистрационному дескриптору AV01 в PMT; один PES должен содержать целый temporal unit. MPEG-TS с AV1 без этой сигнализации не поддерживается. Для AAC реализован разбор ADTS; наличие stream_type 0x11 само по себе не означает поддержку LATM. Opus может быть распознан в PMT, но текущий PES-разборщик не выдаёт его кадры.

Поведение при ошибках

Одновременно стрим принимает одну активную публикацию. При завершении соединения источник становится недоступным, и применяются общие правила резервирования. Повторное подключение инициирует отправитель.

Если выше publish расположен работающий источник, RTMP- или SRT-кодер принимается как резерв. Возврат основного источника через чистое окно сохраняет кодер подключённым резервом. Второму кодеру отказывают, даже пока первый в резерве или ещё не передаёт пригодных кадров. При переходе на видеопубликацию сервер ждёт следующий ключевой кадр; для audio-only — пригодный аудиокадр. Действуют обычные таймауты источника и транспорта.

streams:
- name: studio
  srt_publish:
    port: 9000
    passphrase: verysecretpass
  inputs:
  - rtsp:
      url: rtsp://camera/main
  - publish: {}

Что дальше