ONVIF работает, но URL-адрес RTSP не работает: поиск реального пути потока камеры

Почему обнаружение ONVIF может работать при сбое потока RTSP, и как отлаживать профили камер, URL-адреса мультимедиа, аутентификацию, транспорт и доказательства SDP.

onvif rtsp, URL-адрес rtsp, путь потока IP-камеры, диагностика камеры, sdp

Обычно IP-камера правильно отображается при обнаружении ONVIF, хотя URL-адрес RTSP по-прежнему не работает. Устройство видно в сети, имя и модель камеры определяется, может даже профили указаны, но собственно видеопоток не открывается. Пользователи ищут «ONVIF работает, но RTSP не работает», «камера обнаружена, но нет видео RTSP» или «как найти URL-адрес RTSP из ONVIF», потому что кажется, что успех обнаружения должен гарантировать успех потоковой передачи.

Это не так.

ONVIF и RTSP связаны во многих рабочих процессах камеры, но это не один и тот же протокол и они не доказывают одно и то же. ONVIF может сообщить вам, что камера существует, и предоставить профиль мультимедиа. RTSP по-прежнему должен аутентифицироваться, описывать поток, согласовывать транспортировку, настраивать треки RTP и доставлять медиапакеты.

Инспектор RTSP фокусируется на второй половине: что на самом деле происходит, когда используется определенный URL-адрес RTSP.

Что доказывает ONVIF

Открытие ONVIF может доказать, что:

  • Камера реагирует на WS-Discovery.
  • Камера предоставляет конечную точку службы ONVIF.
  • Клиент может получить доступ к интерфейсу управления камерой.
  • Камера может иметь один или несколько медиа-профилей.
  • Устройство может сообщать URI потока через медиа-службы ONVIF.

Это полезно, но это не то же самое, что доказательство работы потока RTSP. Обнаружение ONVIF может использовать другой порт, другой режим аутентификации и другой путь обслуживания, чем RTSP.

Камера может пройти обнаружение ONVIF и при этом не пройти RTSP, потому что:

  • RTSP отключен в настройках камеры.
  • Учетная запись ONVIF не имеет разрешения RTSP.
  • Возвращенный URI потока является неполным или предназначен только для внутреннего использования.
  • Порт RTSP заблокирован брандмауэром.
  • Камера требует чередующегося транспорта TCP, но клиент пытается использовать UDP.
  • Профиль указывает на H.265, но клиент ожидает H.264.
  • Путь к каналу NVR неправильный.
  • Камера возвращает SDP, но не отправляет пакеты RTP.

URI потока ONVIF может быть недоступен для прямого использования.

Некоторые камеры возвращают URI RTSP через ONVIF, который выглядит пригодным для использования, но все же требует модификации. Например:

rtsp://192.168.1.50/Streaming/Channels/101

The real usable URL may need:

ONVIF profile does not guarantee codec support

The symptom may be:

RTSP Inspector helps by separating the layers:

RTSP transport can fail after ONVIF succeeds

This is common when:

Authentication can differ between ONVIF and RTSP

You may see:

RTSP/1.0 401 Unauthorized
WWW-Authenticate: Digest realm="IP Camera", nonce="..."

хотя обнаружение ONVIF сработало. Это означает, что служба RTSP запрашивает учетные данные. Если клиент отправляет учетные данные, а камера продолжает возвращать «401», проверьте разрешения учетной записи, дайджест-аутентификацию, кодировку URL-адреса и права канала.

Сетевые видеорегистраторы усложняют ситуацию, поскольку устройством ONVIF может быть сетевой видеорегистратор, а путь потока RTSP ссылается на канал камеры позади сетевого видеорегистратора. Учетной записи может быть разрешено запрашивать сетевой видеорегистратор, но не выполнять потоковую передачу основного потока канала 1.

Путаница основного потока и подпотока

Многие камеры предоставляют несколько профилей:

  • Основной поток: высокое разрешение, высокий битрейт, часто H.265.
  • Дополнительный поток: более низкое разрешение, более низкий битрейт, часто H.264.
  • Мобильный поток: небольшой размер кадра и более низкая частота кадров.

ONVIF может возвращать один из этих профилей по умолчанию. URL-адрес RTSP, скопированный из форума или PDF-файла поставщика, может указывать на другой. Если основным потоком является H.265, но клиент поддерживает только H.264, подпоток может работать, в то время как основной поток не работает.

