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.