RTP SSRC Change Mid-Stream: depuração de reinicializações de câmera, alterações de fonte de stream, redefinições de sequência e falhas de decodificador

Como diagnosticar alterações RTP SSRC em fluxos de câmera RTSP, redefinições de número de sequência, descontinuidade de carimbo de data/hora, reinicializações do codificador de câmera, fluxos de failover e falhas de decodificador.

mudança rtp ssrc, fluxo de câmera rtsp, redefinição do número de sequência, descontinuidade do carimbo de data/hora, diagnóstico RTP, reinicialização da câmera, falha no decodificador

RTP SSRC identifica a fonte de sincronização de um fluxo RTP. Quando ele muda no meio de uma sessão RTSP, os usuários podem ver congelamentos, quadros pretos, dessincronização de áudio/vídeo, vídeo corrompido, alarmes de perda de pacotes ou redefinição repentina do decodificador. As frases de pesquisa incluem "RTP SSRC alterado", "O fluxo RTSP congela após a reinicialização da câmera", "Redefinição do número de sequência RTP", "Descontinuidade do carimbo de data/hora RTP" e "Fonte do fluxo da câmera alterada no meio do fluxo".

O RTSP Inspector é útil porque esta não é uma pergunta normal do jogador. A principal evidência reside em cabeçalhos de pacotes RTP, relatórios de remetentes RTCP, metadados de rastreamento SDP, números de sequência e carimbos de data/hora.

O que significa SSRC

No RTP, cada fonte de mídia possui um valor SSRC. Uma trilha de vídeo e uma trilha de áudio geralmente possuem valores SSRC diferentes. O receptor usa SSRC junto com tipo de carga útil, número de sequência, carimbo de data/hora e relatórios RTCP para manter a continuidade do fluxo.

Se o SSRC mudar, o receptor deverá decidir se isto é:

  • Uma nova fonte legítima de sincronização.
  • Uma reinicialização do codificador da câmera.
  • Um failover para outro codificador.
  • Um bug de firmware.
  • Um problema de reescrita de NAT/proxy.
  • Um novo fluxo mixado incorretamente na mesma sessão.

Tratar todas as alterações do SSRC como perda de pacotes é enganoso.

Sintomas comuns

Uma alteração no SSRC pode produzir vários sintomas visíveis:

  • O vídeo congela por alguns segundos.
  • O decodificador mostra "unidade NAL inválida" ou "quadro de referência ausente".
  • A reprodução continua, mas a latência aumenta.
  • Áudio e vídeo se distanciam.
  • O cliente registra perda repentina de pacotes.
  • Picos de jitter RTCP.
  • Os números de sequência são reiniciados a partir de um valor pequeno.
  • O carimbo de data/hora RTP salta para trás ou para frente.

A questão importante é se a identidade da mídia mudou ao mesmo tempo que a sequência e a continuidade do carimbo de data/hora.

Reinicialização da câmera ou reinicialização do codificador

Muitas câmeras IP reiniciam o pipeline do codificador sem fechar a conexão TCP RTSP. A sessão de controle ainda pode parecer ativa, mas o RTP muda abaixo dela.

Evidência:

  • O mesmo ID de sessão RTSP continua.
  • Mudanças no RTP SSRC.
  • O número de sequência RTP é reiniciado.
  • O carimbo de data/hora RTP reinicia ou salta.
  • Mapeamento de alterações do relatório do remetente RTCP.
  • O quadro-chave aparece logo após a reinicialização ou o decodificador aguarda até o próximo quadro IDR.

Se o fluxo se recuperar após o próximo quadro-chave, o problema poderá ser a reinicialização do codificador em vez da perda de pacotes de rede.

Fontes de mídia com failover e balanceamento de carga

Alguns sistemas retransmitem fluxos RTSP através de um gateway. Se o gateway alternar câmeras upstream, pipelines de gravação ou trabalhadores transcodificadores, o receptor poderá ver um novo SSRC.

