Видеонаблюдение (RTSP-сервер)

Важно

Бета-версия 2.1. Описанное здесь есть только в бета-версии 2.1: она ставится из бета-репозитория и только с лицензией, в стабильной версии 2.0.2 и в демоверсии этого нет. Бета-версия поставляется без гарантий, поддержка — по возможности (Программа бета-тестирования).

С версии 2.1.0.485 узел может отдавать свои SPTS-потоки по RTSP — системам видеонаблюдения (VMS) и плеерам, например VLC и ffmpeg. С версии 2.1.0.493 по тому же адресу воспроизводится и архив потока. Сервер настраивается на экране «Видеонаблюдение» (Видеонаблюдение); в демоверсии его нет.

Прямой эфир

По умолчанию RTSP-сервер выключен: пока он выключен, узел не открывает RTSP-порт. Включённый сервер отдаёт каждый SPTS-поток узла; отдельного переключателя или списка доступа для потока нет. MPTS-потоки не отдаются.

Адрес потока:

rtsp://<хост>:<порт>/<поток>

Здесь <поток> — OTT-имя потока (то же, что в его адресах HLS, даже если OTT выключен) или его номер. Порт по умолчанию — 554.

  • Видео H.264 или H.265 со звуком AAC или AC-3 передаётся отдельными RTP-потоками; звук в других кодеках не передаётся.

  • Поток, видео которого не H.264 и не H.265 (например, MPEG-2) или в котором нет видео, передаётся целиком как MPEG-TS поверх RTP.

  • RTP идёт внутри TCP-соединения RTSP или, с версии 2.1.0.494, по UDP. По UDP видео отправляется только на адрес самого клиента; multicast не предлагается. Клиенту за NAT нужен TCP: большинство плееров переходят на него сами. Архив по UDP всегда идёт в реальном времени. До версии 2.1.0.494 на запрос UDP сервер отказывал, и VLC и ffmpeg сами переходили на TCP.

  • Воспроизведение начинается со следующего ключевого кадра.

Примечание

ffmpeg в роли записывающего клиента (-c copy) не может поставить метку времени первому кадру источника H.264 с B-кадрами. Плеер такой источник и показывает, и записывает.

RTSPS (RTSP поверх TLS)

С версии 2.1.0.494 сервер принимает и RTSPS — RTSP в зашифрованном TLS-соединении, на отдельном порту:

rtsps://<хост>:<порт RTSPS>/<поток>

RTSPS включается на экране «Видеонаблюдение» переключателем «RTSPS (RTSP поверх TLS)»; там же «Порт RTSPS», по умолчанию 322 (Видеонаблюдение). В настройках узла это ключи rtsps-enable и rtsps-port секции surveillance.

Серверу нужны сертификат и ключ в формате PEM: файлы surveillance.crt и surveillance.key в каталоге /opt/pss/config/cert. Без них RTSPS не запускается: узел сообщает об ошибке в состоянии сервера в HTTP API (/data/surveillance) и повторяет попытку каждые 10 с.

По RTSPS видео всегда идёт внутри зашифрованного соединения: на запрос UDP сервер отказывает, и клиент переходит на TCP. Открытым текстом ничего не передаётся.

Учётные записи каталога

С версии 2.1.0.497 к RTSP-серверу могут подключаться и учётные записи каталога LDAP или Active Directory. Для этого на экране «Видеонаблюдение» выберите «Аутентификация» — «Digest для логинов, Basic для каталога (только RTSPS)» (ключ rtsp-auth со значением 3) и включите RTSPS (RTSPS (RTSP поверх TLS)). Учётные записи каталога входят только по RTSPS и по Basic, внутри TLS. По обычному RTSP Basic не предлагается и не принимается: там входят только локальные RTSP-логины, по Digest. С версии 2.1.1.502 по RTSPS в этом режиме и локальные логины входят по Basic (внутри TLS); клиенту, который умеет только Digest, остаётся обычный RTSP с локальным логином. Каким группам разрешён RTSP и сколько сессий одновременно, задаёт «Доступ к RTSP по группам» (Зрители и RTSP через каталог). С версии 2.1.0.499 учётной записью каталога по RTSPS входят и системы видеонаблюдения и плееры на основе live555 (VLC, openRTSP и многие VMS).

Воспроизведение архива

С версии 2.1.0.493 архив потока воспроизводится по тому же RTSP-адресу, что и прямой эфир. Нужен поток, который пишет архив, то есть с заданным «Хранилищем DVR» (DVR: архив потока); без хранилища воспроизведения архива нет.

Системы видеонаблюдения запрашивают интервал времени в UTC (по правилам ONVIF):

  • каждый кадр приходит со своим временем записи;

  • архив идёт в реальном времени, а если клиент просит — с той скоростью, какую выдерживает сеть;

  • работают пауза, продолжение и переход к другому моменту.

Плееры (VLC, ffmpeg) открывают адрес с параметрами:

rtsp://<хост>:<порт>/<поток>?t=<время Unix>[&d=<секунды>]

t — начало, в секундах Unix (UTC). Ползунок перемотки работает. С d воспроизведение заканчивается через указанное число секунд.

Начало. Воспроизведение начинается с ключевого кадра в запрошенный момент или раньше него — до одного сегмента архива раньше. Если запрошенный момент раньше начала архива, воспроизведение начинается с начала архива.

Конец.

  • Если задан конец интервала (или d), воспроизведение на нём останавливается.

  • Если конец не задан, воспроизведение, догнав запись, переходит в прямой эфир.

  • Если запись остановилась (например, камера не работает), воспроизведение заканчивается на последнем записанном кадре.

Остановленная камера. Поток, от которого нет данных, всё равно можно открыть и воспроизвести его архив.

Ограничения:

  • Скорость только обычная: ускоренного и замедленного воспроизведения нет.

  • Поток, который передаётся целиком как MPEG-TS (без видео H.264 или H.265), доступен только в прямом эфире.

Открытые сессии видны на экране «Видеонаблюдение» (Видеонаблюдение) и в HTTP API (/data/surveillance, Управление через HTTP API): для каждой видно, прямой эфир это или архив, а для архива — момент последнего отданного кадра.