Incompatibilidade de canal intercalado RTSP sobre TCP: corrigindo mapeamento de canal RTP/RTCP e sem problemas de vídeo

Como diagnosticar incompatibilidade de canais intercalados RTSP sobre TCP, mapeamento de canais RTP e RTCP, cabeçalhos de transporte, intercalados = 0-1, sem vídeo e falhas na análise de mídia da câmera.

rtsp sobre tcp, RTP intercalado, incompatibilidade de canal RTP, canal rtcp, cabeçalho de transporte rtsp, sem vídeo, diagnóstico rtsp

O transporte intercalado RTSP sobre TCP é frequentemente usado quando o UDP RTP é bloqueado por firewalls, NAT, VPNs ou caminhos de retransmissão em nuvem. Ele pode fazer o fluxo de uma câmera funcionar em redes onde o UDP falharia. Mas introduz outra classe de problemas: "incompatibilidade de canais intercalados. A sessão RTSP se conecta. DESCRIBE retorna SDP. SETUP foi bem-sucedido. PLAY foi bem-sucedido. Bytes de mídia chegam na conexão TCP. Em seguida, o cliente não mostra nenhum vídeo, nenhum áudio, canal RTP desconhecido, quadro intercalado malformado ou pacotes RTCP analisados ​​como RTP." Os usuários procuram por "RTSP sobre TCP intercalado sem vídeo", "Incompatibilidade de canal intercalado RTP", "RTSP intercalado 0-1", "Mapeamento de canal RTSP TCP" e "Erro de análise RTP sobre RTSP" quando o canal de controle funciona, mas a análise de mídia falha.

O RTSP Inspector é útil aqui porque a evidência importante está no cabeçalho Transport e nos dados intercalados com quadro $ na conexão TCP RTSP.

O que significa transporte intercalado

Com o transporte UDP, o controle RTSP usa TCP e a mídia RTP/RTCP usa portas UDP separadas. Com o transporte intercalado TCP, os pacotes de mídia são incorporados à conexão TCP RTSP.

A resposta SETUP pode conter:

Transport: RTP/AVP/TCP;unicast;interleaved=0-1

That means RTP and RTCP for that track should be carried on interleaved channels 0 and 1. Interleaved frames use a $ marker, a channel byte, a length, and then the RTP or RTCP packet.

If the client maps channels incorrectly, it may parse RTP as RTCP, audio as video, or metadata as media.

Multiple tracks create more mappings

A camera with video and audio may return separate SETUP responses:

Video Transport: RTP/AVP/TCP;unicast;interleaved=0-1
Audio Transport: RTP/AVP/TCP;unicast;interleaved=2-3

Agora o cliente deve mapear:

  • Canal 0: vídeo RTP
  • Canal 1: vídeo RTCP
  • Canal 2: áudio RTP
  • Canal 3: áudio RTCP

Se a ordem de configuração de áudio e vídeo for alterada, as suposições codificadas serão quebradas. Se uma faixa de metadados for adicionada, as atribuições de canal poderão mudar novamente.

Sintomas comuns

Os problemas de canais intercalados são semelhantes a:

  • A sessão RTSP atinge PLAY, mas o vídeo permanece preto.
  • Os bytes RTP chegam, mas o analisador de carga útil os rejeita.
  • Os relatórios do remetente RTCP são analisados ​​como mídia.
  • Os pacotes de áudio são enviados para o despacketizador de vídeo.
  • Os números de sequência parecem impossíveis.
  • O tipo de carga útil não corresponde ao SDP dessa faixa.
  • O cliente relata “pacote RTP inválido” ou “canal intercalado desconhecido”.

A rede pode estar bem. A câmera pode estar enviando mídia. O cliente está apenas lendo o mapeamento de canal errado.

O cabeçalho de transporte é a autoridade

Não infira o mapeamento de canais apenas pela ordem das trilhas. Use o cabeçalho Transport retornado pela câmera para cada SETUP.

Para cada faixa, preserve:

  • URL de controle de rastreamento.
  • Modo de transporte.
  • Par de canais intercalados.
  • Tipo de carga útil do SDP.
  • Tipo de mídia do SDP.

Em seguida, compare os quadros intercalados recebidos com esse mapeamento.

Peculiaridades da câmera e do proxy

Algumas câmeras se comportam de maneira inconsistente:

  • Eles ignoram os números de canais intercalados solicitados e atribuem os seus próprios.
  • Eles retornam interleaved=0-1 para múltiplas faixas.
  • Eles enviam RTCP em canais inesperados.
  • Eles omitem o RTCP.
  • Um proxy reescreve Transport mas não reescreve quadros de mídia.

Esses são exatamente os casos em que um teste somente para jogadores esconde muita coisa. O RTSP bruto e a evidência de quadros intercalados são importantes.

Lista de verificação para depuração de canais intercalados

Use este fluxo de trabalho:

  1. Capture SDP de DESCRIBE.
  2. Identifique cada faixa de mídia.
  3. Capture todas as solicitações e respostas SETUP.
  4. Registre cabeçalhos Transport e valores interleaved=.
  5. Mapeie os números dos canais para rastrear e a função RTP/RTCP.
  6. Inspecione quadros $ recebidos e bytes de canal.
  7. Compare os tipos de carga útil RTP com o SDP para essa faixa.
  8. Verifique se o RTCP aparece no canal ímpar esperado.
  9. Verifique se os mapeamentos de canais mudam após a reconexão.
  10. Teste o UDP somente depois que o mapeamento intercalado TCP for compreendido.

Diagnóstico final

Problemas intercalados de RTSP sobre TCP nem sempre são problemas de rede. Se a mídia chegar, mas nenhum vídeo aparecer, inspecione o mapeamento de canais. O cabeçalho Transport define qual canal intercalado transporta cada fluxo RTP e RTCP.

O RTSP Inspector ajuda expondo o controle RTSP e o enquadramento de mídia intercalado, de modo que "RTSP conecta, mas não há vídeo" pode ser diagnosticado como um problema de mapeamento de canal em vez de uma suposição de codec ou firewall.