Устранение неполадок с потоком RTSP: полное руководство по диагностике потоков с камер
Полный рабочий процесс диагностики RTSP: уровень соединения, ошибки плоскости управления (400/401/404/454/461/500/503), сбои медиаплоскости (H.264/H.265/RTP/RTCP), управление сеансами и сравнение с Wireshark/VLC. Каждая проблема RTSP отображается на диагностической странице.
Это центральная страница для диагностики потока камер RTSP. Каждая проблема RTSP следует шаблону — происходит сбой на уровне соединения, плоскости управления или медиаплоскости. В этом руководстве каждая распространенная неисправность отображается на конкретной диагностической странице и рассказывается, какие доказательства необходимо собрать.
Быстрая сортировка: где неисправность?
Прежде чем читать какую-либо конкретную страницу, определите, какой слой неисправен:
- Может ли клиент добраться до камеры? → Проблемы на уровне соединения
- Возвращает ли DESCRIBE действительный SDP? → Проблемы с плоскостью управления.
- Правильно ли доставляются и декодируются пакеты RTP? → Проблемы с медиа-плоскостью
Если вы не знаете, на каком уровне произошел сбой, начните с рабочего процесса систематической диагностики.
Connection layer: reaching the camera
Плоскость управления: ошибки команд RTSP
Это ошибки уровня протокола, возвращаемые камерой в ответ на команды DESCRIBE, SETUP или PLAY. Код ошибки точно расскажет вам, что пошло не так.
400 неверный запрос
- Ошибочный запрос RTSP 400: ошибка DESCRIBE — неверный URL-адрес, неподдерживаемые заголовки, помехи прокси-сервера. Охватывает форматы URL-адресов Axis, Dahua и Hikvision.
401 Несанкционированный
Цикл аутентификации RTSP 401 — Дайджест против базовых параметров аутентификации, nonce/области, почему аутентификация проходит успешно в VLC, но не работает в вашем приложении.
Подробное описание дайджест-аутентификации RTSP — Срок действия Nonce, сопоставление области, обработка stale=true.
Диагностика URL-адреса камеры 401/404 — когда URL-адрес работает в одном клиенте, но не работает в другом.
404 Не найден
Диагностика URL-адреса камеры 401/404 — Неверный путь к потоку, форматы URL-адресов, специфичные для камеры.
Агрегированный контрольный URL-адрес и настройка SDP 404 — когда контрольный URL-адрес в SDP не соответствует URL-адресу DESCRIBE.
454 Сеанс не найден
- Сеанс RTSP 454 не найден — несоответствие идентификатора сеанса, истекшие сеансы, ВОСПРОИЗВЕДЕНИЕ перед НАСТРОЙКОЙ.
461 Неподдерживаемый транспорт
- RTSP 461 Неподдерживаемый транспорт: ошибка установки — согласование транспорта UDP и TCP, ffmpeg «Ошибка метода SETUP: 461», ошибки интеграции Frigate/Scrypted/NVR.
500/503 Ошибки сервера
Внутренняя ошибка сервера RTSP 500 — Сбой на стороне камеры. Когда следует сделать вывод, что виновата прошивка камеры.
Служба RTSP 503 недоступна — Исчерпание ресурсов камеры, слишком много одновременных потоков, ограничения пропускной способности.
Транспорт и сети
UDP RTP заблокирован брандмауэром/NAT — управление RTSP работает, но носитель UDP RTP заблокирован. Правила брандмауэра, обход NAT, конфигурация порта протокола RTSP, резервный вариант с чередованием TCP.
Несоответствие чередующихся каналов TCP — когда чередующиеся каналы RTP/RTCP не совпадают между клиентом и сервером.
Несоответствующий ответ транспортного сервера — Сервер отвечает с параметрами транспорта, отличными от запрошенных.
Отладка многоадресной UDP — конфигурация многоадресной рассылки RTSP/RTP, IGMP, TTL и сетевая инфраструктура.
Тайм-аут RTSP: UDP и TCP с чередованием — Почему время ожидания потоков по-разному распределяется по UDP и TCP.
Media plane: RTP, codec, and payload problems
RTP packet analysis
H.264 and H.265 codec issues
Audio and metadata tracks
ONVIF and camera-specific
RTCP и управление сеансами
Отчеты отправителя RTCP: дрожание и потери — Чтение пакетов RTCP SR для оценки качества сети с точки зрения камеры.
RTCP BYE: поток неожиданно завершается — когда камера отправляет RTCP BYE и завершает поток.
RTCP CNAME и синхронизация аудио/видео — использование RTCP CNAME для синхронизации аудио и видео дорожек.
RTSP TEARDOWN и очистка сеанса — утечка ресурсов камеры, сбой повторного подключения, состояние занятого потока.
Тайм-аут сеанса RTSP и поддержка активности — Почему потоки останавливаются примерно через 30 секунд и как поддерживать их активность.
Заголовок диапазона RTSP и NPT — Управление позицией воспроизведения с помощью параметров Range и NPT.
Заголовок RTSP Scale и трюковое воспроизведение — перемотка вперед, назад и управление скоростью через заголовок Scale.
Comparison and alternatives
Начиная
Впервые в диагностике RTSP? Начните здесь:
- Систематический диагностический процесс — Трехуровневая модель и сбор доказательств.
- Подключение к потоку — настройка первого соединения RTSP.
- Руководство по устранению неполадок — Распространенные неисправности и их исправления.
Воспроизводимая проверка темы «Устранение неполадок с потоком RTSP: полное руководство по диагностике потоков с камер»
Краткий ответ: чёрный экран или одиночный код не доказывает источник сбоя. Надёжная диагностика связывает запрос и ответ RTSP, согласованный Transport, действующую Session, а затем номера последовательности RTP, временные метки и данные RTCP. Для «Устранение неполадок с потоком 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 -->От наблюдения к проверяемому послойному выводу
Для «Устранение неполадок с потоком 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.
Журнал изменения и регрессионная проверка
Превратите исправление в воспроизводимый журнал. Укажите прежнее и новое значение, место настройки, время нового соединения и ожидаемое изменение пакетов. Для TCP interleaved недостаточно фразы «изображение появилось»: медиа больше не должно зависеть от отдельных UDP-портов и должно идти по согласованным interleaved-каналам. При смене control URL запрос SETUP использует новый путь, а PLAY и keepalive сохраняют одну Session.
Если это безопасно, выполните отрицательный контроль. В тестовой среде временно верните старое значение или сравните предыдущий захват с теми же входами. Должна снова отказать та же граница. Так случайный перезапуск, кэш или недокументированное изменение сети не будет принято за решение. На производственной камере не вызывайте сбой намеренно; используйте исторический захват с известным временем и входами.
Держите соединение дольше обычных интервалов keepalive и Session timeout. Следите за OPTIONS или GET_PARAMETER, ростом CSeq и постоянством Session. Для RTP сравнивайте потери, дубликаты, перестановку и смены SSRC на окнах одинаковой длительности до и после исправления. Сравнение простого числа пакетов на разных интервалах вводит в заблуждение.
Изменение codec проверяйте на полностью новом соединении: SDP, начальные параметры, первый IDR и последующие кадры должны появиться в ожидаемом порядке. Уже инициализированный decoder может скрыть отсутствие SPS/PPS/VPS в начале. Для аудио и видео записывайте payload type и clock rate отдельно и используйте RTCP sender report для общей временной опоры.
Ограничьте вывод. «Main stream проверен по TCP десять минут этим клиентом» точнее, чем «RTSP исправлен». Назовите проверенные track, Transport, codec, клиент и длительность. Аудио, sub stream или восстановление после разрыва сети оставьте открытыми, если они не проверялись.
Разделите факты и рекомендацию. Факты — ответы, пакеты и измерения. Рекомендация предлагает изменить камеру, firewall, VMS или клиент. Другая команда должна принять факты, даже если выберет иной способ устранения.
В конце укажите владельца следующего действия и условие закрытия. Команда камеры может исправить Transport, VMS — повторить воспроизведение в новой сборке, сеть — проверить объявленный диапазон UDP. Передайте очищенный короткий интервал и основания вывода по руководству отчётов RTSP Inspector.
<!-- rtsp-localized-layer-verdicts-v1:end -->