Correção de solicitação incorreta do RTSP 400: DESCRIBE falhou, URL da câmera malformado e erros de cabeçalho
Corrigir solicitação incorreta de RTSP 400 em DESCRIBE. Abrange URLs de câmera malformados para Axis/Dahua/Hikvision, cabeçalhos não suportados, problemas de proxy reverso, autenticação e caminhos de fluxo específicos do fornecedor com comandos de diagnóstico reais.
RTSP/1.0 400 Bad Request significa que a câmera rejeitou sua solicitação RTSP como malformada. Não é um problema de rede. Não é um problema de codec. É um problema de formato de solicitação – e pode ser corrigido quando você vê a solicitação exata que a câmera recebeu.
Resposta rápida: triagem de 30 segundos
- Teste primeiro com o VLC. Se o VLC funcionar, capture a solicitação RTSP exata que ele envia. Compare com o seu cliente com falha.
- Verifique o caminho do URL. Câmeras diferentes usam caminhos completamente diferentes para o mesmo fluxo RTSP. Copiar um URL de uma marca de câmera para outra é a causa número 1 de 400 erros.
- Check URL encoding. Special characters in passwords break RTSP URL parsing. Encode
@as%40,:as%3A,/as%2F. - Verifique se há interferência de proxy. O RTSP direto para a câmera funciona, mas através de um proxy retorna 400? O proxy está alterando os cabeçalhos RTSP.
Se nada disso resolver o problema, siga as seções detalhadas abaixo.
Primeiro: verifique se a câmera está acessível
Antes de depurar o RTSP, confirme a conectividade básica:
# TCP reachability
nc -zv 192.168.1.100 554
# Or with telnet
telnet 192.168.1.100 554
# RTSP OPTIONS — the simplest RTSP request
# If this fails, the camera isn't speaking RTSP
If the port is closed, the problem is network/firewall, not RTSP.
Camera-specific URL formats
The most common cause of 400 errors: using the wrong URL path format for your camera brand. Each manufacturer uses different conventions:
Axis
rtsp://<ip>/axis-media/media.amp
rtsp://<ip>/mpeg4/media.amp
rtsp://<ip>:554/axis-media/media.amp?videocodec=h264
Dahua
rtsp://<user>:<pass>@<ip>:554/cam/realmonitor?channel=1&subtype=0
rtsp://<user>:<pass>@<ip>:554/cam/realmonitor?channel=1&subtype=1
- subtype=0: main stream
- subtype=1: sub stream
Hikvision
rtsp://<user>:<pass>@<ip>:554/Streaming/Channels/101
rtsp://<user>:<pass>@<ip>:554/Streaming/Channels/102
- 101: channel 1, main stream
- 102: channel 1, sub stream
- 201: channel 2, main stream
Generic / ONVIF
rtsp://<ip>:554/stream1
rtsp://<ip>:554/live
rtsp://<ip>:554/h264
rtsp://<ip>:554/h265
rtsp://<ip>:554/profile1/media.smp
rtsp://<ip>/onvif1
rtsp://<ip>/onvif2
Testing with ffmpeg
# Test DESCRIBE only (don't decode)
ffmpeg -rtsp_transport tcp -i "rtsp://user:pass@192.168.1.100:554/stream1" -t 1 -f null -
# A saída detalhada mostra a troca RTSP exata
ffmpeg -loglevel debug -rtsp_transport tcp -i "rtsp://..." -t 1 -f null - 2>&1 | grep -E "DESCREVA|CONFIGURAÇÃO|resposta"
Codificação de URL: o gatilho silencioso 400
When a password contains special characters, the RTSP URL becomes ambiguous. The @ separates credentials from the host, so a password containing @ breaks the parsing.
WRONG: rtsp://admin:pa@ss@192.168.1.100/stream1
parser sees: user=admin, pass=pa, host=ss@192.168.1.100
RIGHT: rtsp://admin:pa%40ss@192.168.1.100/stream1
parser sees: user=admin, pass=pa@ss, host=192.168.1.100
Characters that must be encoded in RTSP URLs:
| Character | Encoding | Example |
|---|---|---|
@ |
%40 |
user@domain → user%40domain |
: |
%3A |
pass:word → pass%3Aword |
/ |
%2F |
pass/word → pass%2Fword |
? |
%3F |
in query values |
# |
%23 |
in query values |
% |
%25 |
literal percent |
& |
%26 |
in query values (if not separating parameters) |
| space | %20 |
in query values |
Config files often add another layer of escaping. A URL in a YAML file may need both YAML escaping AND URL encoding.
Full diagnostic decision tree
RTSP returns 400 Bad Request
│
├─ Is port 554 reachable?
│ ├─ NO → Fix network/firewall. Not an RTSP issue.
│ └─ YES → Continue
│
├─ Does VLC play the same URL?
│ ├─ YES, VLC works → Capture VLC's exact request. Compare with your client.
│ │ Differences in headers, URI format, or auth will point to the fix.
│ └─ NO, VLC also fails → Problem is in the URL or camera config
│
├─ Check the URL path
│ ├─ Wrong manufacturer format → Use correct format for your camera brand
│ ├─ Query parameters missing → Add required parameters (channel, subtype)
│ └─ Path contains unencoded special chars → URL-encode credentials
│
├─ Check DESCRIBE headers
│ ├─ Missing Accept: application/sdp → Add it
│ ├─ Extra HTTP headers (via proxy) → Remove proxy from RTSP path
│ └─ Malformed Authorization → Fix Digest auth parameters
│
├─ Check CSeq and RTSP syntax
│ ├─ Missing CSeq → Add sequential CSeq header
│ ├─ Wrong RTSP version → Use RTSP/1.0
│ └─ CRLF formatting wrong → Ensure \r\n line endings
│
└─ Still failing?
├─ Try ONVIF discovery to get the correct RTSP URL
├─ Check camera firmware version (older firmware may have stricter parsing)
└─ Test with a known-working RTSP client as baseline
Proxy reverso: a causa 400 oculta
O RTSP por meio de um proxy reverso HTTP é frágil. Os proxies projetados para HTTP podem:
- Injetar cabeçalhos específicos de HTTP (Host, X-Forwarded-For, User-Agent)
- Reescreva o URI da solicitação
- Buffer e alterar o comportamento da conexão TCP
- Interferir no modelo de conexão persistente do RTSP
Sintomas de interferência de proxy:
- RTSP direto para a câmera: funciona
- RTSP através de proxy: 400 solicitações incorretas
- Os registros da câmera mostram "solicitação malformada" com cabeçalhos extras não presentes no fluxo direto
Correção: Ignore o proxy para tráfego RTSP, use um proxy compatível com RTSP ou configure o proxy para passar o tráfego RTSP sem modificações.
Casos extremos de autenticação
A maioria dos problemas de autenticação retorna 401, mas um cabeçalho de autorização malformado pode retornar 400.
O padrão "funciona na primeira tentativa, falha na nova tentativa":
- Cliente envia DESCRIBE não autenticado
- A câmera retorna 401 com o desafio Digest (reino, nonce)
- O cliente calcula a resposta Digest
- Cliente envia DESCRIBE autenticado com cabeçalho de autorização
- Câmera retorna 400
Isso acontece quando o cálculo da resposta Digest está errado — o URI usado no cálculo Digest não corresponde ao URI da solicitação real, ou o nonce estava obsoleto ou os caracteres especiais na senha não foram codificados corretamente antes do hash.
Verificar: Compare o URI da solicitação no cabeçalho de autorização com o URI da solicitação real na transmissão. Na autenticação Digest, o URI faz parte do hash – se eles não corresponderem caractere por caractere (incluindo codificação), a resposta será inválida.
Quando a câmera está quebrada
Algumas câmeras possuem implementações RTSP com bugs. Se você verificou tudo acima e ainda obteve 400:
- Verifique se há atualizações de firmware
- Teste com o software cliente do próprio fabricante
- Experimente o ONVIF como um caminho alternativo de descoberta e streaming
- Se a câmera funcionar com seu próprio aplicativo, mas não com clientes RTSP compatíveis com os padrões, a pilha RTSP da câmera não será compatível
Registre um bug com o fornecedor da câmera. Inclua a solicitação e resposta exatas do RTSP DESCRIBE. Uma implementação RTSP adequada não deve retornar 400 para uma solicitação válida e bem formada, independentemente do caminho da URL — ela deve retornar 404.
<!-- rtsp-localized-evidence-foundation-v1:start -->Evidência reproduzível para “Correção de solicitação incorreta do RTSP 400: DESCRIBE falhou, URL da câmera malformado e erros de cabeçalho”
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 “Correção de solicitação incorreta do RTSP 400: DESCRIBE falhou, URL da câmera malformado e erros de cabeçalho”, 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 --><!-- multilingual-blog-closeout:start -->Resposta direta e limite de aceitação
A resposta curta para “Correção de solicitação incorreta do RTSP 400: DESCRIBE falhou, URL da câmera malformado e erros de cabeçalho” é: Corrigir solicitação incorreta de RTSP 400 em DESCRIBE. Abrange URLs de câmera malformados para Axis/Dahua/Hikvision, cabeçalhos não suportados, problemas de proxy reverso, autenticação e caminhos de fluxo específicos do fornecedor com comandos de diagnóstico reais. Trate essa frase como um resultado a verificar, não como promessa para qualquer entrada, dispositivo, projeto ou ambiente. Um resultado completo registra estado inicial, ação exata, saída visível e condição que comprova a conclusão da tarefa no RTSP Inspector.
Procedimento orientado por evidências
Comece com um caso pequeno e repetível antes de alterar um projeto completo. Registre versão do aplicativo, sistema operacional, identidade da entrada ou dispositivo, configurações relevantes e resultado esperado. Execute uma ação deliberada, preserve a primeira transição inesperada e compare com um caso conhecido quando possível. Alterar vários controles ao mesmo tempo esconde qual condição criou ou corrigiu o problema.
Ponto de controle 1: Correção de solicitação incorreta do RTSP 400: DESCRIBE falhou, URL da câmera malformado e
Para “Correção de solicitação incorreta do RTSP 400: DESCRIBE falhou, URL da câmera malformado e erros de cabeçalho”, separe uma decisão do produto de um limite do sistema, hardware, arquivo, permissão ou processo. Confirme qual camada produziu a evidência antes de atribuir causa. Isso evita transformar um sintoma próximo em causa raiz supostamente provada.
Ponto de controle 2: Corrigir solicitação incorreta de RTSP 400 em DESCRIBE. Abrange URLs de câmera malformados
Encerre “Corrigir solicitação incorreta de RTSP 400 em DESCRIBE. Abrange URLs de câmera malformados para Axis/Dahua/Hikvision, cabeçalhos não suportados, probl” somente quando o resultado salvo, exportado ou reaberto continuar igual ao estado observado. O retorno temporário da interface ajuda, mas evidência durável é mais forte. Registre qualquer limite restante para a próxima pessoa.
Ponto de controle 3: Resposta rápida: triagem de 30 segundos
Para “Resposta rápida: triagem de 30 segundos”, separe uma decisão do produto de um limite do sistema, hardware, arquivo, permissão ou processo. Confirme qual camada produziu a evidência antes de atribuir causa. Isso evita transformar um sintoma próximo em causa raiz supostamente provada.
Ponto de controle 4: Primeiro: verifique se a câmera está acessível
Encerre “Primeiro: verifique se a câmera está acessível” somente quando o resultado salvo, exportado ou reaberto continuar igual ao estado observado. O retorno temporário da interface ajuda, mas evidência durável é mais forte. Registre qualquer limite restante para a próxima pessoa.
Ponto de controle 5: Camera-specific URL formats
Para “Camera-specific URL formats”, separe uma decisão do produto de um limite do sistema, hardware, arquivo, permissão ou processo. Confirme qual camada produziu a evidência antes de atribuir causa. Isso evita transformar um sintoma próximo em causa raiz supostamente provada.
Ponto de controle 6: Axis
Encerre “Axis” somente quando o resultado salvo, exportado ou reaberto continuar igual ao estado observado. O retorno temporário da interface ajuda, mas evidência durável é mais forte. Registre qualquer limite restante para a próxima pessoa.
Ponto de controle 7: Dahua
Para “Dahua”, separe uma decisão do produto de um limite do sistema, hardware, arquivo, permissão ou processo. Confirme qual camada produziu a evidência antes de atribuir causa. Isso evita transformar um sintoma próximo em causa raiz supostamente provada.
Ponto de controle 8: Hikvision
Encerre “Hikvision” somente quando o resultado salvo, exportado ou reaberto continuar igual ao estado observado. O retorno temporário da interface ajuda, mas evidência durável é mais forte. Registre qualquer limite restante para a próxima pessoa.
Ponto de controle 9: Generic / ONVIF
Para “Generic / ONVIF”, separe uma decisão do produto de um limite do sistema, hardware, arquivo, permissão ou processo. Confirme qual camada produziu a evidência antes de atribuir causa. Isso evita transformar um sintoma próximo em causa raiz supostamente provada.
Ponto de controle 10: Testing with ffmpeg
Encerre “Testing with ffmpeg” somente quando o resultado salvo, exportado ou reaberto continuar igual ao estado observado. O retorno temporário da interface ajuda, mas evidência durável é mais forte. Registre qualquer limite restante para a próxima pessoa.
Matriz de aceitação
| Ponto | Evidência a manter | Condição de aprovação |
|---|---|---|
| Correção de solicitação incorreta do RTSP 400: DESCRIBE falhou, URL da câmera malformado e erros de cabeçalho | Estado inicial, uma ação e estado resultante | Outra pessoa reproduz o resultado declarado |
| Corrigir solicitação incorreta de RTSP 400 em DESCRIBE. Abrange URLs de câmera malformados para Axis/Dahua/Hikvision, ca | Estado inicial, uma ação e estado resultante | Outra pessoa reproduz o resultado declarado |
| Resposta rápida: triagem de 30 segundos | Estado inicial, uma ação e estado resultante | Outra pessoa reproduz o resultado declarado |
| Primeiro: verifique se a câmera está acessível | Estado inicial, uma ação e estado resultante | Outra pessoa reproduz o resultado declarado |
| Camera-specific URL formats | Estado inicial, uma ação e estado resultante | Outra pessoa reproduz o resultado declarado |
| Axis | Estado inicial, uma ação e estado resultante | Outra pessoa reproduz o resultado declarado |
Isolamento, recuperação e entrega
Pare no primeiro limite que falhar. Preserve fonte, projeto, sessão ou captura, duplique antes de edição destrutiva e altere uma variável por experimento. Repetir um fluxo amplo depois de várias mudanças pode gerar outro resultado sem explicar o motivo.
Separe ausência de evidência de evidência de ausência. Uma tela vazia pode indicar entrada, escopo, filtro, permissão, dispositivo, intervalo ou estado incorreto. Verifique aquisição ou importação antes de interpretar decoder, editor, relatório ou exportação.
Antes da entrega, reabra o artefato e examine início, ponto de decisão e final. Registre versão, plataforma, configuração, expectativa, observação e reprodução mínima. Remova ou oculte dados sensíveis e confirme a autorização do destinatário.
Perguntas e respostas
Qual é a maneira confiável mais rápida de começar?
Use o menor caso representativo, escreva o resultado esperado e altere uma variável. Confirme o caminho básico antes de adicionar filtros, efeitos, edições, automação ou uma fonte maior.
Quais evidências devem ser salvas?
Mantenha identidade da entrada, versão, plataforma, configurações, ação exata, primeira transição inesperada e saída final. Feche e reabra projeto, sessão, relatório ou exportação antes de tratá-lo como durável.
Quando o procedimento deve ser repetido?
Repita após mudanças relevantes no aplicativo, sistema, driver, firmware, modelo, fonte ou fluxo. Preserve o caso aceito anterior como referência sem alterações.
Quando a tarefa está pronta para entrega?
Quando outra pessoa autorizada identifica a entrada, repete a ação, vê o mesmo resultado, entende os limites restantes e abre o artefato sem depender de estado local não documentado.
Guias relacionados
Estas páginas no mesmo idioma cobrem etapas próximas sem alterar o proprietário canônico deste assunto:
- RTSP 401 não autorizado e 404 não encontrado: diagnosticando URL da câmera e falhas de autenticação
- Sessão RTSP 454 não encontrada: por que SETUP ou PLAY falha após o início da conexão da câmera
- Erro interno do servidor RTSP 500: caminho de fluxo da câmera, recurso do codificador, firmware e diagnóstico de sessão