Transmissões de câmera RTCP BYE e RTSP terminando inesperadamente: por que o vídeo para sem um erro claro

Como depurar RTCP BYE, final de fluxo RTP, desmontagem de câmera, tempo limite de sessão, perda de pacotes e interrupções inesperadas de fluxo RTSP com evidência de protocolo.

rtcp tchau, fluxo rtsp termina, o fluxo da câmera é interrompido, diagnóstico RTP, desmontagem rtsp, tempo limite da sessão

Alguns fluxos de câmera RTSP não falham com um erro de limpeza. Eles começam, tocam por um tempo e então o vídeo para. O jogador pode congelar no último quadro. O gravador pode fechar o arquivo. O cliente pode se reconectar automaticamente. Os logs podem dizer "fim do fluxo", "tempo limite de RTP", "RTCP BYE", "conexão fechada do servidor" ou nada de útil.

Pesquisas como "stream de câmera RTCP BYE", "stream RTSP termina inesperadamente", "câmera envia RTCP BYE", "stream RTP para sem erro" e "vídeo RTSP congela após minutos" geralmente vêm de equipes que já provaram que o URL funciona. Eles precisam saber por que a transmissão terminou.

RTCP BYE é uma resposta possível. É uma mensagem de controle que indica que um participante está saindo da sessão RTP. Em um fluxo de câmera, isso pode significar que a câmera encerrou intencionalmente uma trilha de mídia, reiniciou seu codificador, expirou uma sessão ou fechou a entrega de mídia enquanto o canal de controle RTSP se comportava de maneira diferente.

O Inspetor RTSP é útil porque um jogador pode ocultar esse detalhe. Uma ferramenta de diagnóstico de protocolo pode preservar eventos RTSP, RTP e RTCP juntos.

O que significa RTCP BYE

RTCP é o protocolo de controle emparelhado com RTP. RTP transporta pacotes de mídia. O RTCP transporta relatórios e informações de controle. Um pacote RTCP BYE sinaliza que uma fonte está saindo da sessão RTP.

Em um caso simples:

RTP video packets arrive
RTCP Sender Reports arrive
RTCP BYE arrives
RTP video packets stop

RTCP BYE vs RTP timeout

Common reasons include:

RTSP TEARDOWN vs RTCP BYE

RTSP TEARDOWN and RTCP BYE are different.

TEARDOWN rtsp://camera/stream RTSP/1.0
Session: 12345678

RTCP BYE é um pacote de controle de sessão de mídia. Um fluxo pode terminar com um, ambos ou nenhum visível, dependendo do comportamento da câmera e do ponto de captura.

Casos:

  • Cliente envia RTSP TEARDOWN: desligamento esperado.
  • A câmera fecha a conexão TCP: fim abrupto do lado do servidor.
  • A câmera envia RTCP BYE: fonte de mídia encerrada.
  • RTP para sem RTCP BYE: tempo limite ou caminho de mídia perdido.
  • O RTSP permanece aberto, mas o RTP termina: a camada de mídia terminou enquanto o controle permaneceu ativo.

Essa distinção ajuda a evitar culpar a camada errada.

A transmissão termina após um tempo previsível

Se o fluxo terminar em 30, 60, 120 ou 300 segundos, suspeite de manutenção de atividade ou tempo limite de sessão. Verifique o cabeçalho RTSP Session:

Session: abcdef;timeout=60

Stream ends during camera reconfiguration

Many cameras restart encoders when settings change:

NVR and channel behavior

Evidence to collect:

Packet loss before BYE

Checklist for RTCP BYE investigations

Use this process:

What a useful report includes

For a vendor or network team, include:

Final diagnosis

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

Evidência reproduzível para “Transmissões de câmera RTCP BYE e RTSP terminando inesperadamente: por que o vídeo para sem um erro claro”

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 “Transmissões de câmera RTCP BYE e RTSP terminando inesperadamente: por que o vídeo para sem um erro claro”, 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 --><!-- rtsp-localized-layer-verdicts-v1:start -->

Da observação ao veredito por camada

Em “Transmissões de câmera RTCP BYE e RTSP terminando inesperadamente: por que o vídeo para sem um erro claro”, escreva primeiro a observação e depois a interpretação. Outra pessoa deve localizar a observação na captura: estado RTSP ligado a CSeq, valor SDP, resposta Transport, lacuna de sequência, mudança de SSRC ou diferença entre RTP timestamp e RTCP sender report. “O servidor está lento” ou “o codec é incompatível” continua hipótese até que uma prova específica a explique melhor que as alternativas.

