RTSP GStreamer Diffusion UDP & Correction de la latence pour les caméras thermiques

Streaming RTSP avec GStreamer – Un vrai client Q&Un cas (UDP contre TCP)

Cet article documente une véritable conversation de support client concernant le streaming RTSP depuis notre caméras thermiques en utilisant Greffe.
Nous le partageons dans un Q&Un format de dialogue afin que d'autres clients confrontés à des problèmes similaires puissent suivre rapidement le processus de dépannage.


1. Adresse du flux RTSP

Client:
Bonjour, nous avons reçu vos caméras thermiques, tout fonctionne bien, merci, mais nous n'arrivons pas à trouver l'adresse du flux RTSP. Quel est le /stream/sub?

Soutien:
L'URL du flux RTSP de notre caméra est:

rtsp://192.168.2.254:554/live

2. Problème de latence RTSP

Client:
Nous avons testé le flux RTSP et avons remarqué une latence considérable par rapport à l'aperçu du panneau de gestion..

Soutien:
C'est un comportement attendu. L'aperçu de la gestion Web utilise un pipeline interne optimisé, tandis que RTSP dépend des conditions du réseau et de la mise en mémoire tampon du client.


3. Exigence de diffusion UDP

Client:
Le flux RTSP ne fonctionne pas non plus sur mon lecteur qui attend UDP. Comment puis-je obtenir un flux UDP?

Soutien:
Puis-je savoir quel lecteur vous utilisez? VLC?

Client:
Mon lecteur est GStreamer intégré dans une application Android.


4. Unidiffusion UDP vs multidiffusion UDP

Soutien:
Si le client GStreamer accède au périphérique en utilisant Multidiffusion UDP, c'est actuellement non supporté.
Nous devons préciser si vous utilisez Monodiffusion UDP ou Multidiffusion UDP.

Client:
Mon pipeline GStreamer utilise rtspsrc avec udp mis dans le protocols paramètre.
Je n'ai pas utilisé le udp-mcast valeur, donc ça devrait être unicast UDP.


5. Clarification de la plateforme

Soutien:
Ce GStreamer fonctionne-t-il sous Windows ?, Linux, ou Android?
Notre ingénieur logiciel aimerait tester de notre côté.

Client:
Mon application utilise GStreamer sur Android, mais rtspsrc peut également être testé sous Linux.


6. Problème connu avec Linux GStreamer (Cas de référence)

Soutien:
Nous avons trouvé un problème similaire discuté dans un forum technique chinois.

Solution:
Désinstallez le plugin suivant:

sudo apt-get remove gstreamer1.0-plugins-ugly

Ce plugin peut envoyer des en-têtes RTSP que certaines caméras ne peuvent pas reconnaître, entraînant une erreur de déni de service.

RTSP GStreamer UDP Streaming & Latency Fix for Thermal Cameras 1

Référence:
https://forums.developer.nvidia.com/t/rtsp-gstreamer-simple-recieve-and-store-in-file/157535/14

Pourriez-vous fournir votre rtspsrc pipeline (Linux préféré)? Une version de l'application est également acceptable pour les tests.


7. Compatibilité de l'en-tête RTSP DESCRIBE

Soutien:
Une autre raison possible est que si le RTSP DÉCRIRE la demande ne contient pas:

application/sdp

l'appareil peut refuser le service.

Cette logique de validation est peut-être trop stricte, et nous prévoyons d'assouplir cette condition dans les futures mises à jour du firmware.


8. Confirmation de la version d'Android GStreamer

Client:
Sur Android, j'utilise:

  • gstreamer-1.0-android-universel-1.26.8

Il n'inclut pas les plugins laids. Mon Makefile contient:

GSTREAMER_PLUGINS := \
    coreelements \
    playback \
    typefindfunctions \
    rtsp \
    rtp \
    rtpmanager \
    udp \
    tcp \
    videoparsersbad \
    androidmedia \
    opengl

9. Paramètres d'exécution de GStreamer suggérés

Soutien:
Nous vous recommandons d'essayer short-header=true dans rtspsrc.

Client:
Est-ce que cet en-tête est pour UDP ??

Soutien:
Il s'agit d'une option d'en-tête RTSP qui améliore souvent la compatibilité.

Exemples:

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. Résultats des tests internes (Linux)

Soutien:
Notre ingénieur a testé le flux RTSP en utilisant Greffe 1.0 sous Linux, et ça a fonctionné correctement.

GStream-1 test on linux
Test GStream-1 sous Linux
GStream-1 test on linux working well
Le test GStream-1 sur Linux fonctionne bien

Exemple TCP:

gst-launch-1.0 rtspsrc location="rtsp://192.168.2.254/live" \
  name=src \
  latency=0 \
  protocols=tcp \
src. \
  ! decodebin \
  ! autovideosink

Exemple UDP (retirer protocols=tcp):

gst-launch-1.0 rtspsrc location="rtsp://192.168.2.254/live" \
  name=src \
  latency=0 \
src. \
  ! decodebin \
  ! autovideosink

La logique interne entre Linux et Android GStreamer est la même, le comportement doit donc être cohérent sur toutes les plateformes.


11. Conclusion

Ce cas met en évidence plusieurs points importants lors de l'utilisation de RTSP avec GStreamer:

  • URL RTSP: rtsp://<camera_ip>:554/live
  • UDP monodiffusion est soutenu; La multidiffusion UDP n'est pas
  • Évitez les plugins problématiques (Linux uniquement)
  • Essayer short-header=true pour une meilleure compatibilité
  • Les résultats des tests Linux peuvent généralement être appliqués à Android

Si vous rencontrez des problèmes similaires, veuillez fournir votre Pipeline GStreamer ou client de test, et notre équipe d'ingénieurs vous aidera davantage.

Poser une question

← Retour

Merci pour votre réponse. ✨