Перейти к основному содержимому

05-04-03 Получение RTSP-URL и запуск потока

05-04-03

Переход от управления к доставке видео

После успешного обнаружения ONVIF-камеры в сети и получения информации о её возможностях (включая поддерживаемые кодеки, разрешения и профили), следующим логическим шагом в жизненном цикле взаимодействия с устройством становится получение доступа к видеопотоку. На этом этапе задача программного клиента — получить точные параметры подключения к видеопотоку, чтобы передать их медиаклиенту (например, VLC, FFmpeg или собственному видеоплееру), который уже будет отвечать за приём, декодирование и отображение видео.


Как ONVIF помогает получить RTSP-URL

ONVIF предоставляет специальный сервис — Media Service, который содержит операции для получения параметров видеопотоков. Основная операция на этом этапе — GetStreamUri.

Запрос GetStreamUri

Чтобы получить ссылку на видеопоток, клиент отправляет SOAP-запрос к сервису Media камеры. В запросе указывается:

  • Профиль, для которого запрашивается поток (например, Profile_T0 — поток высокого разрешения).
  • Тип потока: Unicast (один клиент) или Multicast (несколько клиентов одновременно).

Пример структуры запроса:

<GetStreamUri>
<StreamSetup>
<Stream>Unicast</Stream>
<Transport>
<Protocol>RTSP</Protocol>
</Transport>
</StreamSetup>
<ProfileToken>Profile_T0</ProfileToken>
</GetStreamUri>

Камера отвечает RTSP-URL, по которому можно подключиться к потоку.


Пример ответа и интерпретация

Ответ от камеры может выглядеть так:

<GetStreamUriResponse>
<MediaUri>
<Uri>rtsp://192.168.1.100:554/stream1</Uri>
<InvalidAfterConnect>false</InvalidAfterConnect>
<InvalidAfterReboot>false</InvalidAfterReboot>
<Timeout>PT0S</Timeout>
</MediaUri>
</GetStreamUriResponse>

Разберём ключевые элементы:

  • <Uri> — сам RTSP-адрес. Это и есть ссылка, которую можно использовать в медиаплеере.
  • <InvalidAfterConnect> — указывает, станет ли URL недействительным после первого подключения. Если false, URL можно использовать повторно.
  • <InvalidAfterReboot> — становится ли ссылка невалидной после перезагрузки камеры.
  • <Timeout> — время жизни ссылки. PT0S означает «без ограничения по времени» (в формате ISO 8601).

Формат RTSP-URL: что означают его части

Типичный RTSP-URL имеет вид:

rtsp://[логин]:[пароль]@[IP-адрес]:[порт]/[путь]

Например:

rtsp://admin:password@192.168.1.100:554/cam/realmonitor?channel=1&subtype=0

Разберём по частям:

ЧастьОписание
rtsp://Протокол передачи видеопотока
admin:passwordУчётные данные (могут отсутствовать, если аутентификация не требуется)
192.168.1.100IP-адрес камеры
:554Порт RTSP (по умолчанию 554, но может отличаться)
/cam/realmonitor?channel=1&subtype=0Путь, определяемый производителем. Параметры могут указывать канал и тип потока (например, основной или дополнительный)

⚠️ Важно: ONVIF возвращает URL без логина и пароля. Эти данные нужно добавить вручную или получить из конфигурации клиента. Без них подключение может быть отклонено.


Запуск видеопотока: передача управления медиаклиенту

После получения RTSP-URL клиент (например, видеосервер или приложение) передаёт его медиаплееру — программе, способной работать с RTSP/RTP. На этом этапе ONVIF больше не участвует.

Медиаклиент выполняет следующие действия:

  1. Устанавливает TCP-соединение с камерой на порту RTSP.
  2. Отправляет команду DESCRIBE, чтобы получить SDP-описание потока (разрешение, кодек, параметры RTP).
  3. Запускает приём RTP-пакетов (обычно по UDP или TCP) с видео.
  4. Декодирует и отображает видео.

Пример команды в FFmpeg:

ffplay rtsp://admin:password@192.168.1.100:554/stream1

Типичные проблемы и их причины

ПроблемаВозможная причина
Нет ответа на GetStreamUriКамера не поддерживает Media Service или профиль отсутствует
RTSP-соединение не устанавливаетсяБлокировка порта 554 фаерволом, неправильные учётные данные
Поток обрываетсяПерегрузка сети, нехватка ресурсов на камере или клиенте
Видео не отображаетсяНеподдерживаемый кодек (например, H.265 при отсутствии декодера)

💡 Практический совет: Если поток не запускается, проверьте:

  • Доступность камеры по IP.
  • Открыт ли порт 554 (или другой, указанный в URL).
  • Поддерживает ли ваш медиаплеер кодек, используемый в выбранном профиле (например, H.264 или H.265).

Заключение

На этапе получения RTSP-URL завершается управляющая фаза взаимодействия с камерой через ONVIF. С этого момента ответственность за передачу видео переходит к медиапротоколам (RTSP/RTP) и медиаклиенту. ONVIF сыграл свою роль — он предоставил точные, стандартизированные параметры подключения, адаптированные под конкретную камеру и её настройки.

Этот механизм — яркий пример разделения ответственности в сетевых системах:

  • ONVIF отвечает за обнаружение, конфигурацию и управление,
  • RTSP/RTP — за доставку мультимедиа.

Такое разделение позволяет строить гибкие, масштабируемые системы видеонаблюдения, где управляющий и мультимедийный слои могут развиваться и обновляться независимо.