Isso pode acontecer com:

  • Retransmissão NVR.
  • Pontes de câmeras em nuvem.
  • Failover de proxy RTSP.
  • Firmware da câmera multi-codificador.
  • Servidores de fluxo redundantes.
  • Balanceadores de carga que não preservam a afinidade de mídia.

Se as alterações do SSRC estiverem correlacionadas ao failover de back-end, a correção poderá pertencer à camada de retransmissão.

Redefinição do número de sequência

Os números de sequência RTP são de 16 bits e normalmente aumentam um para cada pacote no mesmo fluxo. Pode ser esperada uma redefinição no mesmo momento da mudança do SSRC. Uma redefinição sem alteração do SSRC é mais suspeita.

Comparações úteis:

  • Intervalo de sequência SSRC antigo.
  • Novo primeiro número de sequência do SSRC.
  • Tipo de carga útil antes e depois.
  • Carimbo de data e hora antes e depois.
  • Comportamento do bit marcador próximo ao limite.
  • Se um quadro-chave aparece após a redefinição.

Essa distinção é importante para o SEO porque muitas pessoas procuram por “redefinição do número de sequência RTP” e presumem a perda de pacotes, enquanto a causa real é a substituição da fonte.

Descontinuidade do carimbo de data/hora

Os carimbos de data/hora RTP seguem o relógio da mídia. Para vídeo, geralmente é 90 kHz. Se o carimbo de data/hora retroceder, um receptor poderá descartar quadros ou reordená-los incorretamente. Se avançar muito, o comportamento do buffer de jitter poderá mudar.

Quando o SSRC muda, a descontinuidade do carimbo de data/hora pode ser aceitável se o receptor a tratar como uma nova fonte. Quando o SSRC não muda, a descontinuidade do carimbo de data/hora geralmente indica um relógio do remetente quebrado.

O Inspetor RTSP deve mostrar claramente o limite do carimbo de data/hora:

old SSRC: sequence 43120, timestamp 88210000
new SSRC: sequence 210, timestamp 3000

That kind of evidence is more useful than a player screenshot.

RTCP sender report changes

RTCP sender reports map RTP timestamps to wall-clock time. If SSRC changes, the receiver should watch for new RTCP sender reports.

Questions to answer:

  • Does the new SSRC send RTCP SR?
  • Does the old SSRC send RTCP BYE?
  • Does the camera announce source shutdown?
  • Is jitter calculated per SSRC or across the boundary?
  • Does packet loss accounting reset correctly?

If a tool merges statistics across SSRC changes, it may show false loss, false jitter, or false bitrate dips.

Decoder behavior

Even when RTP is valid, decoders need a clean frame boundary. For H.264 and H.265, recovery may require SPS/PPS/VPS and an IDR frame.

After an SSRC change, check:

  • Does the next access unit include a keyframe?
  • Are SPS and PPS repeated?
  • Does the SDP still match the actual stream?
  • Does payload type stay the same?
  • Does fragmentation restart in the middle of a frame?

If the new source starts with P-frames only, the receiver may show black video until the next keyframe.

Debug checklist

Use this workflow:

  1. Identify all SSRC values per RTP track.
  2. Locate the exact packet where SSRC changes.
  3. Compare sequence numbers before and after.
  4. Compare RTP timestamps before and after.
  5. Check RTCP BYE and sender reports.
  6. Check whether RTSP session ID changed.
  7. Check whether payload type changed.
  8. Look for keyframe or codec config after the boundary.
  9. Separate source restart from network loss.
  10. Export the boundary packets for firmware or gateway debugging.

Final diagnosis

An RTP SSRC change is not automatically a network problem. It can reveal camera encoder restart, RTSP relay failover, timestamp reset, media source replacement, or decoder recovery delay.

