Solución de desviación de la marca de tiempo RTSP: discrepancia en la frecuencia del reloj RTP, sincronización de audio/vídeo y errores de sincronización de fotogramas
Se corrigió la desviación de la marca de tiempo RTSP que causaba la pérdida de sincronización de audio/vídeo. Cubre la falta de coincidencia de la frecuencia del reloj RTP, la fluctuación, la sincronización de fotogramas, las marcas de tiempo no monótonas y la inestabilidad de la reproducción de la transmisión de la cámara.
Una transmisión de cámara RTSP puede conectarse exitosamente, autenticarse correctamente, devolver SDP válido, enviar paquetes RTP y aun así comportarse mal. Es posible que el vídeo se retrase poco a poco del tiempo real. El audio y el vídeo pueden no estar sincronizados. Es posible que lleguen fotogramas pero que se reproduzcan de manera desigual. Una grabadora puede crear archivos con una duración extraña. Un reproductor puede mostrar advertencias de fluctuación, tartamudeo, "marca de tiempo no monótona", "DTS no válido", "salto de marca de tiempo RTP" o "desajuste de frecuencia de reloj".
Los usuarios buscan "derivación de la marca de tiempo RTP", "sincronización de audio y video de la cámara RTSP", "velocidad de reloj RTP incorrecta", "marca de tiempo entrecortada de la transmisión RTSP" y "problema de sincronización de fotogramas de la transmisión de la cámara" cuando la conexión de red funciona pero la línea de tiempo de los medios no.
Este es exactamente el tipo de problema en el que una prueba exclusiva para jugadores es demasiado superficial. El reproductor puede ocultar la línea de tiempo del paquete detrás del almacenamiento en búfer y la decodificación. RTSP Inspector es útil porque la temporización RTP es evidencia de protocolo: tipo de carga útil, marca de tiempo RTP, número de secuencia, bit marcador, velocidad de reloj SDP, informes del remitente RTCP, fluctuación y mapeo del reloj de pared, todos son importantes.
Las marcas de tiempo RTP no son marcas de tiempo de reloj de pared.
Una marca de tiempo RTP es un valor de reloj multimedia, no una marca de tiempo Unix. Para vídeo H.264, SDP suele declarar un reloj de 90 kHz:
a=rtpmap:96 H264/90000
90000 / 30 = 3000
Para vídeo de 25 fps, el incremento suele ser 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
Si el SDP dice que H.264 usa 90000, el cliente debe interpretar las marcas de tiempo RTP del video con ese reloj. Si el SDP falta, está mal formado o es inconsistente con el comportamiento de la carga útil, el cliente puede adivinar incorrectamente.
Los problemas comunes de sincronización del SDP incluyen:
- Falta
a=rtpmappara el tipo de carga útil dinámica. - Frecuencia de reloj de audio incorrecta.
- El tipo de carga útil se reutiliza de manera inconsistente.
- El firmware de la cámara declara 90000 pero envía incrementos de marca de tiempo que no coinciden con la velocidad de fotogramas.
- La configuración de AAC no coincide con la frecuencia de muestreo real.
- Varias pistas utilizan atributos de control confusos o duplicados.
RTSP Inspector debería ayudar a preservar el SDP junto con la evidencia de RTP porque la línea de tiempo de RTP no se puede interpretar correctamente sin ella.
Número de secuencia vs marca de tiempo
Los números de secuencia y las marcas de tiempo de RTP responden a diferentes preguntas.
El número de secuencia ayuda a detectar la pérdida y el pedido de paquetes:
- ¿Llegó el paquete 1024?
- ¿Llegó el paquete 1025?
- ¿Llegó el paquete 1026 antes del 1025?
- ¿Faltan paquetes?
La marca de tiempo RTP ayuda a interpretar el tiempo de los medios:
- ¿Qué paquetes pertenecen al mismo cuadro de vídeo?
- ¿Cuánto tiempo multimedia pasó entre fotogramas?
- ¿La cámara saltó hacia adelante o hacia atrás?
- ¿El audio avanza al ritmo esperado?
- ¿El tiempo de los medios coincide con el del reloj de pared?
Una transmisión puede tener una continuidad de secuencia perfecta y aún tener marcas de tiempo rotas. También puede haber cierta pérdida de paquetes, mientras que las marcas de tiempo permanecen consistentes.
Límites de bits de marcador y fotogramas de vídeo
Para muchas cargas de vídeo RTP, el bit marcador indica un límite de cuadro. Con H.264, varios paquetes RTP pueden transportar fragmentos de un cuadro de vídeo. Comparten la misma marca de tiempo RTP y el bit marcador suele aparecer en el último paquete de la unidad de acceso.
Si las marcas de tiempo cambian con demasiada frecuencia, no con la suficiente frecuencia, o el comportamiento del marcador es inconsistente, la reconstrucción del marco puede volverse inestable.
Los síntomas incluyen:
- El vídeo se entrecorta sin pérdida visible de paquetes.
- El decodificador recibe tramas incompletas.
- La grabadora crea una duración de fotograma incorrecta.
- La reproducción se acelera o ralentiza.
- Las marcas de tiempo de los fotogramas no son monótonas.
Es por eso que una herramienta de diagnóstico debería mostrar metadatos RTP a nivel de paquete, no solo cuadros decodificados.
Deriva de sincronización de audio/vídeo
La sincronización de audio y video depende de asignar la marca de tiempo RTP de cada pista multimedia a una base de tiempo compartida. Los informes de remitente RTCP se utilizan a menudo para esto. Un informe de remitente puede asignar la marca de tiempo RTP a la hora 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 -->Evidencia reproducible para «Solución de desviación de la marca de tiempo RTSP: discrepancia en la frecuencia del reloj RTP, sincronización de audio/vídeo y errores de sincronización de fotogramas»
La respuesta directa es que una avería de vídeo no se demuestra con una ventana negra ni con un solo código de estado. Un diagnóstico fiable conecta la petición y la respuesta RTSP, el transporte negociado, una sesión válida y después los números de secuencia RTP, las marcas de tiempo y las señales RTCP. Para «Solución de desviación de la marca de tiempo RTSP: discrepancia en la frecuencia del reloj RTP, sincronización de audio/vídeo y errores de sincronización de fotogramas», empieza por la capa más cercana al síntoma visible, pero conserva una cronología común para no mezclar un fallo de control con uno de red o decodificación.
Antes de cambiar la cámara, el firewall o el VMS, crea una prueba base pequeña. Anota la URL RTSP sin contraseña, la hora, la ruta, el transporte solicitado, la respuesta del servidor y el instante del primer paquete multimedia. Prueba UDP y TCP interleaved por separado cuando el equipo ofrezca ambos. No cambies ruta, credenciales y transporte a la vez; si el segundo intento funciona, necesitas saber qué variable produjo la diferencia.
| Capa | Evidencia que se debe guardar | Pregunta de decisión |
|---|---|---|
| RTSP | método, estado, cabeceras, CSeq y Session | ¿El servidor aceptó exactamente la operación? |
| SDP | control, payload type, clock rate y codec | ¿El servidor describió la pista esperada? |
| Transport | client_port, server_port o interleaved | ¿Ambos extremos usan el mismo canal? |
| RTP | SSRC, secuencia, timestamp y marker | ¿Las unidades llegan en un orden explicable? |
| RTCP | sender report, CNAME y BYE | ¿Se pueden relacionar reloj, identidad y final? |
| Decoder | SPS/PPS/VPS y packetization mode | ¿El payload recibido permite iniciar el decoder? |
Separa «no llega multimedia» de «llega multimedia que no se puede decodificar». Si no aparece RTP después de SETUP y PLAY correctos, revisa UDP, NAT, firewall y una respuesta Transport distinta de la oferta. RTP con huecos de secuencia prueba pérdida o reordenación. Una secuencia continua sin imagen desplaza la investigación hacia payload type, clock rate, límites de cuadro y parámetros H.264 o H.265. Esta frontera es más útil que el mensaje general del reproductor.
¿Cómo se redacta una respuesta que pueda citarse?
Usa tres frases: última operación correcta, primera evidencia que falla y siguiente prueba que separa dos causas. Ejemplo: «DESCRIBE, SETUP y PLAY terminan correctamente; no llega RTP a los puertos anunciados por el cliente; repetir por TCP interleaved separará el bloqueo UDP de una ruta multimedia incorrecta». No atribuyas el fallo a la cámara o a la red sin una respuesta o un paquete que marque ese límite.
¿Qué hace reproducible el caso?
Guarda OPTIONS, DESCRIBE, SETUP y PLAY, el SDP, la respuesta Transport y el identificador Session saneado. Para RTP registra SSRC, primer y último número de secuencia, clock rate, huecos y duración. Indica si VLC u otro VMS funciona, pero úsalo como comparación controlada, no como prueba de que el cliente exitoso interpreta todas las reglas de forma correcta.
¿Cuándo se investiga el servidor y cuándo el cliente?
Mira el servidor si rechaza un método, entrega un control URL inexistente, responde con un transporte incompatible o cambia SSRC o reloj sin transición. Mira el cliente si reutiliza un nonce caducado, pierde Session, solicita UDP sin abrir los puertos o interpreta cada final NAL como final de access unit. Si el límite está entre ambos, conserva paquete y hora en cada afirmación.
¿Cómo se revisa el informe?
Repite desde una conexión nueva y compara las dos cronologías solo hasta la primera diferencia. Elimina contraseñas y valores Authorization completos. Relaciona cada conclusión con CSeq, secuencia o timestamp. Continúa con la guía RTSP relacionada y usa RTSP Inspector para probar un stream RTSP y recoger evidencia de forma local, sin subir el vídeo de la cámara a un servicio público.
<!-- rtsp-localized-evidence-foundation-v1:end --><!-- rtsp-localized-layer-verdicts-v1:start -->De la observación a un veredicto por capas
En «Solución de desviación de la marca de tiempo RTSP: discrepancia en la frecuencia del reloj RTP, sincronización de audio/vídeo y errores de sincronización de fotogramas», escribe primero lo observado y después la interpretación. Una observación puede localizarse en la captura: estado RTSP asociado a CSeq, valor SDP, respuesta Transport, hueco entre secuencias, cambio de SSRC o diferencia entre RTP timestamp y RTCP sender report. «El servidor es lento» o «el codec es incompatible» sigue siendo una hipótesis hasta que una evidencia concreta la explique mejor que las alternativas.
Divide el flujo en fronteras. Primero se abre TCP. Después se aceptan OPTIONS o DESCRIBE. El SDP debe describir una pista utilizable, control URL, payload type y clock rate. SETUP necesita una respuesta Transport compatible y PLAY una Session válida. Solo entonces se evalúan llegada RTP, orden, tiempo y preparación del decoder. Detente en la primera frontera sin prueba de éxito; no permitas que datos posteriores oculten una ausencia anterior.
Mantén fuente e intervalo constantes en comparaciones. Para UDP frente a TCP interleaved usa la misma ruta y credenciales. Para main stream frente a sub stream conserva cliente y transporte. Al comparar VLC con un VMS, registra métodos, cabeceras y URL reales; una diferencia de control URL, Authorization, Session o keepalive puede explicar el resultado mejor que el nombre del programa.
Matriz de descarte
Empieza con dos hipótesis. Si no llega multimedia, UDP puede estar bloqueado o el servidor puede enviar a otros puertos. TCP interleaved prueba la primera; comparar oferta y respuesta Transport, IP y puertos prueba la segunda. Para imagen dañada, la secuencia RTP separa pérdida de paquetes de inicialización incompleta, mientras que SPS/PPS/VPS antes del primer frame prueba la hipótesis del codec.
Para cada hipótesis anota evidencia a favor y evidencia que podría refutarla. Una afirmación que ninguna captura puede negar es demasiado amplia. «NAT elimina UDP» queda refutado si RTP llega al puerto del cliente. «Faltan parámetros H.264» queda refutado al ver SPS y PPS válidos antes de IDR. Así el informe conserva prioridad y no se convierte en una lista desordenada.
Interpretar el tiempo sin excederse
RTSP CSeq ordena transacciones, RTP sequence ordena paquetes, RTP timestamp expresa tiempo de muestreo y el reloj de captura expresa llegada al punto observado. No son el mismo reloj. Variación de llegada no demuestra drift; un salto timestamp no demuestra pérdida sin secuencia. Para sincronizar audio y vídeo, los RTCP sender reports relacionan relojes RTP distintos con una referencia común.
Paquete final de aceptación
Cierra el caso cuando el arreglo se repita desde una conexión nueva con un solo cambio documentado. El informe debe indicar entradas, última frontera correcta, primera evidencia fallida, cambio, resultado y pruebas pendientes. Adjunta un fragmento pequeño del transcript o estadísticas relevantes. Oculta secretos, pero conserva CSeq, Session saneada, SSRC e intervalo.
Usa la solución de problemas RTSP para reconstruir el flujo y los informes de RTSP Inspector para entregar la frontera al equipo de cámara, red o VMS.
<!-- rtsp-localized-layer-verdicts-v1:end -->