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.
Table des matières
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.

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.


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=truepour 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
Merci pour votre réponse. ✨