К этой категории часто относятся запросы типа «Основной поток RTSP не работает, дополнительный поток работает». Проблема не в открытии. Это выбор профиля, выбор кодека, битрейт или поведение транспорта.

Как отладить ONVIF работает, но RTSP не работает

Используйте многоуровневый контрольный список:

  1. Убедитесь, что служба RTSP камеры включена.
  2. Убедитесь, что порт RTSP (обычно 554) доступен клиенту.
  3. Получите профиль мультимедиа ONVIF и URI потока.
  4. Нормализуйте URL-адрес RTSP для сетевого пути, который вы фактически используете.
  5. Аккуратно добавляйте учетные данные и кодируйте специальные символы в URL-адресе.
  6. Запустите RTSP «ОПЦИИ» и «ОПИСАНИЕ».
  7. Проверьте проблемы аутентификации и ответы.
  8. Проверьте SDP на предмет кодека, типа полезной нагрузки, тактовой частоты и URL-адресов управления отслеживанием.
  9. Сравните чередующийся транспорт UDP и TCP.
  10. Подтвердите, что пакеты RTP приходят после PLAY.
  11. Проверьте непрерывность последовательности RTP, временные метки и тип полезной нагрузки.
  12. Тестируйте основной поток и дополнительный поток отдельно.

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

Что должна показать трассировка RTSP

Здоровый поток RTSP обычно выглядит так:

OPTIONS rtsp://camera/stream RTSP/1.0
RTSP/1.0 200 OK

DESCRIBE rtsp://camera/stream RTSP/1.0
RTSP/1.0 200 OK
Content-Type: application/sdp

SETUP rtsp://camera/stream/trackID=1 RTSP/1.0
RTSP/1.0 200 OK
Transport: RTP/AVP/TCP;unicast;interleaved=0-1

PLAY rtsp://camera/stream RTSP/1.0
RTSP/1.0 200 OK

Final diagnosis

<!-- rtsp-localized-evidence-foundation-v1:start -->

Воспроизводимая проверка темы «ONVIF работает, но URL-адрес RTSP не работает: поиск реального пути потока камеры»

Краткий ответ: чёрный экран или одиночный код не доказывает источник сбоя. Надёжная диагностика связывает запрос и ответ RTSP, согласованный Transport, действующую Session, а затем номера последовательности RTP, временные метки и данные RTCP. Для «ONVIF работает, но URL-адрес RTSP не работает: поиск реального пути потока камеры» начните с уровня, ближайшего к симптому, но сохраняйте единую временную шкалу, чтобы не смешать управление, сеть и декодирование.

До изменения камеры, межсетевого экрана или VMS создайте небольшой базовый тест. Запишите RTSP URL без пароля, время, путь, запрошенный Transport, ответ сервера и момент первого медиапакета. Проверяйте UDP и TCP interleaved отдельно, если устройство поддерживает оба режима. Не меняйте одновременно путь, учётные данные и транспорт: иначе успешная вторая попытка не покажет решающую переменную.

Уровень Сохраняемое доказательство Вопрос
RTSP метод, статус, заголовки, CSeq и Session Сервер принял именно эту операцию?
SDP control, payload type, clock rate и codec Описана ожидаемая дорожка?
Transport client_port, server_port или interleaved Обе стороны используют один канал?
RTP SSRC, sequence, timestamp и marker Медиаданные идут в объяснимом порядке?
RTCP sender report, CNAME и BYE Часы, идентичность и конец прослеживаются?
Decoder SPS/PPS/VPS и packetization mode Полученный payload позволяет инициализацию?

Разделяйте «медиа не пришло» и «медиа пришло, но не декодируется». Отсутствие RTP после успешных SETUP и PLAY ведёт к проверке UDP, NAT, firewall и ответа Transport. Пробелы последовательности доказывают потерю или перестановку. Непрерывный RTP без изображения переводит расследование к payload type, clock rate, границам кадра и параметрам H.264 или H.265. Эта граница полезнее общего сообщения проигрывателя.

Как написать цитируемый ответ?

Используйте три предложения: последняя успешная операция, первое отсутствующее доказательство и следующий разделяющий тест. Пример: «DESCRIBE, SETUP и PLAY успешны; RTP не приходит на объявленные порты клиента; проверка TCP interleaved отделит блокировку UDP от неверного медиапути». Не обвиняйте камеру или сеть без ответа либо пакета, подтверждающего границу.

Что делает случай воспроизводимым?

