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

Переход от управления к доставке видео
После успешного обнаружения 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.100 | IP-адрес камеры |
:554 | Порт RTSP (по умолчанию 554, но может отличаться) |
/cam/realmonitor?channel=1&subtype=0 | Путь, определяемый производителем. Параметры могут указывать канал и тип потока (например, основной или дополнительный) |
⚠️ Важно: ONVIF возвращает URL без логина и пароля. Эти данные нужно добавить вручную или получить из конфигурации клиента. Без них подключение может быть отклонено.
Запуск видеопотока: передача управления медиаклиенту
После получения RTSP-URL клиент (например, видеосервер или приложение) передаёт его медиаплееру — программе, способной работать с RTSP/RTP. На этом этапе ONVIF больше не участвует.
Медиаклиент выполняет следующие действия:
- Устанавливает TCP-соединение с камерой на порту RTSP.
- Отправляет команду
DESCRIBE, чтобы получить SDP-описание потока (разрешение, кодек, параметры RTP). - Запускает приём RTP-пакетов (обычно по UDP или TCP) с видео.
- Декодирует и отображает видео.
Пример команды в 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 — за доставку мультимедиа.
Такое разделение позволяет строить гибкие, масштабируемые системы видеонаблюдения, где управляющий и мультимедийный слои могут развиваться и обновляться независимо.