Skip to content

RTSP

media.ingest.rtsp

Описание

Sapsan забирает видео с IP-камер и других RTSP-источников в режиме клиента (pull).

Настройка

Настройка выполняется через API central. Фрагмент конфигурации стрима:

streams:
  - name: cam1
    inputs:
    - rtsp:
        url: rtsp://admin:password@10.0.0.5:554/stream0
        peer_timeout_ms: 5000

Параметры

Параметр Описание
url адрес камеры; логин и пароль — в URL
peer_timeout_ms таймаут неактивности источника, после которого вход считается упавшим
via_agent принять поток через агента Peeklio (agent://ID), если камера за NAT — см. шлюз Peeklio

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

Поддерживаются Basic и Digest (с автоматическим откатом на Basic, если камера отвергла Digest). Учетные данные берутся из URL и не светятся в запросах к камере в открытом виде при Digest.

Варианты транспорта

RTP/AVP/TCP (interleaved): медиаданные передаются внутри RTSP TCP-соединения.

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

Кодек определяется по SDP источника, а возможность приёма — также по упаковке кадров в RTP. Для следующих форматов реализована отдельная обработка полезной нагрузки:

Кодек Имя в SDP / RTP Условия приёма
H.264 H264 Сборка одиночных NAL, агрегированных пакетов STAP-A и фрагментов FU-A
HEVC / H.265 H265, HEVC Сборка одиночных NAL и фрагментов FU; агрегированные пакеты AP в этом входе не разбираются
AV1 AV1 Сборка temporal unit из RTP-пакетов; конфигурация поступает в sequence header самого потока
AAC MPEG4-GENERIC Упаковка AAC-hbr с заголовками AU; параметры кодека передаются в config SDP
AAC в LATM MP4A-LATM cpresent=0, конфигурация StreamMuxConfig в config SDP; упаковка LATM снимается при приёме
G.711 A-law PCMA В том числе статический RTP payload type 8
G.711 μ-law PCMU В том числе статический RTP payload type 0

MPEG4-GENERIC и MP4A-LATM здесь обозначают способы передачи AAC по RTP, а не два дополнительных аудиокодека. Поэтому отдельного пункта «MPEG-4 Audio» рядом с AAC нет. Форматы упаковки описаны в RFC 3640 и RFC 6416.

Для остальных распознаваемых медиадорожек действует ограниченный режим: полезная нагрузка пакетов объединяется до RTP marker-бита без разбора специфичных для кодека RTP-заголовков. Это относится к следующим именам SDP:

  • Opus: opus.
  • JPEG / MJPEG: JPEG.
  • VP9: VP9.
  • Линейный PCM: L16.
  • MPEG Audio: MPA и MP3.
  • Несжатое видео: raw.

Совместимость такого источника зависит от его упаковки и использования marker-бита. Распознавание имени в SDP само по себе не гарантирует корректного приёма стандартной RTP-пакетизации этих форматов. VP8 в RTSP-входе не распознаётся и в список поддерживаемых кодеков не входит.

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

Состояние входа и причина отказа доступны в статистике стрима. При обрыве или отсутствии кадров действует общий механизм повторных подключений и переключения на резерв.

Применение изменений

Смена url или via_agent перезапускает источник; смена только peer_timeout_ms применяется на лету.

Счётчики

Ниже — точные имена полей протокольной статистики. counter накапливает события, gauge показывает текущее значение; список включает оба вида. Нулевые поля могут отсутствовать в ответе. API и Prometheus используют разные проекции: весь список не следует ожидать в одном ответе Admin API. Доступ к детализации зависит от лицензии на счётчики.

Общие показатели входа: bytes, frames, errors, warnings. Они суммируют данные протокола, поэтому складывать их с протокольными счётчиками повторно не нужно.

Rtsp

Поле Тип
bytes counter
reads counter
frames counter
errors counter
warnings counter
broken_interleaved counter
desync counter
memory_bytes gauge

RtpChannel

Поле Тип
channel_id label
rtp_packets counter
rtcp_packets counter
bytes counter
frames counter
pt_reject_count counter
pt_reject_bytes counter
ts_goes_backwards counter
ts_jump_forward counter
ts_stuck counter
errors_dts_stuck counter
sr_ts_stuck counter
ts_stuck_restarts counter
resync_sr counter
marker_packets_count counter
no_marker_mode_flag gauge
errors_broken_payload counter
errors_lost_packets counter
errors_dropped_packets counter
errors_late_packets counter
errors_incomplete_frames counter
nack_count counter
onvif_buffer_overflow counter
onvif_seq_gap counter
onvif_marker_mismatch counter
onvif_resync_dropped counter

Прочее

Проверка

Откройте http://server/streaming/v/cam1/index.m3u8 в плеере или запросите скриншот http://server/streaming/live-preview-jpeg/cam1.

Что дальше