Диагностика потока камеры RTSP: систематический рабочий процесс устранения неполадок от описания до воспроизведения
Проблемы с камерой RTSP обычно следуют шаблону: уровень подключения, уровень управления или уровень мультимедиа. Этот рабочий процесс диагностики показывает, какие доказательства необходимо собрать, на каком этапе протокола произошел сбой и как читать SDP, RTP и RTCP, чтобы точно определить причину сбоя.
Сбои RTSP-камеры не требуют догадок. Протокол является многоуровневым: "соединение (TCP/TLS), управление (DESCRIBE/SETUP/PLAY) и медиа (RTP/RTCP). Когда поток прерывается, проблема возникает в одном из этих слоев. Ваша задача — найти какой именно."
Трехслойная модель
Каждая проблема RTSP попадает в одну из трех категорий. Начните здесь, прежде чем углубляться в конкретные коды ошибок:
Уровень 1 — Соединение: Может ли клиент вообще добраться до камеры? TCP-квитирование, согласование TLS, фильтрация портов, маршрутизация VPN. Если telnet camera-ip 554 не подключается, все остальное не имеет значения.
Уровень 2 — Управление: Соединение работает, но команды RTSP не выполняются. DESCRIBE возвращает 400/404/401. SETUP возвращает 461. PLAY возвращает 453. На плоскости управления есть проблемы на уровне протокола: формат URL-адреса, аутентификация, согласование транспорта, управление сеансом.
Уровень 3 — Медиа: Управление работает отлично, но видео/аудио не работает. Пакеты RTP приходят, но не могут быть декодированы. Временные метки смещаются. Рамки повреждены. RTCP сообщает о потере. В медиаплоскости имеются проблемы с полезной нагрузкой, кодеком или качеством сети.
Таблица быстрой сортировки
| Symptom | Вероятный слой | Сначала проверьте |
|---|---|---|
| "В соединении отказано" | Слой 1 | Порт 554 доступен? Брандмауэр блокирует? |
| 400 Неверный запрос на DESCRIBE | Слой 2 | Формат URL-адреса RTSP, кодировка, заголовки прокси-сервера |
| 401 Несанкционированный | Слой 2 | Дайджест параметров аутентификации, имя пользователя/пароль |
| 461 Неподдерживаемый транспорт | Слой 2 | UDP против TCP-транспорта, заголовок SETUP |
| ОПИСАНИЕ ОК, НАСТРОЙКА ОК, видео нет | Слой 3 | Тип полезной нагрузки RTP, сопоставление кодеков |
| Видео воспроизводится, а затем зависает | Слой 3 | Потеря пакетов, поддержка активности, тайм-аут сеанса |
| Аудио и видео расходятся | Слой 3 | Временная метка RTP, несоответствие тактовой частоты |
Доказательства, которые вы должны собрать
Прежде чем диагностировать любую проблему RTSP, соберите эти пять доказательств:
- Полный ответ DESCRIBE — SDP сообщает вам, какие дорожки существуют, какие кодеки используются и какие типы полезных данных назначены.
- Запрос и ответ SETUP — заголовок транспорта показывает UDP и TCP, клиентские порты и идентификаторы чередующихся каналов.
- Ответ PLAY — подтверждает, что сеанс активен и RTP передается.
- Образцы пакетов RTP — байт типа полезной нагрузки, порядковые номера, временные метки, SSRC.
- Отчеты отправителя/получателя RTCP — количество потерь пакетов, дрожание, задержка между поступлениями.
Без этого, как вы думаете. С ними провал обычно очевиден.
Подробные руководства по ошибкам
- Ошибочный запрос RTSP 400: ошибка описания, неправильный URL-адрес
- RTSP 461 Неподдерживаемый транспорт: ошибка установки
- Фрагментация H.264 FU-A: потеря пакетов RTP и повторная сборка NAL
- Несоответствие типа динамической полезной нагрузки RTP: SDP и сопоставление кодеков
- RTSP UDP RTP заблокирован: брандмауэр, NAT и VPN
- Дрейф временной метки RTP: тактовая частота и синхронизация аудио/видео
- Тайм-аут сеанса RTSP и поддержка активности
- Отчеты отправителей RTCP: анализ джиттера и потерь пакетов
Когда следует обострять ситуацию
Если все три уровня проверены — TCP подключается, команды RTSP выполняются успешно, пакеты RTP поступают с правильными типами полезной нагрузки и стабильными временными метками — но видео по-прежнему выглядит неправильно, проблема, вероятно, заключается в декодере или уровне приложения, а не в транспорте RTSP. На этом этапе запишите короткий PCAP, экспортируйте несколько секунд RTP и передайте его команде декодера.