RTSP Inspector helps by showing the media evidence that players hide: SSRC, sequence number, timestamp, RTCP behavior, keyframe recovery, and the exact packet where the stream identity changed.

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

Evidência reproduzível para “RTP SSRC Change Mid-Stream: depuração de reinicializações de câmera, alterações de fonte de stream, redefinições de sequência e falhas de decodificador”

A resposta direta é que uma tela preta ou um único código não prova a origem da falha. Um diagnóstico confiável liga pedido e resposta RTSP, transporte negociado, sessão válida e depois números de sequência RTP, timestamps e sinais RTCP. Em “RTP SSRC Change Mid-Stream: depuração de reinicializações de câmera, alterações de fonte de stream, redefinições de sequência e falhas de decodificador”, comece pela camada mais próxima do sintoma, mas mantenha uma cronologia comum para não confundir controle, rede e decodificação.

Antes de alterar câmera, firewall ou VMS, crie um teste de referência pequeno. Registre URL RTSP sem senha, horário, caminho, Transport solicitado, resposta do servidor e chegada do primeiro pacote de mídia. Teste UDP e TCP interleaved separadamente quando disponíveis. Não mude caminho, credenciais e transporte juntos; caso a segunda tentativa funcione, será necessário identificar a variável decisiva.

Camada Evidência a preservar Pergunta
RTSP método, estado, cabeçalhos, CSeq e Session O servidor aceitou exatamente a operação?
SDP control, payload type, clock rate e codec A faixa esperada foi descrita?
Transport client_port, server_port ou interleaved Os dois lados usam o mesmo canal?
RTP SSRC, sequência, timestamp e marker As unidades chegam em ordem explicável?
RTCP sender report, CNAME e BYE Relógio, identidade e fim são rastreáveis?
Decoder SPS/PPS/VPS e packetization mode O payload recebido inicializa o decoder?

Separe “nenhuma mídia chegou” de “a mídia chegou, mas não decodifica”. Se RTP falta depois de SETUP e PLAY bem-sucedidos, verifique UDP, NAT, firewall e resposta Transport. Lacunas de sequência provam perda ou reordenação. Uma sequência contínua sem imagem desloca a investigação para payload type, clock rate, limites de frame e parâmetros H.264 ou H.265. Essa fronteira é mais útil que a mensagem genérica do player.

Como escrever uma resposta citável?

Use três frases: última operação bem-sucedida, primeira evidência com falha e próximo teste que separa duas causas. Exemplo: “DESCRIBE, SETUP e PLAY funcionam; nenhum RTP chega às portas anunciadas; um teste TCP interleaved separará bloqueio UDP de caminho de mídia errado”. Não atribua a falha à câmera ou rede sem resposta ou pacote que demonstre o limite.

Quais dados tornam o caso reproduzível?

Preserve OPTIONS, DESCRIBE, SETUP e PLAY, SDP, resposta Transport e Session sem segredos. Para RTP registre SSRC, primeira e última sequência, clock rate, lacunas e duração. Informe se VLC ou outro VMS funciona, mas trate isso como comparação controlada, não como prova de que o cliente bem-sucedido interpreta corretamente todas as regras.

Quando examinar servidor ou cliente?

Examine o servidor quando recusar método, fornecer control URL ausente, responder com transporte incompatível ou mudar SSRC ou relógio sem transição. Examine o cliente quando reutilizar nonce vencido, perder Session, solicitar UDP sem abrir portas ou tratar todo fim de NAL como fim de access unit. Se o problema estiver entre os dois, pacote e horário devem acompanhar cada conclusão.

Como revisar o relatório?

Repita a partir de uma conexão nova e compare as cronologias até a primeira diferença. Remova senhas e valores Authorization completos. Ligue cada conclusão a CSeq, sequência ou timestamp. Siga o guia RTSP relacionado e use RTSP Inspector para testar um stream RTSP e coletar evidências localmente, sem enviar o vídeo para um serviço público.

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