RTSP-Streaming mit GStreamer – Eine echte Kundenfrage&Ein Fall (UDP vs. TCP)
Dieser Artikel dokumentiert ein echtes Kundensupportgespräch zum Thema RTSP-Streaming von unserem Wärmebildkameras verwenden Gstreamer.
Wir teilen es in einem Q&Ein Dialogformat So können andere Kunden, die mit ähnlichen Problemen konfrontiert sind, den Fehlerbehebungsprozess schnell verfolgen.
Inhaltsverzeichnis
1. RTSP-Stream-Adresse
Kunde:
Hallo, Wir haben Ihre Wärmebildkameras erhalten, alles funktioniert gut, Danke, aber wir können anscheinend die Adresse für den RTSP-Stream nicht finden. Was ist das /stream/sub?
Unterstützung:
Die URL unseres Kamera-RTSP-Streams lautet:
rtsp://192.168.2.254:554/live
2. Bedenken hinsichtlich der RTSP-Latenz
Kunde:
Wir haben den RTSP-Stream getestet und eine erhebliche Latenz im Vergleich zur Vorschau des Management-Panels festgestellt.
Unterstützung:
Dies ist das erwartete Verhalten. Die Webverwaltungsvorschau verwendet eine intern optimierte Pipeline, während RTSP von den Netzwerkbedingungen und der Client-Pufferung abhängt.
3. UDP-Streaming-Anforderung
Kunde:
Der RTSP-Stream funktioniert auch nicht auf meinem Player, der UDP erwartet. Wie kann ich einen UDP-Stream erhalten??
Unterstützung:
Darf ich wissen, welchen Player Sie verwenden?? VLC?
Kunde:
Mein Player ist GStreamer, der in eine Android-App integriert ist.
4. UDP Unicast vs. UDP Multicast
Unterstützung:
Wenn der GStreamer-Client über auf das Gerät zugreift UDP Multicast, das ist aktuell nicht unterstützt.
Wir müssen klären, ob Sie es verwenden UDP-Unicast oder UDP Multicast.
Kunde:
Meine GStreamer-Pipeline verwendet rtspsrc mit udp eingestellt in der protocols Parameter.
Ich habe das nicht genutzt udp-mcast Wert, es sollte also UDP-Unicast sein.
5. Klarstellung der Plattform
Unterstützung:
Läuft dieser GStreamer unter Windows?, Linux, oder Android?
Unser Software-Ingenieur würde gerne auf unserer Seite testen.
Kunde:
Meine App verwendet GStreamer auf Android, aber rtspsrc kann auch unter Linux getestet werden.
6. Bekanntes Linux GStreamer-Problem (Referenzfall)
Unterstützung:
Wir haben ein ähnliches Problem gefunden, das in einem chinesischen Technikforum diskutiert wurde.
Lösung:
Deinstallieren Sie das folgende Plugin:
sudo apt-get remove gstreamer1.0-plugins-ugly
Dieses Plugin sendet möglicherweise RTSP-Header, die einige Kameras nicht erkennen können, Dies führt zu einem Denial-of-Service-Fehler.

Referenz:
https://forums.developer.nvidia.com/t/rtsp-gstreamer-simple-recieve-and-store-in-file/157535/14
Könnten Sie Ihre zur Verfügung stellen? rtspsrc Pipeline (Linux bevorzugt)? Zum Testen ist auch eine App-Version akzeptabel.
7. RTSP DESCRIBE-Header-Kompatibilität
Unterstützung:
Ein weiterer möglicher Grund ist, dass der RTSP BESCHREIBEN Anfrage enthält nicht:
application/sdp
Das Gerät kann den Dienst verweigern.
Diese Validierungslogik ist möglicherweise zu streng, Wir planen, diesen Zustand in zukünftigen Firmware-Updates zu lockern.
8. Bestätigung der Android GStreamer-Version
Kunde:
Auf Android, Ich benutze:
- gstreamer-1.0-android-universal-1.26.8
Es enthält keine hässlichen Plugins. Mein Makefile enthält:
GSTREAMER_PLUGINS := \
coreelements \
playback \
typefindfunctions \
rtsp \
rtp \
rtpmanager \
udp \
tcp \
videoparsersbad \
androidmedia \
opengl
9. Empfohlene GStreamer-Laufzeitparameter
Unterstützung:
Wir empfehlen, es auszuprobieren short-header=true im rtspsrc.
Kunde:
Ist das ein Header für UDP??
Unterstützung:
Es handelt sich um eine RTSP-Header-Option, die häufig die Kompatibilität verbessert.
Beispiele:
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. Interne Testergebnisse (Linux)
Unterstützung:
Unser Techniker hat den RTSP-Stream mit getestet Gstreamer 1.0 unter Linux, und es hat richtig funktioniert.


TCP-Beispiel:
gst-launch-1.0 rtspsrc location="rtsp://192.168.2.254/live" \
name=src \
latency=0 \
protocols=tcp \
src. \
! decodebin \
! autovideosink
UDP-Beispiel (entfernen protocols=tcp):
gst-launch-1.0 rtspsrc location="rtsp://192.168.2.254/live" \
name=src \
latency=0 \
src. \
! decodebin \
! autovideosink
Die interne Logik zwischen Linux und Android GStreamer ist dieselbe, Daher sollte das Verhalten auf allen Plattformen konsistent sein.
11. Abschluss
Dieser Fall verdeutlicht mehrere wichtige Punkte bei der Verwendung von RTSP mit GStreamer:
- RTSP-URL:
rtsp://<camera_ip>:554/live - UDP Unicast wird unterstützt; UDP-Multicast ist nicht
- Vermeiden Sie problematische Plugins (Nur Linux)
- Versuchen
short-header=truefür eine bessere Kompatibilität - Linux-Testergebnisse können grundsätzlich auf Android übertragen werden
Wenn Sie auf ähnliche Probleme stoßen, Bitte geben Sie Ihre an GStreamer-Pipeline oder Test-Client, und unser Engineering-Team wird Ihnen weiterhelfen.

Stelle eine Frage
Vielen Dank für deine Antwort. ✨