Исправление смещения метки времени RTSP: несоответствие тактовой частоты RTP, синхронизация аудио/видео и ошибки синхронизации кадров
Исправлено смещение временной метки RTSP, приводящее к потере синхронизации аудио/видео. Устранено несоответствие тактовой частоты RTP, дрожание, синхронизация кадров, немонотонные временные метки и нестабильность воспроизведения потока камеры.
Поток камеры RTSP может успешно подключаться, правильно аутентифицироваться, возвращать действительный SDP, отправлять пакеты RTP и при этом вести себя плохо. Видео может постепенно отставать от реального времени. Аудио и видео могут рассинхронизироваться. Кадры могут приходить, но воспроизводиться неравномерно. Диктофон может создавать файлы странной продолжительности. Игрок может отображать предупреждения о дрожании, заикании, «немонотонной временной метке», «недопустимом DTS», «скачке временной метки RTP» или «несоответствии тактовой частоты».
Пользователи ищут «дрейф метки времени RTP», «синхронизация аудио-видео камеры RTSP», «неправильная тактовая частота RTP», «метка времени заикания потока RTSP» и «проблема с синхронизацией кадров потока камеры», когда сетевое соединение работает, а временная шкала мультимедиа — нет.
Это именно та проблема, когда тест только для игроков слишком поверхностен. Игрок может скрыть временную шкалу пакетов за буферизацией и декодированием. Инспектор RTSP полезен, поскольку время RTP является свидетельством протокола: тип полезной нагрузки, временная метка RTP, порядковый номер, бит маркера, тактовая частота SDP, отчеты отправителя RTCP, джиттер и отображение настенных часов — все это имеет значение.
Временные метки RTP не являются временными метками настенных часов.
Временная метка RTP — это значение часов мультимедиа, а не временная метка Unix. Для видео H.264 SDP часто заявляет тактовую частоту 90 кГц:
a=rtpmap:96 H264/90000
90000 / 30 = 3000
Для видео со скоростью 25 кадров в секунду шаг обычно составляет 3600:
90000 / 25 = 3600
SDP clock rate is the first clue
m=video 0 RTP/AVP 96
a=rtpmap:96 H264/90000
m=audio 0 RTP/AVP 97
a=rtpmap:97 MPEG4-GENERIC/48000/2
Если SDP сообщает, что H.264 использует 90000, клиент должен интерпретировать временные метки видео RTP с этими часами. Если SDP отсутствует, имеет неверный формат или несовместим с поведением полезной нагрузки, клиент может сделать неправильное предположение.
Общие проблемы с синхронизацией SDP включают в себя:
- Отсутствует
a=rtpmapдля динамического типа полезных данных. - Неправильная тактовая частота звука.
- Тип полезной нагрузки повторно используется непоследовательно.
- Прошивка камеры объявляет 90000, но отправляет приращения метки времени, которые не соответствуют частоте кадров.
- Конфигурация AAC не соответствует фактической частоте дискретизации.
- Несколько дорожек используют запутанные или повторяющиеся атрибуты управления.
Инспектор RTSP должен помочь сохранить SDP наряду с доказательствами RTP, поскольку без них временная шкала RTP не может быть правильно интерпретирована.
Порядковый номер и временная метка
Порядковые номера и временные метки RTP отвечают на разные вопросы.
Порядковый номер помогает обнаружить потерю пакетов и упорядочить их:
- Пакет 1024 пришел?
- Пакет 1025 пришел?
- Пакет 1026 прибыл раньше 1025?
- Пакеты отсутствуют?
Временная метка RTP помогает интерпретировать время мультимедиа:
- Какие пакеты принадлежат одному и тому же видеокадру?
- Сколько медиа-времени прошло между кадрами?
- Камера прыгнула вперед или назад?
- Звук продвигается с ожидаемой скоростью?
- Соответствует ли время мультимедиа времени на настенных часах?
Поток может иметь идеальную непрерывность последовательности и при этом иметь нарушенные временные метки. Также может произойти некоторая потеря пакетов, в то время как временные метки в остальном остаются согласованными.
Маркерный бит и границы видеокадра
Для многих полезных данных видео RTP бит маркера указывает границу кадра. В H.264 несколько пакетов RTP могут содержать фрагменты одного видеокадра. Они имеют одну и ту же временную метку RTP, и бит маркера часто появляется в последнем пакете устройства доступа.
Если временные метки меняются слишком часто или недостаточно часто или поведение маркера непоследовательно, реконструкция кадра может стать нестабильной.
Симптомы включают в себя:
- Видео заикается без видимой потери пакетов.
- Декодер получает неполные кадры.
- Рекордер создает неправильную длительность кадра.
- Воспроизведение ускоряется или замедляется.
- Временные метки кадров немонотонны.
Вот почему диагностический инструмент должен отображать метаданные RTP на уровне пакетов, а не только декодированные кадры.
Дрейф синхронизации аудио/видео
Синхронизация аудио и видео зависит от сопоставления временной метки RTP каждой мультимедийной дорожки с общей временной базой. Для этого часто используются отчеты отправителей RTCP. Отчет отправителя может сопоставить временную метку RTP со временем NTP:
RTCP SR:
NTP timestamp: wall-clock reference
RTP timestamp: media timestamp at that reference
Audio/video drift can happen when:
Timestamp jumps
Look for:
Questions to separate them:
Checklist for RTP timestamp drift
Use this workflow:
What to include in a useful report
Final diagnosis
<!-- rtsp-localized-evidence-foundation-v1:start -->Воспроизводимая проверка темы «Исправление смещения метки времени RTSP: несоответствие тактовой частоты RTP, синхронизация аудио/видео и ошибки синхронизации кадров»
Краткий ответ: чёрный экран или одиночный код не доказывает источник сбоя. Надёжная диагностика связывает запрос и ответ RTSP, согласованный Transport, действующую Session, а затем номера последовательности RTP, временные метки и данные RTCP. Для «Исправление смещения метки времени RTSP: несоответствие тактовой частоты RTP, синхронизация аудио/видео и ошибки синхронизации кадров» начните с уровня, ближайшего к симптому, но сохраняйте единую временную шкалу, чтобы не смешать управление, сеть и декодирование.
До изменения камеры, межсетевого экрана или 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 --><!-- multilingual-blog-closeout:start -->Прямой ответ и граница приемки
Краткий ответ по теме «Исправление смещения метки времени RTSP: несоответствие тактовой частоты RTP, синхронизация аудио/видео и ошибки синхронизации кадров»: Исправлено смещение временной метки RTSP, приводящее к потере синхронизации аудио/видео. Устранено несоответствие тактовой частоты RTP, дрожание, синхронизация кадров, немонотонные временные метки и нестабильность воспроизведения потока камеры. Считайте это проверяемым результатом, а не обещанием для любого входа, устройства, проекта или окружения. Полный результат фиксирует исходное состояние, точное действие, видимый выход и условие, подтверждающее завершение задачи в RTSP Inspector.
Порядок работы от доказательств
Начните с небольшого повторяемого случая до изменения полного проекта. Запишите версию приложения, систему, идентификатор входа или устройства, важные настройки и ожидаемый результат. Выполните одно осознанное действие, сохраните первый неожиданный переход и сравните с исправным случаем, если он есть. Одновременная смена нескольких параметров скрывает условие, создавшее или устранившее проблему.
Контрольная точка 1: Исправление смещения метки времени RTSP: несоответствие тактовой частоты RTP, синхронизаци
Если «Исправление смещения метки времени RTSP: несоответствие тактовой частоты RTP, синхронизация аудио/видео и ошибки синхронизации кадров» неоднозначен, сравните исправный и ошибочный случаи в одинаковых условиях. Отметьте первое значимое различие вместо списка последующих симптомов. Эта граница дает более ясное обращение в поддержку и безопасный следующий опыт.
Контрольная точка 2: Исправлено смещение временной метки RTSP, приводящее к потере синхронизации аудио/видео. У
Проверяйте «Исправлено смещение временной метки RTSP, приводящее к потере синхронизации аудио/видео. Устранено несоответствие тактовой частоты RTP, дрожание, синх» на минимальном репрезентативном входе. Не меняйте несвязанные настройки, повторите то же действие и проверьте результат после повторного открытия или подключения. Один снимок слабее записи с входом, настройкой, действием, выходом и временем.
Контрольная точка 3: Временные метки RTP не являются временными метками настенных часов.
Если «Временные метки RTP не являются временными метками настенных часов.» неоднозначен, сравните исправный и ошибочный случаи в одинаковых условиях. Отметьте первое значимое различие вместо списка последующих симптомов. Эта граница дает более ясное обращение в поддержку и безопасный следующий опыт.
Контрольная точка 4: SDP clock rate is the first clue
Проверяйте «SDP clock rate is the first clue» на минимальном репрезентативном входе. Не меняйте несвязанные настройки, повторите то же действие и проверьте результат после повторного открытия или подключения. Один снимок слабее записи с входом, настройкой, действием, выходом и временем.
Контрольная точка 5: Порядковый номер и временная метка
Если «Порядковый номер и временная метка» неоднозначен, сравните исправный и ошибочный случаи в одинаковых условиях. Отметьте первое значимое различие вместо списка последующих симптомов. Эта граница дает более ясное обращение в поддержку и безопасный следующий опыт.
Контрольная точка 6: Маркерный бит и границы видеокадра
Проверяйте «Маркерный бит и границы видеокадра» на минимальном репрезентативном входе. Не меняйте несвязанные настройки, повторите то же действие и проверьте результат после повторного открытия или подключения. Один снимок слабее записи с входом, настройкой, действием, выходом и временем.
Контрольная точка 7: Дрейф синхронизации аудио/видео
Если «Дрейф синхронизации аудио/видео» неоднозначен, сравните исправный и ошибочный случаи в одинаковых условиях. Отметьте первое значимое различие вместо списка последующих симптомов. Эта граница дает более ясное обращение в поддержку и безопасный следующий опыт.
Контрольная точка 8: Timestamp jumps
Проверяйте «Timestamp jumps» на минимальном репрезентативном входе. Не меняйте несвязанные настройки, повторите то же действие и проверьте результат после повторного открытия или подключения. Один снимок слабее записи с входом, настройкой, действием, выходом и временем.
Контрольная точка 9: Checklist for RTP timestamp drift
Если «Checklist for RTP timestamp drift» неоднозначен, сравните исправный и ошибочный случаи в одинаковых условиях. Отметьте первое значимое различие вместо списка последующих симптомов. Эта граница дает более ясное обращение в поддержку и безопасный следующий опыт.
Контрольная точка 10: What to include in a useful report
Проверяйте «What to include in a useful report» на минимальном репрезентативном входе. Не меняйте несвязанные настройки, повторите то же действие и проверьте результат после повторного открытия или подключения. Один снимок слабее записи с входом, настройкой, действием, выходом и временем.
Матрица приемки
| Точка | Сохраняемое доказательство | Критерий успеха |
|---|---|---|
| Исправление смещения метки времени RTSP: несоответствие тактовой частоты RTP, синхронизация аудио/видео и ошибки синхрон | Исходное состояние, одно действие и результат | Второй оператор воспроизводит заявленный результат |
| Исправлено смещение временной метки RTSP, приводящее к потере синхронизации аудио/видео. Устранено несоответствие тактов | Исходное состояние, одно действие и результат | Второй оператор воспроизводит заявленный результат |
| Временные метки RTP не являются временными метками настенных часов. | Исходное состояние, одно действие и результат | Второй оператор воспроизводит заявленный результат |
| SDP clock rate is the first clue | Исходное состояние, одно действие и результат | Второй оператор воспроизводит заявленный результат |
| Порядковый номер и временная метка | Исходное состояние, одно действие и результат | Второй оператор воспроизводит заявленный результат |
| Маркерный бит и границы видеокадра | Исходное состояние, одно действие и результат | Второй оператор воспроизводит заявленный результат |
Изоляция, восстановление и передача
Остановитесь на первой неуспешной границе. Сохраните источник, проект, сеанс или захват, сделайте копию перед разрушающим редактированием и меняйте одну переменную за опыт. Повтор широкого процесса после нескольких изменений может дать иной результат без объяснения причины.
Отличайте отсутствие доказательств от доказательства отсутствия. Пустой экран может означать неверный вход, область, фильтр, права, устройство, период или состояние проекта. Подтвердите получение или импорт до толкования decoder, редактора, отчета или экспорта.
Перед передачей повторно откройте артефакт и проверьте начало, точку решения и конец. Запишите версию, платформу, конфигурацию, ожидание, наблюдение и минимальное воспроизведение. Удалите или скройте чувствительные данные и проверьте полномочия получателя.
Вопросы и ответы
Как надежнее всего начать?
Возьмите минимальный репрезентативный случай, запишите ожидаемый результат и меняйте одну переменную. Подтвердите базовый путь до добавления фильтров, эффектов, правок, автоматизации или большого источника.
Какие доказательства сохранять?
Сохраните идентификатор входа, версию, платформу, настройки, точное действие, первый неожиданный переход и конечный выход. Закройте и повторно откройте проект, сеанс, отчет или экспорт.
Когда повторять процедуру?
После значимого изменения приложения, системы, драйвера, прошивки, модели, источника или процесса. Сохраните предыдущий принятый случай как неизменную основу сравнения.
Когда результат готов к передаче?
Когда другой уполномоченный человек определяет вход, повторяет действие, видит тот же результат, понимает ограничения и открывает артефакт без недокументированного локального состояния.
Связанные руководства
Эти страницы на том же языке описывают соседние этапы, не меняя канонического владельца темы:
- Изменение RTP SSRC в середине потока: отладка перезапусков камеры, изменений источника потока, сброса последовательности и сбоев декодера
- Исправление ошибки RTP в основном потоке: диагностика потери пакетов, зависаний камеры и макроблоков в RTSP
- Внутренняя ошибка сервера RTSP 500: путь потока камеры, ресурс кодировщика, встроенное ПО и диагностика сеанса