Streaming RTSP com GStreamer – Uma verdadeira pergunta do cliente&Um caso (UDP versus TCP)
Este artigo documenta uma conversa real de suporte ao cliente sobre streaming RTSP de nosso câmeras térmicas usando GStreamer.
Estamos compartilhando isso em um Q&Um formato de diálogo para que outros clientes que enfrentam problemas semelhantes possam seguir rapidamente o processo de solução de problemas.
Índice
1. Endereço de fluxo RTSP
Cliente:
Olá, recebemos suas câmeras térmicas, tudo funciona bem, obrigado, mas não conseguimos encontrar o endereço do fluxo RTSP. Qual é o /stream/sub?
Apoio, suporte:
O URL do stream RTSP da nossa câmera é:
rtsp://192.168.2.254:554/live
2. Preocupação com latência RTSP
Cliente:
Testamos o stream RTSP e notamos uma latência considerável em comparação com a visualização do painel de gerenciamento.
Apoio, suporte:
Este é o comportamento esperado. A visualização de gerenciamento da web usa um pipeline interno otimizado, enquanto o RTSP depende das condições da rede e do buffer do cliente.
3. Requisito de streaming UDP
Cliente:
O stream RTSP também não funciona no meu player que espera UDP. Como posso obter um fluxo UDP?
Apoio, suporte:
Posso saber qual player você está usando? VLC?
Cliente:
Meu player é GStreamer integrado em um aplicativo Android.
4. Unicast UDP versus Multicast UDP
Apoio, suporte:
Se o cliente GStreamer acessar o dispositivo usando Multicast UDP, isso é atualmente não suportado.
Precisamos esclarecer se você está usando Unicast UDP ou Multicast UDP.
Cliente:
Meu pipeline GStreamer usa rtspsrc com udp definido no protocols parâmetro.
eu não usei o udp-mcast valor, então deveria ser unicast UDP.
5. Esclarecimento da plataforma
Apoio, suporte:
Este GStreamer está rodando no Windows?, Linux, ou Android?
Nosso engenheiro de software gostaria de testar do nosso lado.
Cliente:
Meu aplicativo usa GStreamer no Android, mas rtspsrc também pode ser testado em Linux.
6. Problema conhecido do Linux GStreamer (Caso de referência)
Apoio, suporte:
Encontramos um problema semelhante discutido em um fórum técnico chinês.
Solução:
Desinstale o seguinte plugin:
sudo apt-get remove gstreamer1.0-plugins-ugly
Este plugin pode enviar cabeçalhos RTSP que algumas câmeras não conseguem reconhecer, resultando em um erro de negação de serviço.

Referência:
https://forums.developer.nvidia.com/t/rtsp-gstreamer-simple-recieve-and-store-in-file/157535/14
Você poderia fornecer seu rtspsrc gasoduto (Linux preferido)? Uma versão do aplicativo também é aceitável para teste.
7. Compatibilidade de cabeçalho RTSP DESCRIBE
Apoio, suporte:
Outra possível razão é que se o RTSP DESCREVER solicitação não contém:
application/sdp
o dispositivo pode recusar o serviço.
Esta lógica de validação pode ser muito rígida, e planejamos relaxar essa condição em futuras atualizações de firmware.
8. Confirmação da versão do Android GStreamer
Cliente:
No Android, estou usando:
- gstreamer-1.0-android-universal-1.26.8
Não inclui plugins feios. Meu Makefile contém:
GSTREAMER_PLUGINS := \
coreelements \
playback \
typefindfunctions \
rtsp \
rtp \
rtpmanager \
udp \
tcp \
videoparsersbad \
androidmedia \
opengl
9. Parâmetros de tempo de execução sugeridos do GStreamer
Apoio, suporte:
Recomendamos tentar short-header=true dentro rtspsrc.
Cliente:
Esse cabeçalho é para UDP?
Apoio, suporte:
É uma opção de cabeçalho RTSP e geralmente melhora a compatibilidade.
Exemplos:
gst-launch-1.0 rtspsrc location=rtsp://<ip>:<port>/<path> short-header=true
gst-launch-1.0 rtspsrc location=rtsp://<ip>:<port>/<path> do-rtcp=false short-header=true
10. Resultados de testes internos (Linux)
Apoio, suporte:
Nosso engenheiro testou o fluxo RTSP usando GStreamer 1.0 no Linux, e funcionou corretamente.


Exemplo TCP:
gst-launch-1.0 rtspsrc location="rtsp://192.168.2.254/live" \
name=src \
latency=0 \
protocols=tcp \
src. \
! decodebin \
! autovideosink
Exemplo UDP (remover protocols=tcp):
gst-launch-1.0 rtspsrc location="rtsp://192.168.2.254/live" \
name=src \
latency=0 \
src. \
! decodebin \
! autovideosink
A lógica interna entre Linux e Android GStreamer é a mesma, portanto, o comportamento deve ser consistente em todas as plataformas.
11. Conclusão
Este caso destaca vários pontos importantes ao usar RTSP com GStreamer:
- URL RTSP:
rtsp://<camera_ip>:554/live - UDP unicast é suportado; Multicast UDP não é
- Evite plug-ins problemáticos (Somente Linux)
- Tentar
short-header=truepara melhor compatibilidade - Os resultados dos testes do Linux geralmente podem ser aplicados ao Android
Se você encontrar problemas semelhantes, por favor forneça seu Pipeline GStreamer ou cliente de teste, e nossa equipe de engenharia ajudará ainda mais.

Faça uma pergunta
Sua mensagem foi enviada