Перейти к содержанию

Работа с RTPS-сервером#

RTSP-сервер позволяет получать цветное изображение с подключённой камеры в виде сетевого видеопотока. Одновременно могут быть доступны два потока:

  • HD — поток исходного или повышенного разрешения;
  • SD — поток разрешением 640×480.

RTSP-сервер работает независимо от основного канала обработки кадров. Включение трансляции не изменяет формат данных, передаваемых в основной алгоритм обработки.

Общий принцип работы#

RTSP-сервер запускается вместе с RSEngine, если он включён в конфигурации. Фактическое создание видеопотоков выполняется после получения первого корректного цветного кадра от камеры.

Первый кадр используется для определения:

  • доступного разрешения;
  • возможности создания HD-потока;
  • необходимости включения SD-потока;
  • формата выходного изображения;
  • доступного аппаратного H.264 энкодера;
  • фактической частоты кадров камеры.

Кодирование начинается только после подключения RTSP-клиента. Если клиентов нет, RSEngine не выполняет лишнее преобразование и кодирование изображений.

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

RTSP-трансляция поддерживается для:

  • Intel RealSense D415;
  • Intel RealSense D435;
  • Orbbec Gemini E;
  • Orbbec Gemini UW.

Примечание: Для других камер RTSP может быть недоступен. При этом основная функциональность камеры и RSEngine продолжает работать штатно.

Особенности Orbbec Gemini UW#

Orbbec Gemini UW работает с более низкой частотой кадров, чем остальные поддерживаемые камеры.

В RTSP-режиме ожидается:

  • цветной поток до 1280×960;
  • фактическая частота около 10 FPS;
  • отсутствие дополнительного ограничения по target-fps, если входной поток уже работает не на 30 FPS.

Это штатное поведение и не является ошибкой RTSP-сервера.

Ориентация изображения#

RTSP получает изображение с учётом настроенного поворота камеры.

Если в конфигурации задан поворот на 90°, 180° или 270°, в RTSP передаётся уже повернутое изображение.

После поворота разрешение может поменять ориентацию. Например, изображение 1280×960 при повороте на 90° становится 960×1280.

Подключение к RTSP#

При локальном запуске:

rtsp://127.0.0.1:8554/HD
rtsp://127.0.0.1:8554/SD

При подключении с другого компьютера:

rtsp://<IP-адрес-компьютера>:8554/HD
rtsp://<IP-адрес-компьютера>:8554/SD

Если в именах endpoint используются шаблоны, необходимо использовать итоговые имена, указанные в логе.

FFplay#

Рекомендуемый вариант проверки:

ffplay -rtsp_transport tcp \
  -fflags nobuffer \
  -flags low_delay \
  rtsp://127.0.0.1:8554/HD

Для SD:

ffplay -rtsp_transport tcp \
  -fflags nobuffer \
  -flags low_delay \
  rtsp://127.0.0.1:8554/SD

GStreamer#

gst-launch-1.0 \
  rtspsrc location=rtsp://127.0.0.1:8554/HD protocols=tcp latency=0 \
  ! decodebin \
  ! videoconvert \
  ! autovideosink

VLC#

Не все сборки VLC содержат полноценный RTSP-клиент. В частности, некоторые дистрибутивные сборки VLC могут быть собраны без live555.

Если поток работает через FFplay, но не открывается через VLC, необходимо проверить состав конкретной сборки VLC. Такая ситуация не обязательно означает ошибку RTSP-сервера или H.264-потока.

Ленивый запуск и клиенты#

RTSP-сервер использует несколько уровней отложенной инициализации:

  1. RTSP включается через конфигурацию.
  2. Параметры потоков определяются после первого корректного кадра.
  3. Кодирование начинается после подключения клиента.
  4. При отключении всех клиентов неиспользуемое кодирование останавливается.
  5. При новом подключении передача возобновляется автоматически.

Поэтому включённый RTSP-сервер без клиентов должен потреблять меньше вычислительных ресурсов, чем при активной трансляции.

Поведение при переподключении#

Поддерживаются:

  • повторные подключения клиента;
  • одновременное подключение к HD и SD;
  • несколько последовательных подключений;
  • отключение клиента без остановки RSEngine;
  • новое подключение после длительного отсутствия клиентов.

При закрытии клиента RTSP-сервер освобождает связанный с ним медиаконтекст. Камера и основной конвейер RSEngine продолжают работать.