Сохраните OPTIONS, DESCRIBE, SETUP и PLAY, SDP, ответ Transport и очищенный Session. Для RTP запишите SSRC, первый и последний sequence, clock rate, число пробелов и длительность. Результат VLC или другой VMS используйте как дифференциальный тест, а не как доказательство правильной реализации всех правил успешным клиентом.

Когда проверять сервер или клиент?

Проверяйте сервер при отказе метода, несуществующем control URL, несовместимом Transport или необъяснимой смене SSRC или часов. Проверяйте клиент при повторном старом nonce, потере Session, запросе UDP без открытых портов или трактовке каждого конца NAL как конца access unit. Для промежуточной неисправности каждому выводу нужны пакет и время.

Как проверить отчёт?

Повторите тест с нового соединения и сравните временные шкалы до первого отличия. Удалите пароли и полные Authorization. Свяжите выводы с CSeq, sequence или timestamp. Используйте связанный справочник RTSP, а RTSP Inspector — для локальной проверки RTSP-потока и сбора доказательств без загрузки видео в публичный сервис.

Добавьте явный критерий приёмки. На том же URL и с теми же учётными данными управляющие запросы должны завершиться ожидаемыми статусами, RTP — непрерывно идти по выбранному Transport, а после нужных параметров кодека должен восстановиться реальный кадр. Смена Session или SSRC после нового подключения сама по себе не является ошибкой; не объединяйте пакеты старой и новой сессии. Оставшуюся неопределённость формулируйте как непроверенный порт, трек, интервал времени или условие декодера, а не как общий «сбой камеры».

<!-- rtsp-localized-evidence-foundation-v1:end --><!-- rtsp-localized-layer-verdicts-v1:start -->

От наблюдения к проверяемому послойному выводу

Для «ONVIF работает, но URL-адрес RTSP не работает: поиск реального пути потока камеры» сначала запишите наблюдение, затем интерпретацию. Наблюдение другой инженер может найти в захвате: статус RTSP с CSeq, значение SDP, ответ Transport, пробел последовательности, смена SSRC или разница RTP timestamp и RTCP sender report. «Сервер медленный» или «кодек несовместим» остаётся гипотезой, пока конкретное доказательство не объяснит результат лучше альтернатив.

Разделите путь на границы. Сначала открывается TCP, затем принимается OPTIONS или DESCRIBE. SDP описывает рабочую дорожку, control URL, payload type и clock rate. SETUP требует совместимого Transport, PLAY — действующей Session. После этого проверяются приход RTP, порядок, время и готовность декодера. Остановитесь на первой границе без доказательства успеха.

В сравнении сохраняйте источник и интервал. UDP и TCP interleaved проверяйте с одним путём и учётными данными. Main stream и sub stream — одним клиентом и транспортом. При сравнении VLC с VMS запишите реальные методы, заголовки и URL. Разница control URL, Authorization, Session или keepalive иногда объясняет результат лучше названия программы.

Матрица исключения

Начните с двух гипотез. При отсутствии медиа UDP может блокироваться или сервер может отправлять на другие порты. TCP interleaved проверяет первую; сравнение предложения и ответа Transport, IP и портов — вторую. При повреждённом изображении RTP sequence отделяет потери от неполной инициализации, а SPS/PPS/VPS перед первым frame проверяет параметры codec.

Для гипотезы запишите подтверждающее и опровергающее доказательство. Утверждение, которое нельзя опровергнуть пакетом, слишком широко. «NAT удаляет UDP» опровергается RTP на порту клиента. «Нет параметров H.264» опровергается действительными SPS и PPS перед IDR. Отчёт становится приоритетным выводом, а не списком вариантов.

Не смешивать время

RTSP CSeq упорядочивает транзакции, RTP sequence — пакеты, RTP timestamp — время выборки, capture clock — приход в точку наблюдения. Это разные часы. Неравномерный приход не доказывает drift; скачок timestamp без sequence не доказывает потерю. RTCP sender report связывает часы RTP аудио и видео с общей опорой.

Пакет приёмки

Закройте случай, когда исправление повторяется в новом соединении с одним документированным изменением. Укажите входы, последнюю успешную границу, первое отсутствующее доказательство, изменение, результат и открытые тесты. Приложите короткий transcript или статистику. Скройте секреты, но сохраните CSeq, очищенную Session, SSRC и интервал.

Устранение неполадок RTSP помогает повторить порядок, а отчёты RTSP Inspector передают доказанную границу команде камеры, сети или VMS.

<!-- rtsp-localized-layer-verdicts-v1:end -->