Divida o fluxo em fronteiras. Primeiro TCP abre; depois OPTIONS ou DESCRIBE é aceito. SDP deve descrever faixa utilizável, control URL, payload type e clock rate. SETUP precisa de resposta Transport compatível e PLAY de Session válida. Só então vêm chegada RTP, ordem, tempo e preparo do decoder. Pare na primeira fronteira sem prova de sucesso.

Mantenha fonte e intervalo constantes nas comparações. UDP contra TCP interleaved usa caminho e credenciais iguais. Main stream contra sub stream preserva cliente e transporte. Ao comparar VLC com VMS, registre métodos, cabeçalhos e URL reais. Diferença em control URL, Authorization, Session ou keepalive pode explicar o resultado melhor que o nome do programa.

Matriz de exclusão

Comece com duas hipóteses. Sem mídia, UDP pode estar bloqueado ou o servidor pode enviar a outras portas. TCP interleaved testa a primeira; comparar oferta e resposta Transport, IP e portas testa a segunda. Para imagem corrompida, RTP sequence separa perda de inicialização incompleta, enquanto SPS/PPS/VPS antes do primeiro frame testa os parâmetros codec.

Para cada hipótese anote prova favorável e prova que pode refutá-la. Uma afirmação que nenhum pacote consegue negar é ampla demais. “NAT descarta UDP” é refutada por RTP na porta do cliente. “Faltam parâmetros H.264” é refutada por SPS e PPS válidos antes de IDR. Assim o relatório mantém prioridade.

Não misturar relógios

RTSP CSeq ordena transações, RTP sequence ordena pacotes, RTP timestamp expressa tempo de amostra e capture clock expressa chegada ao ponto observado. Não são o mesmo relógio. Variação de chegada não prova drift; salto timestamp não prova perda sem sequência. RTCP sender report liga relógios RTP de áudio e vídeo a uma referência comum.

Pacote de aceitação

Encerre quando a correção se repetir em conexão nova com uma mudança documentada. O relatório informa entradas, última fronteira correta, primeira prova falha, alteração, resultado e testes abertos. Anexe transcript curto ou estatísticas focadas. Oculte segredos, mas preserve CSeq, Session limpa, SSRC e intervalo.

Use a solução de problemas RTSP para reconstruir o fluxo e os relatórios do RTSP Inspector para entregar a fronteira à equipe de câmera, rede ou VMS.

Registro da mudança e teste de regressão

Transforme a correção em registro repetível: valor anterior e novo, local da configuração, hora da reconexão e efeito esperado nos pacotes. Em TCP interleaved não basta “a imagem apareceu”; a mídia deve deixar de depender de portas UDP e surgir nos canais negociados. Se control URL mudou, SETUP deve usar o caminho novo e PLAY e keepalive devem preservar a mesma Session.

Quando for seguro, faça um controle negativo. Restaure o valor anterior em ambiente de teste ou compare uma captura antiga com entradas iguais; a mesma fronteira deve falhar. Isso evita confundir reinício, cache ou mudança de rede não documentada com a solução. Em câmera de produção, use evidência histórica e não provoque a queda.

Mantenha a conexão além de keepalive e Session timeout. Observe OPTIONS ou GET_PARAMETER e a coerência de CSeq e Session. Em RTP compare perda, duplicatas e reordenação em janelas iguais antes e depois. Para codec abra conexão nova e espere o primeiro IDR; decoder já inicializado pode esconder parâmetros iniciais ausentes.

Limite a afirmação: “main stream TCP verificado dez minutos com este cliente” é melhor que “RTSP corrigido”. Informe faixa, transporte, codec, cliente e duração. Áudio, sub stream e reconexão após perda de rede ficam abertos se não foram testados.

Separe fatos e recomendação. Fatos são respostas, pacotes e medidas; recomendação propõe mudança em câmera, firewall ou cliente. Outra equipe deve aceitar os fatos mesmo escolhendo outra solução. Termine com responsável, próxima ação e critério, entregando o intervalo pela guia de relatórios RTSP.

<!-- rtsp-localized-layer-verdicts-v1:end -->